flying-uis
flying-uis
═══════════════════════════════════════════════════════════════════════════
- Topic
- scenes
- Scenes
- 2
- Kind
- reference rig
// ═══════════════════════════════════════════════════════════════════════════
// ROOMS — floating dashboard UIs in a bright white studio room.
//
// Demonstrates the plane deform attrs on `geometry(type=plane)`:
// bend=<deg> cylindrical arc across the width (+ = concave toward
// camera, − = convex); arc length preserved
// bend_axis=x curl top/bottom instead of left/right
// wave=<mm> sine ripple amplitude, wave_freq cycles, wave_phase deg
// width_segments / subdivision overrides (either deform auto-subdivides)
// height_segments
//
// Tower wrap formula: a panel of width w sits flush on a cylinder of radius R
// with bend = -(w/R)·(180/π), placed at (R·sinφ, y, R·cosφ), rotation="0 φ 0".
//
// LOOK — white room: plate #ffffff→#e9edf4; haze = big white/silver pigment
// lobes (NO blend=add) + two #1d1d1f corner vignettes at 0.08–0.12 + one faint
// indigo life lobe; ink #12151c, muted #7b8496, hairline #e5e9f2, accent
// #4f46e5. Panels are primitive+map_from(ui) glass — white cards, soft canvas
// shadows, washed satellites via material opacity.
//
// SCENES 01 gallery 9s hero bend=24 wave=3, 9 curved satellites → match-move
// 02 tower 9s 4 ribbons wrapped on R=260 + hero bend=16 → match-move
// 03 scatter 9s tilted flat/wavy satellites + hero → end
// Heroes carry match=hero; haze lobes carry match=hz0..hz7.
// ═══════════════════════════════════════════════════════════════════════════
promo#rooms
// ═════════════════════════════════════════════════════════════════════════
// SCENE 01 · GALLERY — curved hero dashboard, satellites on a curved wall
// ═════════════════════════════════════════════════════════════════════════
scene#s01-gallery(duration=9 transition=match-move transition-duration=1.0)
important
kf(time=0 elements="full:g1-hero")
kf(time=9 elements="full:g1-hero")
camera(type=perspective fov=40 near=8.5 far=17000 position="0 10 850" look_at="0 0 0")
position
0 0 10 850
9 easeInOutSine 0 22 766
look_at
0 0 0 0
9 easeInOutSine 0 6 0
lights
light(type=ambient color=#ffffff intensity=2.0)
light(type=directional color=#ffffff intensity=2.4 position="-340 510 680")
light(type=directional color=#ffffff intensity=1.1 position="510 -170 510")
background(top=#ffffff bottom=#e9edf4)
haze#g1-hz0(match=hz0 opacity=0.8 color=#ffffff size="2100 1550" pulse=0 decay=0 position="-380 240 -1150")
position
0 0 0 0
4.5 easeInOutSine 120 -70 0
9 easeInOutSine 0 0 0
haze#g1-hz1(match=hz1 opacity=0.85 color=#ffffff size="1950 1450" pulse=0 decay=0 position="330 -180 -1148")
position
0 0 0 0
4.5 easeInOutSine -110 80 0
9 easeInOutSine 0 0 0
haze#g1-hz2(match=hz2 opacity=0.6 color=#d7dce6 size="1650 1250" pulse=0 decay=0 position="60 70 -1146")
scale
0 1 1 1
4.5 easeInOutSine 1.14 1.14 1
9 easeInOutSine 1 1 1
haze#g1-hz3(match=hz3 opacity=0.55 color=#dde2ec size="1500 1100" pulse=0 decay=0 position="-520 -320 -1144")
position
0 0 0 0
4.5 easeInOutSine 90 40 0
9 easeInOutSine 0 0 0
haze#g1-hz4(match=hz4 opacity=0.25 color=#aab3dd size="900 700" pulse=0 decay=0 position="430 310 -1142")
position
0 0 0 0
4.5 easeInOutSine -70 -50 0
9 easeInOutSine 0 0 0
haze#g1-hz5(match=hz5 opacity=0.7 color=#ffffff size="1900 850" pulse=0 decay=0 position="0 -470 -1147")
position
0 0 0 0
4.5 easeInOutSine 60 30 0
9 easeInOutSine 0 0 0
haze#g1-hz6(match=hz6 opacity=0.1 color=#1d1d1f size="1500 1100" pulse=0 decay=0 position="540 430 -1141")
position
0 0 0 0
4.5 easeInOutSine -30 -20 0
9 easeInOutSine 0 0 0
haze#g1-hz7(match=hz7 opacity=0.09 color=#1d1d1f size="1400 1000" pulse=0 decay=0 position="-540 -430 -1140")
position