Repository navigation
3D Walkthrough
Press ⌘2 (or 3D Walk) to step inside the plan. It is a first-person
walkthrough with real physics and real daylight.
| Action | Control |
|---|---|
| Walk / strafe |
W A S D, or the arrow keys |
| Look around | click once to capture the mouse, click again to release |
| Jump / double-jump |
Space, Space again in mid-air |
| Crouch / stand | C |
| Toggle daylight | L |
| Open / close a door | right-click it |
| Paintball | P |
Movement runs on Rapier. You are a capsule 1.5 m tall (0.9 m crouched). You can climb onto beds, sofas and tables — double-jump for the taller pieces. Closed doors, ceilings and door headers are solid, so you cannot slip through the roof or vault a doorway.
Two lighting modes, toggled with L:
- Daylight (default) — sun, sky and image-based reflections. Placed lights are ignored, as they would be in a bright room.
- Placed lights only — the sun is off and your bulbs and panels do the work. This is the mode to check whether a room is actually lit.
Overhead, three cloud decks drift at different speeds and directions. Nothing morphs on its own — the shapes change because the layers slide across each other, which costs nothing and reads as weather. Look up to see them.
The sun is a real solar position for Singapore, driven by the Time of day control in the inspector (0–24 h, default 15:00). It does not move on its own — you set the hour, and the sky, shadow direction and colour follow it through day, twilight and night.
Worked example — does this bedroom need a second lamp? Set the time to
23, pressLfor placed-lights-only, and walk the room. Anything you cannot see is genuinely unlit.
A room is a sealed solid: walls bite into the floor, the ceiling and each other, so light escapes only through doors and windows. If you ever see light outlining a wall edge, that is a bug — see Troubleshooting.
The inspector has Outside floor ▲ / ▼. It lifts the whole room (and its
physics) by 3 m per floor, so you can preview the same design on the ground
floor or the fifth. 1 is the ground floor; the default is 2.
Your room stands in a city. Look out of a window and you get streets, pavements, kerbs, zebra crossings, street trees, moving traffic and blocks of flats fading into the haze — enough context to judge whether a room actually feels the size you think it does.
It is deliberately stylised, not photoreal: flat colours, simple shapes, no texture work. The goal is a believable sense of scale and place, not a render.
- Your building is real. Above the ground floor the city puts a tower of the right height under your room, so it never floats. The plot itself is never paved over.
- It comes on at night. Windows across the street light up, street lamps glow and cars run with headlights, all following the same Time of day setting as the sun.
- It is the same city every time. The layout is seeded from the room's id, so reopening a design gives you the neighbourhood you remember — and a different design gets a different one.
- It is scenery only. No colliders, no lights of its own, and it never casts into the room's shadow maps, so it costs almost nothing and cannot change how your room is lit.
The 3D view always builds the real wall envelope, never the larger 2D drawing canvas, so the grey editing area never turns into concrete outside a window.
The renderer is Three.js WebGPU with SSAO and bloom. If the FPS counter (top-left) is low, reduce the number of ceiling lights: each one that casts shadows costs a full cube shadow map, so RoomCAD lights at most 16 at a time.
A room with more than sixteen ceiling lights is not broken, and no particular lamp is the one that is always dark — the sixteen nearest you are the ones lit, and they change as you walk. The rest are still drawn and still glow, but they light nothing. When a plan is over the limit the inspector says so, in the room panel under Ceiling lights, so a lamp that seems to do nothing is explained rather than mysterious.
P picks up a paintball marker. Click to fire; splats stick to whatever they
hit. P again puts it away and clears the mess.