Display Case
A 98 cm glass-topped shop counter (1.2 m wide by default, 0.9 to 1.8 m): a chamfered base cabinet with inset panels and a recessed plinth, a glass case with corner posts, framed top and front glass, a velvet or tray deck and a stepped back riser, a strip lamp under the front rail that lights the goods at night, and sliding glass doors on the staff side (-Z, rigged sliding_door). Seeded goods: jewellery (ring pads, necklace busts, watch cushions), bakery cakes and pastries, phones and gadgets on stands, or perfume bottles.
- Size
- 1.2 × 0.98 × 0.59 m
- Triangles
- 1,534
Tune it
4 knobs: Finish, Width, Contents, Seed.
Specs
- Size
- 1.2 × 0.98 × 0.59 m width × height × depth
- Triangles
- 1,534 of 6,000
- Draw calls
- 1 one vertex-colour material
- Moving parts
- 1 sliding_door · slide
- Knobs
- 4 3 presets
- Night lights
- 2 lamp, led
Passed the validator: real scale, rests on y = 0, front faces +Z, deterministic.
Use it
Code for the specimen as it is set up above; it follows your knobs.
import { createAsset } from 'https://gaitkit.com/cdn/display-case.mjs';
const displayCase = createAsset();
scene.add(displayCase); // rests on y = 0, front faces +Zimport { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/display-case.mjs';
export function DisplayCase() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import display-case.glb (download below). Moving parts are separate nodes, pivoted on their hinge.
add_child(preload("res://display-case.glb").instantiate())// Import display-case.glb with glTFast (com.unity.cloud.gltfast).
// Drop it in the scene: 1 unit = 1 metre, +Z is its front.Use the gaitkit MCP server: get_variant({ "id": "display-case", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
finish | choice | modern boutique retro neon | boutique | modern (pale grey cabinet with brushed aluminium frame), boutique (walnut with brass frame), retro (dark mahogany, brass and a green felt band), neon (graphite with a glowing cyan strip round the base). |
width | range | 0.9 to 1.8, step 0.1 | 1.2 | Counter length in metres (0.9 to 1.8). Depth 55 cm and height 98 cm stay fixed so cases line up into a run. |
contents | choice | jewelry bakery gadgets perfume empty | jewelry | What is on display: jewelry (rings on pads, necklaces on busts, watches on cushions over navy velvet), bakery (cakes, tarts, croissants and donuts), gadgets (phones, watches and earbud cases on stands), perfume (lathed bottles with caps) or empty. |
seed | range | 1 to 40, step 1 | 5 | Shuffles which goods sit where and their colours. |
Presets: jeweller {"finish":"boutique","contents":"jewelry","width":1.2} · patisserie {"finish":"modern","contents":"bakery","width":1.6,"seed":9} · phone kiosk {"finish":"neon","contents":"gadgets","width":1,"seed":3}
Files
| File | What |
|---|---|
| display-case.glb Pro | GLB, default look · 232 KB |
| display-case.mjs Pro | ES module, every knob live |
| display-case.obj Pro | OBJ, static; colours in the .mtl |
| display-case.mtl | OBJ colours; keep it next to the .obj |
| display-case-params.json | knob schema, presets, night zones |
Licence
Use it in games, apps, renders and client work, commercially and without credit. Do not resell it as an asset or train a 3D generator on it. The full licence.