wrap
wrap
morph="wrap" — peel off like a sticker, wrap a glossy solid (match-morph-wrap.ts).
Read the rig's notes
One densely subdivided sheet: every vertex has a home on the outgoing frame, on the incoming frame, and on a parametric solid at the same UV. A peel front travels diagonally across the picture — the band lifts toward the camera and curls over, behind it the picture lies on the solid's skin. The covered solid floats in front of the frame, tilts, turns under a glossy studio look, a wipe with a hot edge swaps its skin for the incoming picture, and a second front peels it back off, flat, into the incoming element. Exact at both ends. morph-shape sphere | torus | cylinder | cube (sphere) morph-size solid radius × √(w·h) of the frame (0.34) morph-spread turns while covered (1) morph-color backing where the picture is transparent (snapshot average) morph-seed jitters the peel directions ONE scene, in-scene `morph-to` links, so mid-morph frames can be shot. A round trip, one shape per hand-off (the SOURCE owns each link's knobs): 1.2 → 3.0 stat card → iphone sphere (defaults) 4.0 → 5.8 iphone → app-grid card torus 6.8 → 8.6 app-grid card → ipad cube morph-spread=0.75 9.6 → 11.4 ipad → stat card cylinder · morph-size=0.3 Camera never stops: linear kfs orbit r 1051 around 0 0 0, each hand-off swings side to side (+26°→−33°, −22°→+38°, +29°→−24°, −36°→+31°) through a 0.92r dip at its midpoint. Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/wrap.promo
- Topic
- morphs
- Scenes
- 1
- Kind
- reference rig
//
morph="wrap" — peel off like a sticker, wrap a glossy solid (match-morph-wrap.ts).
One densely subdivided sheet: every vertex has a home on the outgoing frame,
on the incoming frame, and on a parametric solid at the same UV. A peel front
travels diagonally across the picture — the band lifts toward the camera and
curls over, behind it the picture lies on the solid's skin. The covered solid
floats in front of the frame, tilts, turns under a glossy studio look, a wipe
with a hot edge swaps its skin for the incoming picture, and a second front
peels it back off, flat, into the incoming element. Exact at both ends.
morph-shape sphere | torus | cylinder | cube (sphere)
morph-size solid radius × √(w·h) of the frame (0.34)
morph-spread turns while covered (1)
morph-color backing where the picture is transparent (snapshot average)
morph-seed jitters the peel directions
ONE scene, in-scene `morph-to` links, so mid-morph frames can be shot. A
round trip, one shape per hand-off (the SOURCE owns each link's knobs):
1.2 → 3.0 stat card → iphone sphere (defaults)
4.0 → 5.8 iphone → app-grid card torus
6.8 → 8.6 app-grid card → ipad cube morph-spread=0.75
9.6 → 11.4 ipad → stat card cylinder · morph-size=0.3
Camera never stops: linear kfs orbit r 1051 around 0 0 0, each hand-off swings side to side (+26°→−33°, −22°→+38°, +29°→−24°, −36°→+31°) through a 0.92r dip at its midpoint.
Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/wrap.promo
promo#morph-wrap
scene#one(duration=12.4)
camera(type=perspective fov=42 near=8.5 far=17000 position="517.5 182.5 896.4" look_at="0 0 0")
properties
frame
keyframes
kf(time=0 easing=linear position="517.5 182.5 896.4" look_at="0 0 0")
kf(time=1.2 easing=linear position="456.2 146.3 935.4" look_at="0 0 0")
kf(time=2.1 easing=linear position="-33.7 67.4 964.0" look_at="0 0 0")
kf(time=3.0 easing=linear position="-570.2 -91.6 878.1" look_at="0 0 0")
kf(time=4.0 easing=linear position="-382.0 254.3 945.5" look_at="0 0 0")
kf(time=4.9 easing=linear position="16.8 101.1 961.5" look_at="0 0 0")
kf(time=5.8 easing=linear position="646.7 -36.7 827.7" look_at="0 0 0")
kf(time=6.8 easing=linear position="504.6 -146.3 910.3" look_at="0 0 0")
kf(time=7.7 easing=linear position="-16.8 84.3 963.1" look_at="0 0 0")
kf(time=8.6 easing=linear position="-408.8 307.3 918.2" look_at="0 0 0")
kf(time=9.6 easing=linear position="-616.3 73.3 848.2" look_at="0 0 0")
kf(time=10.5 easing=linear position="33.3 151.3 954.4" look_at="0 0 0")
kf(time=11.4 easing=linear position="537.3 -128.1 894.2" look_at="0 0 0")
kf(time=12.4 easing=linear position="624.7 -164.4 829.0" 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.4 position="-900 400 -1600" color=#3b5bff size="120000 100000" pulse=0 decay=0)
haze#hz1(blend=add opacity=0.3 position="900 -500 -1700" color=#9b3bff size="110000 90000" pulse=0 decay=0)
text#title(text="wrap" kind=layer font="Roboto" size=200 worldHeight=40 color=#e8eefc weight=700 align=center position="0 400 0")
text#sub(text="peel like a sticker · wrap a glossy solid · turn · swap the skin · unwrap" kind=layer font="Roboto" size=110 worldHeight=18 color=#8ea3c8 weight=500 align=center position="0 360 0")
//