Skip to content
Docs
Open Promoeyes
bloom

bloom

morph="bloom" — flower bloom (match-morph-bloom.ts).

Read the rig's notes
The outgoing element splits along its length into `morph-count` strips that
fan out about its foot and close the circle: a ring of cupped glass petals,
each still printed with its strip of the picture. A glowing icon tile — the
pistil, `morph-color` — pops in at the centre, the flower turns, a wave runs
round the ring flipping every petal over (its back is the matching strip of
the incoming element), and the petals fold back in as the incoming element.
Exact at both ends: the first frame is the outgoing element, the last the
incoming one.

One scene, in-scene links (`morph-to`), so every mid-morph frame can be shot:

  1.00 → 2.80   stat card → iphone      defaults: 12 petals · stagger 0.45 · spread 1
  4.00 → 5.80   iphone → ipad           nested form: 16 petals · spread 1.25 · color #ff7ac8
  7.00 → 8.60   ipad → stat card        8 petals · stagger 0.8 · size 1.3 · color #ffd166

Hold the elements and the camera still through each window (the proxy bakes
from the live poses on its first frame).

Camera never stops (linear kfs, r 720 about the origin): each hand-off swings
across the subject — +24°→−37°, −30°→+22°, +35°→−28° azimuth, 8% closer mid-window.

Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/bloom.promo
Topic
morphs
Scenes
1
Kind
reference rig
//
    morph="bloom" — flower bloom (match-morph-bloom.ts).

    The outgoing element splits along its length into `morph-count` strips that
    fan out about its foot and close the circle: a ring of cupped glass petals,
    each still printed with its strip of the picture. A glowing icon tile — the
    pistil, `morph-color` — pops in at the centre, the flower turns, a wave runs
    round the ring flipping every petal over (its back is the matching strip of
    the incoming element), and the petals fold back in as the incoming element.
    Exact at both ends: the first frame is the outgoing element, the last the
    incoming one.

    One scene, in-scene links (`morph-to`), so every mid-morph frame can be shot:

      1.00 → 2.80   stat card → iphone      defaults: 12 petals · stagger 0.45 · spread 1
      4.00 → 5.80   iphone → ipad           nested form: 16 petals · spread 1.25 · color #ff7ac8
      7.00 → 8.60   ipad → stat card        8 petals · stagger 0.8 · size 1.3 · color #ffd166

    Hold the elements and the camera still through each window (the proxy bakes
    from the live poses on its first frame).

    Camera never stops (linear kfs, r 720 about the origin): each hand-off swings
    across the subject — +24°→−37°, −30°→+22°, +35°→−28° azimuth, 8% closer mid-window.

    Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/bloom.promo
promo#morph-bloom
  scene#one(duration=9.6)
    camera(type=perspective fov=42 near=8.5 far=17000 position="357 -88 619" look_at="0 0 0")
      properties
        frame
          keyframes
            kf(time=0 easing=linear position="357 -88 619" look_at="0 0 0")
            kf(time=1 easing=linear position="292 -63 655" look_at="0 0 0")
            kf(time=1.9 easing=linear position="-11 69 659" look_at="0 0 0")
            kf(time=2.8 easing=linear position="-419 186 555" look_at="0 0 0")
            kf(time=4 easing=linear position="-359 50 622" look_at="0 0 0")
            kf(time=4.9 easing=linear position="0 23 662" look_at="0 0 0")
            kf(time=5.8 easing=linear position="266 -113 659" look_at="0 0 0")
            kf(time=7 easing=linear position="407 125 581" look_at="0 0 0")
            kf(time=7.8 easing=linear position="23 58 659" look_at="0 0 0")
            kf(time=8.6 easing=linear position="-338 13 636" look_at="0 0 0")
            kf(time=9.6 easing=linear position="-392 0 604" look_at="0 0 0")
    background(top=#101626 bottom=#05070d)
    environment(hdr="studio_small_04_2k" as_background=false background_color=#05070d exposure=1.0 blurriness=0.5 intensity=0.6)
    lights
      light#amb(type=ambient color=#9fb4ff intensity=0.8)
      light#key(type=directional color=#ffffff intensity=2 position="340 680 510")
      light#fill(type=directional color=#7aa2ff intensity=0.6 position="-510 170 340")
    haze#hz0(blend=add opacity=0.14 position="-900 400 -1600" color=#3b5bff size="120000 100000" pulse=0 decay=0)
    text#title(text="bloom" kind=layer font="Roboto" size=200 worldHeight=30 color=#e8eefc weight=700 align=center position="0 205 0")
    text#sub(text="strips peel into a ring of petals · the pistil glows · a flip wave swaps the print · the petals close as the next element" kind=layer font="Roboto" size=110 worldHeight=11 color=#8ea3c8 weight=500 align=center position="0 178 0")

    // 1 · stat card → iphone (attribute form, defaults)
    ui3d#card(morph=bloom morph-to=phone morph-at=1 morph-dur=1.8 width=600 height=440 world_width=240 position="0 -10 0" rotation="0 -12 0")
      card(x=0 y=0 w=600 h=440 r=34 fill=#0b1622 stroke=#35e0ff 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=activity size=40 color=#35e0ff stroke_width=2.4)
          text(text=Pulse size=32 weight=900 color=#f2fbff align=left)
        text(text="Active users" size=22 weight=600 color=#8fb4c6 align=left)