Skip to content
Docs
Open Promoeyes
geode

geode

morph="geode" — petrify, crack, break open on amethyst (match-morph-geode.ts).

Read the rig's notes
The outgoing element turns to rough grey stone behind a creeping noise front
(a faint embossed ghost of the picture stays in the rock), glowing cracks run
out from an impact point along a Voronoi fracture with violet light leaking
through, the crust pieces peel open outward and tumble away, and the cavity
under them — dark violet, bright at its heart, a pale quartz rim, glitter — is
lined with faceted crystals growing out of the surface: hexagonal prisms with
pointed tips, deep at the root and clear at the tip, sparkling. The cluster
rides onto the incoming element, a glint sweeps across it, and the crystals
shrink back into the surface centre-first while the incoming picture spreads
out under them. Exact at both ends.

ONE scene, no cuts — the in-scene `morph-to` links, so every mid frame can be
shot. The hero in the middle, 1.8 s per hand-off:

  1.6 → 3.4   stat card   → iphone        defaults (morph=geode: 300 amethyst crystals)
  4.4 → 6.2   iphone      → wallet card   morph-color=#4fd1ff (aquamarine) · morph-count=480 · morph-spread=1.4
  7.2 → 9.0   wallet card → stat card     morph-color=#ff7ab8 (rose quartz) · morph-size=34 · morph-stagger=0.06 · morph-seed=11

Knobs: morph-count (crystals, 300) · morph-color (tint, #9b5cff) · morph-size
(crystal height, world units; default scales with the element) ·
morph-stagger (centre-out settle spread, 0.16) · morph-spread (how far the
crust falls, 1) · morph-seed.
Camera never stops: linear kfs orbit r 760 around 0 0 0, each hand-off swings side to side (−32°→+27°, +35°→−23°, −30°→+38°) through a 0.92r dip at its midpoint.

Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/geode.promo
Topic
morphs
Scenes
1
Kind
reference rig
//
    morph="geode" — petrify, crack, break open on amethyst (match-morph-geode.ts).

    The outgoing element turns to rough grey stone behind a creeping noise front
    (a faint embossed ghost of the picture stays in the rock), glowing cracks run
    out from an impact point along a Voronoi fracture with violet light leaking
    through, the crust pieces peel open outward and tumble away, and the cavity
    under them — dark violet, bright at its heart, a pale quartz rim, glitter — is
    lined with faceted crystals growing out of the surface: hexagonal prisms with
    pointed tips, deep at the root and clear at the tip, sparkling. The cluster
    rides onto the incoming element, a glint sweeps across it, and the crystals
    shrink back into the surface centre-first while the incoming picture spreads
    out under them. Exact at both ends.

    ONE scene, no cuts — the in-scene `morph-to` links, so every mid frame can be
    shot. The hero in the middle, 1.8 s per hand-off:

      1.6 → 3.4   stat card   → iphone        defaults (morph=geode: 300 amethyst crystals)
      4.4 → 6.2   iphone      → wallet card   morph-color=#4fd1ff (aquamarine) · morph-count=480 · morph-spread=1.4
      7.2 → 9.0   wallet card → stat card     morph-color=#ff7ab8 (rose quartz) · morph-size=34 · morph-stagger=0.06 · morph-seed=11

    Knobs: morph-count (crystals, 300) · morph-color (tint, #9b5cff) · morph-size
    (crystal height, world units; default scales with the element) ·
    morph-stagger (centre-out settle spread, 0.16) · morph-spread (how far the
    crust falls, 1) · morph-seed.
    Camera never stops: linear kfs orbit r 760 around 0 0 0, each hand-off swings side to side (−32°→+27°, +35°→−23°, −30°→+38°) through a 0.92r dip at its midpoint.

    Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/geode.promo
promo#morph-geode
  scene#one(duration=10)
    camera(type=perspective fov=42 near=8.5 far=17000 position="-466.8 -53.0 597.4" look_at="0 0 0")
      properties
        frame
          keyframes
            kf(time=0 easing=linear position="-466.8 -53.0 597.4" look_at="0 0 0")
            kf(time=1.6 easing=linear position="-402.5 -26.5 644.1" look_at="0 0 0")
            kf(time=2.5 easing=linear position="12.1 73.1 695.3" look_at="0 0 0")
            kf(time=3.4 easing=linear position="333.3 196.7 654.1" look_at="0 0 0")
            kf(time=4.4 easing=linear position="433.5 79.4 619.1" look_at="0 0 0")
            kf(time=5.3 easing=linear position="-24.4 36.6 697.8" look_at="0 0 0")
            kf(time=6.2 easing=linear position="-294.1 -105.8 692.8" look_at="0 0 0")
            kf(time=7.2 easing=linear position="-373.0 145.0 646.1" look_at="0 0 0")
            kf(time=8.1 easing=linear position="0.0 85.2 694.0" look_at="0 0 0")
            kf(time=9.0 easing=linear position="467.8 13.3 598.8" look_at="0 0 0")
            kf(time=10 easing=linear position="527.6 26.5 546.4" look_at="0 0 0")
    background(top=#0e0c16 bottom=#040308)
    environment(hdr="studio_small_04_2k" as_background=false background_color=#040308 exposure=1.0 blurriness=0.5 intensity=0.6)
    lights
      light#amb(type=ambient color=#b4a8ff intensity=0.8)
      light#key(type=directional color=#ffffff intensity=2 position="340 680 510")
      light#fill(type=directional color=#9a7aff intensity=0.6 position="-510 170 340")
    haze#hz0(blend=add opacity=0.14 position="-500 300 -1600" color=#5b2bd8 size="120000 100000" pulse=0 decay=0)
    haze#hz1(blend=add opacity=0.1 position="600 -300 -1700" color=#2b8fb0 size="110000 90000" pulse=0 decay=0)
    text#title(text="geode" kind=layer font="Roboto" size=200 worldHeight=30 color=#efe8fc weight=700 align=center position="0 232 0")
    text#sub(text="turns to stone · cracks glow · breaks open on crystals · settles into the next element" kind=layer font="Roboto" size=110 worldHeight=12 color=#a596c8 weight=500 align=center position="0 205 0")

    // 1.6 → 3.4 · stat card → iphone · defaul