Skip to content
Docs
Open Promoeyes
concepts

concepts

Morph concepts — the ten concept morphs that need no new mode, ONE scene (shaders/morph-concepts/*.jpg are the before · mid · end references).

Read the rig's notes
Six are existing modes authored to the concept; four exercise the new knobs:

  01 liquid metal   iphone → chrome bolt     liquid3d  morph-material=chrome
  02 pixel sand     card → card              particles morph-gravity=1 morph-blend=normal
  03 voxel rebuild  iphone → laptop          voxels3d
  06 glass shatter  iphone → iphone          shatter3d
  07 point cloud    iphone → bolt            particles
  04 origami fold   card → card              fold
  08 topographic    dashboard → dashboard    extrude
  10 plasma burn    iphone → iphone          dissolve  morph-embers=500
  19 soap bubble    card → card              inflate   morph-material=bubble morph-pop=1
  20 lenticular     retro card → iphone      slices3d

Every hand-off starts at 2.0 s (in-scene morph-to), so 1.0 s is "before",
2.6–3.4 s the middle, 4.6 s "after".

Camera never stops: linear orbit about the grid centre (r 1850, so the near column
stays framed when swung) — 2.0→4.4 from +17° to −21° via ~0° at 1700.

Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/concepts.promo
Topic
morphs
Scenes
1
Kind
reference rig
//
    Morph concepts — the ten concept morphs that need no new mode, ONE scene
    (shaders/morph-concepts/*.jpg are the before · mid · end references).

    Six are existing modes authored to the concept; four exercise the new knobs:

      01 liquid metal   iphone → chrome bolt     liquid3d  morph-material=chrome
      02 pixel sand     card → card              particles morph-gravity=1 morph-blend=normal
      03 voxel rebuild  iphone → laptop          voxels3d
      06 glass shatter  iphone → iphone          shatter3d
      07 point cloud    iphone → bolt            particles
      04 origami fold   card → card              fold
      08 topographic    dashboard → dashboard    extrude
      10 plasma burn    iphone → iphone          dissolve  morph-embers=500
      19 soap bubble    card → card              inflate   morph-material=bubble morph-pop=1
      20 lenticular     retro card → iphone      slices3d

    Every hand-off starts at 2.0 s (in-scene morph-to), so 1.0 s is "before",
    2.6–3.4 s the middle, 4.6 s "after".

    Camera never stops: linear orbit about the grid centre (r 1850, so the near column
    stays framed when swung) — 2.0→4.4 from +17° to −21° via ~0° at 1700.

    Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/concepts.promo
promo#morph-concepts
  scene#one(duration=6)
    camera(type=perspective fov=42 near=8.5 far=17000 position="646.0 416.2 1682.9" look_at="0 0 0")
      properties
        frame
          keyframes
            kf(time=0 easing=linear position="646.0 416.2 1682.9" look_at="0 0 0")
            kf(time=2 easing=linear position="531.0 353.0 1736.7" look_at="0 0 0")
            kf(time=3.2 easing=linear position="-29.6 118.7 1697.6" look_at="0 0 0")
            kf(time=4.4 easing=linear position="-658.0 -225.5 1714.3" look_at="0 0 0")
            kf(time=6 easing=linear position="-743.2 -289.4 1669.3" 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.3 intensity=1.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.4 position="-900 400 -1600" color=#3b5bff size="120000 100000" pulse=0 decay=0)
    text#title(text="morph concepts · no new modes" kind=layer font="Roboto" size=200 worldHeight=40 color=#e8eefc weight=700 align=center position="0 580 0")
    text#sub(text="every block hands off at 2.0 s" kind=layer font="Roboto" size=110 worldHeight=18 color=#8ea3c8 weight=500 align=center position="0 535 0")

    // ── row 1 ────────────────────────────────────────────────────────────────

    // 01 liquid metal — the phone melts to chrome and sets as a chrome badge.
    iphone#lm-phone(morph=liquid3d morph-material=chrome morph-to=lm-bolt morph-at=2 morph-dur=2 body=graphite scale=1.45 rotation="0 -20 0" position="-880 250 0")
      ui3d(overlay=screen width=71 height=154)
        card(x=0 y=0 w=71 h=154 r=0 fill=#0b1220 shadow=false)
        text(text="Inbox" x=6 y=10 w=59 h=9 size=6.5 weight=900 color=#f8fafc align=left)
        card(x=6 y=24 w=59 h=34 r=4 fill=#ff5f8a shadow=false)
        card(x=6 y=64 w=59 h=13 r=3.4 fill=#16233a shadow=false)
        card(x=6 y=81 w=59 h=13 r=3.4 fill=#16233a shadow=false)
    primitive#lm-bolt(position="-880 250 0" rotation="0 -20 0")
      path(d="M 18 114 L -66 -12 L -6 -12 L -24 -114 L 66 18 L 6 18 Z" depth=34 bevel=6 curve_segments=24)
      material(ref=standard color=#e9edf3 metalness=1 roughness=0.08)
    text#lbl-lm(text="01 liquid metal" kind=layer font="Roboto" size=140 worldHeight=22 color=#e8eefc weight=700 align=center position="-880 90 0")

    // 02 pixel sand — the card pours into a heap and is blown up into the next.
    ui3d#sand-a(morph=particles morph-gravity=1 m