A tape measure in a real room
Point at any surface, pull the trigger, and read the distance on a steel tape.
- Real-room scan
- Controllers
- PBR materials
Open the appContinue from it in GraspableRuns in a browser, on a Quest or a Vision Pro.
The request, word for word
This is the text that was sent to the agent to start the project. Nothing was edited for this page.
Build a measuring app inside a captured real room. The room is public/room.glb: a textured 3D scan of a real seating area (about 500,000 triangles, one 8K photo texture, real scale in metres, y up, floor at y = 0, the origin is on the rug). The texture already holds the room's real light, so show the room unlit, exactly as captured, and start me standing on the rug at the origin, facing the dresser (-z). It must work in VR in the emulated headset (an Enter VR button) and on the desktop with the mouse, where I look around by dragging. Measuring: I point with the right controller (on the desktop, with the mouse). A reticle lies flat on whatever surface of the room I point at - floor, walls, furniture - turned to that surface. The trigger (or a click) places a point. Consecutive points form segments; every segment has a floating label with its length in centimetres, and one more label shows the total. The B button (Backspace on the desktop) undoes the last point. The tool must look physically real, not like debug lines. Every segment is a steel measuring tape: a thin, slightly curved yellow blade with printed black tick marks every centimetre and numbers every 10 cm, metal end hooks at both ends, and a small brushed-steel pin at every placed point. In my right hand, instead of the default controller ray, show a steel tape case, and the live tape pulls out of it towards the reticle. Use PBR materials (metalness and roughness, textures drawn in code), reflections taken from the room itself, lights that match the room's ceiling lamps, and soft contact shadows under the tape and the pins on the room's surfaces. Labels are crisp plates (dark plate, light text, drawn to a canvas texture, no fonts from the network) that face me and stay readable from 3 metres. Nothing may be downloaded while the app runs. Keep 72 fps or more in the headset: pointing must not get slow on a mesh this size.
How it went
- Runs
- 3 runs: the request above, then 2 follow-up requests. A run ends only when the project builds and loads in a real browser without errors.
- Started from
- The React XR template: An empty WebXR scene with React Three Fiber: the starting point for anything.
- Notes and credits
- Room capture from the Eyeful Tower dataset. Copyright (c) Meta Platforms, Inc. and affiliates. MIT License. Two follow-up requests made the labels larger and the tape clearer. AI: Codex CLI.
Build your own
Graspable is a desktop app. Describe the scene you want, and the agent builds it as a real project on your computer and checks that it runs. It is free with your own AI account.
More examples
Scanned Room templateFurnish a scanned room
Pick a piece from the palette, point at the floor of a real scanned room to place it, and see its distance to the wall and to its neighbours.
- Real-room scan
- Controllers
- PBR materials
- Spatial labels
Read the request that made it (3 runs)
React XR templateA solar system you can pick up
Planets circle the Sun on brass rings in a planetarium; grab one and its lesson card opens beside it.
- Controllers
- PBR materials
- Spatial labels
Read the request that made it (2 runs)