Unpacking the room
This is taking longer than it should. The connection may be slow.
Walk in, sit anywhere, stay as long as you like.
A small room with the lamps already on. Walk around, sit where you like, try one of six short practices, or do nothing at all. Frida, the black cat, runs the place. Ronin, the dog, will find you.
This room is a demo, not therapy, and it doesn't replace care from a licensed professional.
W A S D or the arrow keys to walk, the mouse to look. Click anything in the room to find out why it is there, or look at it and press E. Space hops, C crawls. Tab lists everything. Esc lets go of the mouse.
You are out past the cabin. This takes you straight back inside.
Back to the roomI built this room twice from the same plan. The plan came first, from research: where the client's sofa goes (back to a wall, the door in plain view), how far the host's chair sits from it (about 1.3 metres, inside the 1.2 to 1.5 metres people tend to choose in counselling rooms), what the light should be (low, warm, no overhead fixture), and what the window should look onto (moving water and trees).
Then an AI agent composed the room in Unreal Engine 5.8, working the editor through its Model Context Protocol server: importing each model, placing it, setting the lamps, and rendering the stills below. The browser room you just walked reads its furniture from a layout file in the same shape the Unreal scene exports, so the two can be kept in step.
Everything here is three.js on WebGL2. The furniture is free scanned and modelled work, all CC0 except the sofa (CC BY, credited below), packed for the web with WebP textures and meshopt geometry; the whole room, with its textures, weighs about 4 MB. Once you are in, a second layer arrives: finer surface textures (about 3 MB on a phone, 12 MB on a computer), light bounced off the room's own walls, soft contact shadows under the furniture and, on a computer, a varnished floor that reflects the window. Pieces that had no fitting free model, the round oak table, the low shelf, the rug, the window seat, the orb lamp, the journal, the feelings wheel, the creek and the birches, are built in code when the page loads. One lamp casts a real shadow, baked once; the glow on the others is a painted trick, and the patch of daylight on the floor is a small shader with leaves moving in it. The sound is generated in the browser and stays off until you turn it on.
Look with your head, the button with the small head on it, turns the screen into a window. Your front camera finds your eyes about thirty times a second, and the room is redrawn from where they are, with the edges of the screen held still, so leaning shows you round the corners. The camera is never asked for until you switch it on, the frames stay in the page, and a small red light on screen says when it is running.
Frida is my cat and Ronin was my dog, both modelled for Ulric. Frida only moves when you aren't looking. Elsie, who keeps the room, never appears; she speaks from her chair.
Every station can be stopped at any moment, and none of them promises an outcome.
A dramatized session of about six minutes, written as a branching script: Elsie, who keeps the room, talks with Emiliano (“Emi”), a fictional ten-year-old on the sofa, and at four moments you choose what he says. The parts he meets show up as small coloured lights beside him. It is inspired by the Internal Family Systems (IFS) model developed by Richard C. Schwartz, PhD, and is not affiliated with or endorsed by the IFS Institute. It is an illustration, not therapy.
The browser here will not hand over a WebGL2 context, so the room cannot be drawn. A current browser with hardware acceleration switched on will run it.
The room is a demo, not therapy.
Back to the demos