BUILD: single-file Three.js diorama. One ultra-detailed cherry blossom bonsai in
a tokonoma alcove. Macro scale, museum lighting, Japanese interface design done
with restraint. This is a quiet piece, not a spectacle. The bar is "a still
frame is indistinguishable from a product photograph, and the UI looks like it
was designed by someone who has actually read Kenya Hara."
=== HARD CONSTRAINTS ===
- One .html file. No build step, no bundler.
- three r170 via importmap (CDN ESM). Addons allowed from the same version.
- ZERO external assets. Every mesh, texture, LUT, font fallback and sound
generated in code. No CDN fonts, no data-URI blobs pasted in.
- No truncation, no TODOs, no "// rest of implementation here". Ship the file.
- UPPERCASE section header comments dividing the file.
- Desktop 60fps, working mobile path.
- Report at the end: tri count, draw calls, techniques.
=== SCALE ===
Tree ~45cm tall. Pot ~35cm wide. Camera 0.4m to 2m out. Near plane 0.02, far
plane 20. Single frustum: at this depth range there is no precision problem and
no reason for split cameras or log depth. Spend the entire budget on surface
detail, because at macro distance every surface is a hero surface.
=== THE TREE (this is 70% of the work) ===
Species: Prunus incisa 'Kojo-no-mai', the fuji cherry, which is what an actual
sakura bonsai is. Not somei yoshino, which does not reduce.
- Style: moyogi (informal upright) with real movement, or shakan (slanting).
Never a straight trunk. The trunk should change direction 3 or 4 times, each
turn tightening as it rises.
- NEBARI: surface root flare spreading radially into the soil. This is the
single strongest signal of an old bonsai and it is what everyone omits.
Roots emerge visibly, radiate outward, taper into the akadama.
- TAPER: aggressive. Trunk caliper at nebari to apex should drop by 10x or more.
A cylinder reads as a stick with flowers on it.
- RAMIFICATION: fine division at the tips, 2 or 3 branchlets per node, 5 or 6
orders deep. Age lives in the twigs, not the trunk.
- Kojo-no-mai grows in ZIGZAGS. Twigs change direction at each node. Build this
into the skeleton generator, it is free character.
- PAD STRUCTURE: flowers and twigs mass into discrete horizontal pads with real
negative space between them. You should see sky through the tree. A solid
pink blob is the failure state.
- Bark: fissured, with horizontal lenticels, moss in the crotches, healed
pruning scars, faint wire spiral marks on one or two older branches. At this
distance use real displacement or parallax occlusion, not a normal map alone.
- Blossoms: 2500 to 6000, not 80k. Each one is on screen at 2cm across, so build
a real flower: 5 notched petals, visible stamens, sepals, a bud state, a
spent-and-browning state on a few percent. Per-instance hue jitter white
through pale pink, per-instance open amount.
- Blooms before leaf-out. A handful of bronze new leaves at most.
=== POT, SOIL, STAGING ===
- Glazed stoneware pot, shallow oval or soft rectangle, pale celadon or cream
with crazing and pooling in the recesses. Feet, a proper lip profile, wire
tie-down holes, visible drainage mesh.
- Soil: instanced akadama granules, angular and red-brown, mixed pumice.
- Moss: shell layers or instanced strands, two colour populations, thicker at
the pot edge and the nebari crotches.
- Fallen petals on the soil, the pot rim, the stand and the floor.
- TOKONOMA: raised wooden floor, pale clay back wall, dark lacquered display
stand (shoku), a hanging scroll (kakejiku) with a single ink gesture, tatami
edge in frame. A low accent plant (kusamono) offset to one side.
- ASYMMETRY IS MANDATORY. Never centre the tree in the alcove or the frame.
=== LIGHT ===
- Key: daylight through a shoji screen off to one side. Large area source, soft
wrap, subtly cool. This one choice carries the entire Japanese read.
- Bounce: warm reflection off tatami and wood into the shadow side.
- Build the environment analytically (shoji panel + wall + floor as emissive
areas), bake to a small cube, and project to SH9 on the CPU for ambient. Same
the integral drives the key colour. No PMREM: no GPU readback, works headless.
- PETAL TRANSLUCENCY. Wrap plus back-transmission with a red shift, so blossoms
between the camera and the shoji glow and the ones facing you stay matte.
Position the default camera so a good number of blossoms are backlit.
- Soft shadows with contact hardening. At 45cm the penumbra from a window is
wide and soft, and twig shadows on the soil should be nearly diffuse while
the nebari contact shadow stays tight.
- Optional single warm practical (paper lantern) for the night preset.
=== ANIMATION ===
Restraint. This is air moving in a room, not weather.
- One global breath field, sum of sines plus curl noise, very low amplitude,
long period. Everything samples it.
- Vertex-shader sway weighted by distance from nebari and branch order. Tips
move a few millimetres. The trunk does not move at all.
- Occasional single petal releases an…
BUILD: single-file Three.js diorama. One ultra-detailed cherry blossom bonsai in
a tokonoma alcove. Macro scale, museum lighting, Japanese interface design done
with restraint. This is a quiet piece, not a spectacle. The bar is "a still
frame is indistinguishable from a product photograph, and the UI looks like it
was designed by someone who has actually read Kenya Hara."
=== HARD CONSTRAINTS ===
- One .html file. No build step, no bundler.
- three r170 via importmap (CDN ESM). Addons allowed from the same version.
- ZERO external assets. Every mesh, texture, LUT, font fallback and sound
generated in code. No CDN fonts, no data-URI blobs pasted in.
- No truncation, no TODOs, no "// rest of implementation here". Ship the file.
- UPPERCASE section header comments dividing the file.
- Desktop 60fps, working mobile path.
- Report at the end: tri count, draw calls, techniques.
=== SCALE ===
Tree ~45cm tall. Pot ~35cm wide. Camera 0.4m to 2m out. Near plane 0.02, far
plane 20. Single frustum: at this depth range there is no precision problem and
no reason for split cameras or log depth. Spend the entire budget on surface
detail, because at macro distance every surface is a hero surface.
=== THE TREE (this is 70% of the work) ===
Species: Prunus incisa 'Kojo-no-mai', the fuji cherry, which is what an actual
sakura bonsai is. Not somei yoshino, which does not reduce.
- Style: moyogi (informal upright) with real movement, or shakan (slanting).
Never a straight trunk. The trunk should change direction 3 or 4 times, each
turn tightening as it rises.
- NEBARI: surface root flare spreading radially into the soil. This is the
single strongest signal of an old bonsai and it is what everyone omits.
Roots emerge visibly, radiate outward, taper into the akadama.
- TAPER: aggressive. Trunk caliper at nebari to apex should drop by 10x or more.
A cylinder reads as a stick with flowers on it.
- RAMIFICATION: fine division at the tips, 2 or 3 branchlets per node, 5 or 6
orders deep. Age lives in the twigs, not the trunk.
- Kojo-no-mai grows in ZIGZAGS. Twigs change direction at each node. Build this
into the skeleton generator, it is free character.
- PAD STRUCTURE: flowers and twigs mass into discrete horizontal pads with real
negative space between them. You should see sky through the tree. A solid
pink blob is the failure state.
- Bark: fissured, with horizontal lenticels, moss in the crotches, healed
pruning scars, faint wire spiral marks on one or two older branches. At this
distance use real displacement or parallax occlusion, not a normal map alone.
- Blossoms: 2500 to 6000, not 80k. Each one is on screen at 2cm across, so build
a real flower: 5 notched petals, visible stamens, sepals, a bud state, a
spent-and-browning state on a few percent. Per-instance hue jitter white
through pale pink, per-instance open amount.
- Blooms before leaf-out. A handful of bronze new leaves at most.
=== POT, SOIL, STAGING ===
- Glazed stoneware pot, shallow oval or soft rectangle, pale celadon or cream
with crazing and pooling in the recesses. Feet, a proper lip profile, wire
tie-down holes, visible drainage mesh.
- Soil: instanced akadama granules, angular and red-brown, mixed pumice.
- Moss: shell layers or instanced strands, two colour populations, thicker at
the pot edge and the nebari crotches.
- Fallen petals on the soil, the pot rim, the stand and the floor.
- TOKONOMA: raised wooden floor, pale clay back wall, dark lacquered display
stand (shoku), a hanging scroll (kakejiku) with a single ink gesture, tatami
edge in frame. A low accent plant (kusamono) offset to one side.
- ASYMMETRY IS MANDATORY. Never centre the tree in the alcove or the frame.
=== LIGHT ===
- Key: daylight through a shoji screen off to one side. Large area source, soft
wrap, subtly cool. This one choice carries the entire Japanese read.
- Bounce: warm reflection off tatami and wood into the shadow side.
- Build the environment analytically (shoji panel + wall + floor as emissive
areas), bake to a small cube, and project to SH9 on the CPU for ambient. Same
integral drives the key colour. No PMREM: no GPU readback, works headless.
- PETAL TRANSLUCENCY. Wrap plus back-transmission with a red shift, so blossoms
between the camera and the shoji glow and the ones facing you stay matte.
Position the default camera so a good number of blossoms are backlit.
- Soft shadows with contact hardening. At 45cm the penumbra from a window is
wide and soft, and twig shadows on the soil should be nearly diffuse while
the nebari contact shadow stays tight.
- Optional single warm practical (paper lantern) for the night preset.
=== ANIMATION ===
Restraint. This is air moving in a room, not weather.
- One global breath field, sum of sines plus curl noise, very low amplitude,
long period. Everything samples it.
- Vertex-shader sway weighted by distance from nebari and branch order. Tips
move a few millimetres. The trunk does not move at all.
- Occasional single petal releases and fa…