Skip to content
Docs
Open Promoeyes
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