Rotating rooms
Two open-sided rooms on a black-and-white checker plinth: the lower room swivels on a central column, and the upper room tumbles end over end on a gold axle, so its open door hangs in the sky. Low-poly, flat-shaded, in the Dream Maze kit palette, with a seamless 12-second loop.

Left rail: colours and the 3 knobs the agent wrote into this model — they rebuild the geometry and go into your download. Right rail: looks for the viewer. Drag to orbit, scroll to zoom.
- Triangles
- 2,224
- Vertices
- 20,340
- Meshes · materials
- 23 · 23
- Size (W × H × D)
- 4.8 m × 7.4 m × 4.8 m
- File
- GLB · 249 KB
- Animation
- scene-motion · 12.0s
- Style
- Low-poly
- Collection
- Dream Maze
Palette · named materials
- wall#b89fd1
- wallUpper#e0c994
- floor#e0c994
- structure#916bb8
- stair#f1e7d0
- stairUpper#ded4e8
- tileLight#f4f1ec
- tileDark#1b1b22
- hardware#d0a225
- door#3d2a1c
- frame#f2ede2
Use it
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
const gltf = await new GLTFLoader().loadAsync(
"https://assets.stoicsoft.com/1designtool/3d/models/dream-maze-rotating-rooms/c514f7e9d0/model.glb"
);
scene.add(gltf.scene); // metres, +Y up, front faces +Z
const mixer = new THREE.AnimationMixer(gltf.scene);
gltf.animations.forEach((clip) => mixer.clipAction(clip).play());
// in your loop: mixer.update(delta)How it was made
The brief given to 1DesignTool's “3D object” template:
Rotating rooms for the Dream Maze kit. Design it as one clear asset at believable real-world scale for that setting (state the size in metres in meta.notes), with its main parts modelled and named, readable at thumbnail size and from every orbit angle. It moves: author a seamless baked loop (2–12 s) with every pivot exactly at its hinge, axle or swivel, and keep the base still. This is one part of the Dream Maze kit (Low-poly style, flat-lowpoly direction): Stairs that go nowhere and doors in the sky. Use ONLY the kit palette, by name: lilac #b89fd1, cream #f1e7d0, checker black and white #f4f1ec, gold #d0a225, lilac dark #916bb8, cream dark #e0c994, lilac light #ded4e8, cream light #fbf9f4, soot black #1b1b22, warm white #f2ede2, mid grey #7d828c, dark wood #3d2a1c. Every material's `name` must be exactly the palette colour it uses — the GLB carries these names so the kit recolours as one; an unnamed material fails delivery. Kit knob: expose a param `gravityDirection` (0–1, default 0.5) for the kit's "Gravity direction" setting wherever it makes sense on this part, and keep that id.
- Agent: Claude Code · Claude Opus 5.5 in 1DesignTool
- Generation: 5.26M tokens (95% cached) · ≈ $3.72 at API prices · 5-hour plan +4%, weekly plan +1%
- Direction: Low-poly · family abstract-kinetic
- three-check PASS · glb-lint PASS
Named parts · 14
- Rotating rooms
- Checker plinth
- Column
- Axle yoke
- Lower room (swivel pivot)
- Turntable and collars
- Lower room shell
- Lower door
- Stair to nowhere
- Upper room (tumble pivot)
- Axle
- Upper room shell
- Sky door
- Upper stair
Note: Real-world scale in metres: the plinth is 4.76 m square, the lower room is 3.0 m with 2.7 m ceilings, and the upper room is a 2.4 m cube. The model stands about 7.0 m tall at rest; the top corner reaches 7.36 m mid-tumble. Two pivots move: the lower room turns about the column axis (Y, at x = 0, z = 0), and the upper room turns about its axle centre line (X, at y = 5.81 m). The plinth, column and yoke never move. The 12 s clip 'scene-motion' runs in four 3 s beats. In each beat the lower room makes an eased quarter turn and then the upper room does the same, so the loop closes exactly at 360°. The clip has tracks for those two pivot nodes only. gravityDirection sets the upper room's resting tilt: 0 is floor down, 0.5 is on its side (the default, with the door in the sky) and 1 is upside down. The tilt is baked into the exported pose and clip, so change it before exporting. Nodes with hyphen-free names (dreammazerotatingrooms.*) are empty identity wrappers left by the authoring checker; they can be ignored or collapsed. The GLB holds 10 distinct palette-named materials, but the exporter writes a copy for each mesh (23 in total). Every copy keeps its palette name, so recolouring by name still works. glb-lint reports no errors; its warnings cover that material duplication, the 7 m height against its 1 m reference, and parts that look detached only because of the wrapper nodes. roomSize and stairSteps were checked at their extremes by working through the dimensions, but those settings were not rendered.
More like this
All of Dream Maze →
Melting clocks
Dream Maze4,878 tris

Opening doors
Dream Maze1,632 tris

Floating platforms
Dream Maze948 tris

Birdcages
Dream Maze2,332 tris

Giant teacups
Dream Maze1,956 tris

Floating chairs
Dream Maze1,216 tris

Chess pieces
Dream Maze4,172 tris

Mirrors
Dream Maze1,648 tris
Free under the 1DesignTool 3D library license. Model #11 of 379.