Appearance
Arcade › Stretch Lab
Click the game above and it runs right here in your browser. No download, no installer, no account needed. William Woodard built it with Cinevva, so it works on a phone or a tablet too.
Nobody has said anything about Stretch Lab yet. Play it, then tell William Woodard what you would add next.
Stretch Lab was built by William Woodard with the Cinevva game creator: describe the game you want in chat, watch it get built, and play it in your browser minutes later.
Remix Stretch Lab opens the real game in the creator and forks its actual files, chat and design doc, so you start from the code rather than from a description.
Cinevva's analyzer read this game's design doc and its source, then wrote the brief below. "Make your own" hands it to the game creator as your opening message, so you start from a real spec rather than a one-line idea.
Rebuild a single-screen interactive Three.js/WebGL material demonstration titled “Stretch Lab.” It is a non-sexual clothing-material experiment: show a neutral, faceless mannequin made from simple primitives standing on a dark circular studio floor, with two dark blue-gray, subtly striped knit-fabric leggings sleeves covering the mannequin’s two legs. The camera is a perspective orbit camera initially positioned around (1.8, 1.35, 2.4), aimed at the mannequin’s lower torso/legs around y=1.05; allow orbiting around the model with damping, a minimum camera distance of about 0.8, maximum of 6, and prevent orbiting below the model (maximum polar angle about 0.49π). The view should feel like a dim blue-black studio: near-black background, a dark navy ground disk, soft hemisphere illumination, a bright upper-right directional key light with shadows, and a weaker cool fill light. Model the mannequin from low-detail rounded primitives: a gray-blue capsule torso centered around y=1.35, a smaller capsule pelvis around y=.98, two narrow capsule legs centered at x=-.12 and +.12 around y=.55, and a simple sphere head around y=1.82. The clothing consists of two open-ended cylindrical sleeve meshes, one over each leg, centered at x=-.12 and +.12, starting near y=.10 and extending approximately .95 units upward. Make each sleeve a moderately tessellated cylinder (about 26 radial and 40 vertical segments), with a radius near .125 and a slightly narrower bottom. Use a dark desaturated blue-gray material with a generated knit-like canvas texture: horizontal repeating light stripes/bands plus subtle random noise dots. Repeat the texture approximately 1.5 times around and 5 times vertically. Slightly rotate the left and right sleeves in opposite directions so their seams are not perfectly aligned. Enable soft cast shadows on the mannequin and fabric. The main interaction is grabbing and stretching the fabric. Use raycasting against only the two sleeve meshes. On desktop, ordinary left-drag is reserved for orbiting the camera; holding Shift while pressing/dragging switches to fabric-pull mode and temporarily disables OrbitControls. On touch/mobile, a one-finger drag that begins over a sleeve pulls that sleeve, while a one-finger drag begun on empty space orbits the camera; pinch/standard camera zoom should work through the orbit controls. Desktop mouse wheel zooms. When a pull begins, store the raycast hit point in world space as the grab point. As the pointer moves, convert screen-pixel movement into a camera-right/camera-up world-space delta near the current camera distance, accumulate it as the pull vector, and clamp the accumulated pull to roughly 0.30 world units. Apply the pull to nearby sleeve vertices using a smooth squared distance falloff within roughly .18 units of the grab point. Deform vertices on the CPU, preserving each sleeve’s original vertex positions and per-vertex velocity. Use a spring relaxation toward the original positions (approximately spring strength 48 and damping 8.5), integrate velocity each frame, recompute vertex normals, and limit any vertex’s displacement from its base position to about .35 units. Gradually decay the active pull vector while dragging. On release, stop applying the pull so the fabric visibly springs back and settles with damping. Either sleeve can be independently grabbed, but only one active grab is needed at once. Include a large rounded dark translucent instruction panel in the upper-left, matching the visible styling: heading “Stretch Lab” in large light text, followed by “Drag: orbit camera,” “Shift + Drag: grab & pull fabric,” “Wheel: zoom,” and “R: reset,” with the action labels bold. Add the note “Click to enable audio. Hold Shift to pull fabric.” beneath the controls. Include a small status line which initially says “Touch: drag fabric to pull. Drag empty space to orbit.” and updates to messages such as “Pulling fabric… (release to relax),” “Ready.” or “Reset.” as appropriate. Support R to reset both sleeves completely to their stored original vertex positions and zero their velocities. Enable audio only after the first click, key press, or touch (browser audio policy): use a quiet triangle-wave synth if available, playing a brief higher note when grabbing, a lower note on release, and a short reset note. Keep the overall presentation minimal, dark, technical, and calm; there are no enemies, scoring, lives, timer, win condition, or additional gameplay objects. The goal is simply to explore the elastic leggings material by pulling it and watching it relax.