Skip to content
Docs
Open Promoeyes
coral

coral

morph="coral" — bioluminescent coral overgrows the element and recedes off its partner (match-morph-coral.ts). ONE scene, in-scene `morph-to` links, no cuts.

Read the rig's notes
A reef crust spreads over the outgoing element from its silhouette's edges
inward — dark cellular coral, polyp cups glowing cyan / magenta, a hot growth
front spilling light onto the picture ahead of it — while ≈90 seeded coral
trees sprout on the contour (and inside, as the crust reaches them), fork a
few levels with glowing tips, and pop fuzzy polyp blooms. Fully covered at
the middle of the window, the picture underneath swaps to the incoming
element; then the coral withdraws back to the edges and vanishes, leaving
the incoming element clean. G = 0 at both ends: exact hand-offs.

  left   attribute form, defaults (morph=coral)
         1.40 → 3.20   stat card → iphone
         5.20 → 7.00   iphone → stat card
  right  nested form, tuned: count=140 · size=1.3 · spread=1.3 · color=#7dfff0
         1.80 → 3.60   music card → ipad
         5.60 → 7.40   ipad → "reef"

Beats per window (linear clock): grow 0–0.46 · covered 0.46–0.54 (swap at
0.5) · recede 0.54–1.

Camera never stops: linear orbit (r 980, look_at 0 0 0) swings across each merged
hand-off window via ~0°, 8% closer — 1.4→3.6 +21°→−19° (narrowed: the iphone
proxy skewed at the 3.2 swap), 5.2→7.4 −38°→+24°.

Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/coral.promo
Topic
morphs
Scenes
1
Kind
reference rig
//
    morph="coral" — bioluminescent coral overgrows the element and recedes off its
    partner (match-morph-coral.ts). ONE scene, in-scene `morph-to` links, no cuts.

    A reef crust spreads over the outgoing element from its silhouette's edges
    inward — dark cellular coral, polyp cups glowing cyan / magenta, a hot growth
    front spilling light onto the picture ahead of it — while ≈90 seeded coral
    trees sprout on the contour (and inside, as the crust reaches them), fork a
    few levels with glowing tips, and pop fuzzy polyp blooms. Fully covered at
    the middle of the window, the picture underneath swaps to the incoming
    element; then the coral withdraws back to the edges and vanishes, leaving
    the incoming element clean. G = 0 at both ends: exact hand-offs.

      left   attribute form, defaults (morph=coral)
             1.40 → 3.20   stat card → iphone
             5.20 → 7.00   iphone → stat card
      right  nested form, tuned: count=140 · size=1.3 · spread=1.3 · color=#7dfff0
             1.80 → 3.60   music card → ipad
             5.60 → 7.40   ipad → "reef"

    Beats per window (linear clock): grow 0–0.46 · covered 0.46–0.54 (swap at
    0.5) · recede 0.54–1.

    Camera never stops: linear orbit (r 980, look_at 0 0 0) swings across each merged
    hand-off window via ~0°, 8% closer — 1.4→3.6 +21°→−19° (narrowed: the iphone
    proxy skewed at the 3.2 swap), 5.2→7.4 −38°→+24°.

    Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/coral.promo
promo#morph-coral
  scene#reef(duration=9)
    camera(type=perspective fov=42 near=8.5 far=17000 position="418.8 220.6 858.6" look_at="0 0 0")
      properties
        frame
          keyframes
            kf(time=0 easing=linear position="418.8 220.6 858.6" look_at="0 0 0")
            kf(time=1.4 easing=linear position="344.9 187.1 898.5" look_at="0 0 0")
            kf(time=2.5 easing=linear position="-15.7 78.6 898.5" look_at="0 0 0")
            kf(time=3.6 easing=linear position="-318.0 -85.5 923.5" look_at="0 0 0")
            kf(time=5.2 easing=linear position="-580.2 270.3 742.7" look_at="0 0 0")
            kf(time=6.3 easing=linear position="47.1 62.9 898.6" look_at="0 0 0")
            kf(time=7.4 easing=linear position="393.9 -153.4 884.7" look_at="0 0 0")
            kf(time=9 easing=linear position="495.7 -187.1 825.0" look_at="0 0 0")
    background(top=#071624 bottom=#020509)
    environment(hdr="studio_small_04_2k" as_background=false background_color=#020509 exposure=1.0 blurriness=0.5 intensity=0.5)
    lights
      light#amb(type=ambient color=#8fb8ff intensity=0.7)
      light#key(type=directional color=#ffffff intensity=1.8 position="340 680 510")
      light#fill(type=directional color=#4fd8ff intensity=0.6 position="-510 170 340")
    haze#hz0(blend=add opacity=0.14 position="-700 300 -1600" color=#0f4fa8 size="120000 100000" pulse=0 decay=0)
    haze#hz1(blend=add opacity=0.1 position="800 -400 -1700" color=#6a2aa8 size="110000 90000" pulse=0 decay=0)
    postprocessing
      step(name=render)
      step(name=unreal_bloom strength=0.55 radius=0.5 threshold=0.82)
      step(name=aa method=ssaa samples=2)
    text#title(text="coral" kind=layer font="Roboto" size=200 worldHeight=40 color=#e8fbff weight=700 align=center position="0 330 0")
    text#sub(text="overgrow · swap under the reef · recede" kind=layer font="Roboto" size=110 worldHeight=18 color=#7fb6c8 weight=500 align=center position="0 290 0")

    // ── left · attribute form · defaults ────────────────────────────────────
    ui3d#dive-card(morph=coral morph-to=dive-phone morph-at=1.4 morph-dur=1.8 width=600 height=440 world_width=260 position="-230 -10 0" rotation="0 12 0")
      card(x=0 y=0 w=600 h=440 r=34 fill=#08161f stroke=#3ff6ff stroke_width=3 shadow=true layout=column align=start padding="36 0 0 36" gap=16)
        card(w=hug h=hug fill=transparent shadow=false layout=row align=center gap=14)
          icon(set=tabler name=ripple size=40 color