realism2
realism2
Realism 2 — twenty more realism studies on the realism.promo kit (the scene list lives in scene-ideas.md; every idea from that file, in order). Same levers as realism.promo scene 1: renderer(shadow_map) + authored shadow cameras, mirror reflector-ground, HDR environments with steered rotation, rim/kicker lights, frame(smooth) shot programs with DOF riding the framed subject, onyx haze on every scene, restrained bloom + grain.
Read the rig's notes
THE RULE THIS FILE DEMONSTRATES: NO ABSOLUTE POSITIONING. - Every world element lives in a flow container — ground contact is anchor=bottom align=end at y=0, and copy sits in gapped columns. Only the rig (camera, lights, haze lobes, the floor plate, container origins) carries a position. - And no scene is ONE container: each composes 2–4 kinds, nested, so the shot has a structure instead of a queue. A container's own `position` is CANCELLED when it is nested (the parent's slot subtracts it), which is exactly why a mixed rig still stands on the mirror with no math. - Every device screen is FLEX (layout=row/column + gap/padding/flex) — no x/y on any ui item. Layout per scene — the composition, not the queue: s01 turntable spinning row [column · imac · isle · phone] + floor wheel of marks s02 scale story row of 4 columns (measurement card over each device) + word-cloud s03 night shift column [grid of glowing panels · row of devices (one a column)] s04 sun pass word-cloud + row [column · imac · sphere · isle] s05 fog reveal isle [row · laptop · column] — depth is the story s06 glass totem column [row of 2 plates · panel · panel] s07 panel wall grid 3×3 backdrop + row hero s08 macro pass row [sphere · stack of frosted swatches · column · imac] s09 handoff relay word-cloud + row of 4 columns (status card over each leg) s10 mirror-first row of 3 isles (a field, not a line), middle isle holds a column s11 lonely hero floor wheel of marks ringing a single-child column s12 app wheel wheel of panels, one seat a column of two plates s13 archipelago isle [row · glass · laptop · panel · imac] s14 shadow theater row [sphere · stack of slabs · phone · column] s15 two families isle of two rows (devices front, dashboards behind) s16 wake-up call STACK — z packing + shift-x cascade = a receding diagonal s17>s18 grade A/B row [grid of grade chips · column · sphere · phone] ×2 s19 sphere gravity wheel arc (sweep 180) over the orb + row + column s20 through row [column · imac (the door) · isle] s21 breathing room row gap=0 [phone · sliver · column · sliver · isle · sliver · imac] ENGINE NOTES this file paid for (all verified by capture): - A flow CONTAINER's animation channels need an explicit `properties` wrapper, and rotation keyframes there are DEGREES (converted at parse, like the attr). On a bare primitive/sphere the same channel is RADIANS. - Camera `position` / `look_at` channels are ABSOLUTE world poses, not relative offsets — and a camera whose position animates keeps its original orientation unless a `look_at` channel re-aims it every frame (that is what makes s11's orbit orbit). - On an ISLE/STACK, `align=end` grounds Y *and* right-aligns X: one align value serves every cross axis. Depth layers of unequal width therefore skew sideways — either equalise the layers or, as s16 does, use a `stack` whose shift-x cascade makes the stagger deliberate. - A `wheel` centres every item's BOX on the ring, so mixed-height devices would float at different heights — rings carry uniform panels/chips here. `look-at=outward` also mis-solves the auto radius (it measures unrotated spans): author `radius=` explicitly. - `perpendicular="0 1 0"` + `follow=1` lays wheel items FLAT on the mirror, facing up and radiating — the floor-marking idiom (s01, s11). - Reflector floors need `envmap-intensity≈0.1` or the HDR washes them out. - THE ONE THAT MATTERS FOR REFLECTIONS: `unlit=true`. Without it the reflection is modulated into the floor's ALBEDO, so scene lighting and haze multiply over the mirror image and bury it — a lit floor reads as a grey wash with no reflection at all. With `unlit=true` the reflection is added as EMISSIVE instead, and the lit albedo drops to `(1 - mirror)` (mesh-reflector-material.ts). So `mirror=1 unlit=true` is a true mirror with NO lit surface left — and therefore no visible cast shadow on the floor. Any scene that needs both (s14) keeps mirror under 1 so some diffuse survives for the shadow to darken. Sharpness is `blur` + `mixBlur`: 25/0.55 reads as polished stone, 60/1.0 loses the image. Preview: /packages/runtime/index.html?project=promos/primitives/realism/realism2.promo
- Topic
- scenes
- Scenes
- 21
- Kind
- reference rig
//
Realism 2 — twenty more realism studies on the realism.promo kit (the
scene list lives in scene-ideas.md; every idea from that file, in order).
Same levers as realism.promo scene 1: renderer(shadow_map) + authored
shadow cameras, mirror reflector-ground, HDR environments with steered
rotation, rim/kicker lights, frame(smooth) shot programs with DOF riding
the framed subject, onyx haze on every scene, restrained bloom + grain.
THE RULE THIS FILE DEMONSTRATES: NO ABSOLUTE POSITIONING.
- Every world element lives in a flow container — ground contact is
anchor=bottom align=end at y=0, and copy sits in gapped columns. Only
the rig (camera, lights, haze lobes, the floor plate, container
origins) carries a position.
- And no scene is ONE container: each composes 2–4 kinds, nested, so the
shot has a structure instead of a queue. A container's own `position`
is CANCELLED when it is nested (the parent's slot subtracts it), which
is exactly why a mixed rig still stands on the mirror with no math.
- Every device screen is FLEX (layout=row/column + gap/padding/flex) —
no x/y on any ui item.
Layout per scene — the composition, not the queue:
s01 turntable spinning row [column · imac · isle · phone] + floor wheel of marks
s02 scale story row of 4 columns (measurement card over each device) + word-cloud
s03 night shift column [grid of glowing panels · row of devices (one a column)]
s04 sun pass word-cloud + row [column · imac · sphere · isle]
s05 fog reveal isle [row · laptop · column] — depth is the story
s06 glass totem column [row of 2 plates · panel · panel]
s07 panel wall grid 3×3 backdrop + row hero
s08 macro pass row [sphere · stack of frosted swatches · column · imac]
s09 handoff relay word-cloud + row of 4 columns (status card over each leg)
s10 mirror-first row of 3 isles (a field, not a line), middle isle holds a column
s11 lonely hero floor wheel of marks ringing a single-child column
s12 app wheel wheel of panels, one seat a column of two plates
s13 archipelago isle [row · glass · laptop · panel · imac]
s14 shadow theater row [sphere · stack of slabs · phone · column]
s15 two families isle of two rows (devices front, dashboards behind)
s16 wake-up call STACK — z packing + shift-x cascade = a receding diagonal
s17>s18 grade A/B row [grid of grade chips · column · sphere · phone] ×2
s19 sphere gravity wheel arc (sweep 180) over the orb + row + column
s20 through row [column · imac (the door) · isle]
s21 breathing room row gap=0 [phone · sliver · column · sliver · isle · sliver · imac]
ENGINE NOTES this file paid for (all verified by capture):
- A flow CONTAINER's animation channels need an explicit `properties`
wrapper, and rotation keyframes there are DEGREES (converted at parse,
like the attr). On a bare primitive/sphere the same channel is RADIANS.
- Camera `position` / `look_at` channels are ABSOLUTE world poses, not
relative offsets — and a camera whose position animates keeps its
original orientation unless a `look_at` channel re-aims it every frame
(that is what makes s11's orbit orbit).
- On an ISLE/STACK, `align=end` grounds Y *and* right-aligns X: one align
value serves every cross axis. Depth layers of unequal width therefore
skew sideways — either equalise the layers or, as s16 does, use a
`stack` whose shift-x cascade makes the stagger deliberate.
- A `wheel` centres every item's BOX on the ring, so mixed-height devices
would float at different heights — rings carry uniform panels/chips
here. `look-at=outward` also mis-solves the auto radius (it measures
unrotated spans): author `radius=` explicitly.
- `perpendicular="0 1 0"` + `follow=1` lays wheel items FLAT on the
mirror, f