Skip to content
Docs
Open Promoeyes
knit

knit

morph="knit" — knitted yarn (match-morph-knit.ts).

Read the rig's notes
The outgoing picture turns into hand-knitted wool: stockinette V stitches,
two slanted loop lobes per stitch, each stitch's yarn sampled from the
picture, lit relief, ply twist, fuzzy hairs, dark backing yarn between.
It unravels from its top-right corner, row by row back and forth — the
stitches at the front loosen, sway and curl up — into ONE loose strand
that sags and swings across to the incoming element, which is cast on at
its bottom-left corner and knitted up row by row, each stitch growing out
of the strand. When the last stitch is on, the knit relaxes into the clean
incoming picture. The strand carries the colours of the stitches it just
left at one end and of the ones it is about to make at the other.

  left chain    defaults (morph=knit): 42 stitches across · stagger 0.5
  right chain   morph-count=30 · morph-stagger=0.85 · morph-color=#f4c27a ·
                morph-spread=1.4 · morph-seed=7 (chunkier, a tinted strand,
                unravel and knit overlapping more)

One scene, in-scene `morph-to` links (no cuts), so every mid-morph frame
can be shot. Each chain is a round trip, 1.8 s per hand-off:
  left    1.0 → 2.8   stat card → iphone      4.0 → 5.8   iphone → card
  right   1.3 → 3.1   gallery card → ipad     4.3 → 6.1   ipad → card
Camera never stops: linear kfs orbit r 800 around 0 0 0, each hand-off pair swings side to side (−18°→+26°, +21°→−20°) through a 0.92r dip at its midpoint; the poses where both wide cards are up sit at r 870 so the near card stays in frame.

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

    The outgoing picture turns into hand-knitted wool: stockinette V stitches,
    two slanted loop lobes per stitch, each stitch's yarn sampled from the
    picture, lit relief, ply twist, fuzzy hairs, dark backing yarn between.
    It unravels from its top-right corner, row by row back and forth — the
    stitches at the front loosen, sway and curl up — into ONE loose strand
    that sags and swings across to the incoming element, which is cast on at
    its bottom-left corner and knitted up row by row, each stitch growing out
    of the strand. When the last stitch is on, the knit relaxes into the clean
    incoming picture. The strand carries the colours of the stitches it just
    left at one end and of the ones it is about to make at the other.

      left chain    defaults (morph=knit): 42 stitches across · stagger 0.5
      right chain   morph-count=30 · morph-stagger=0.85 · morph-color=#f4c27a ·
                    morph-spread=1.4 · morph-seed=7 (chunkier, a tinted strand,
                    unravel and knit overlapping more)

    One scene, in-scene `morph-to` links (no cuts), so every mid-morph frame
    can be shot. Each chain is a round trip, 1.8 s per hand-off:
      left    1.0 → 2.8   stat card → iphone      4.0 → 5.8   iphone → card
      right   1.3 → 3.1   gallery card → ipad     4.3 → 6.1   ipad → card
    Camera never stops: linear kfs orbit r 800 around 0 0 0, each hand-off pair swings side to side (−18°→+26°, +21°→−20°) through a 0.92r dip at its midpoint; the poses where both wide cards are up sit at r 870 so the near card stays in frame.

    Preview: http://localhost:4444/runtime?project=promos/primitives/morphs/knit.promo
promo#morph-knit
  scene#one(duration=7)
    camera(type=perspective fov=42 near=8.5 far=17000 position="-304.6 227.8 793.6" look_at="0 0 0")
      properties
        frame
          keyframes
            kf(time=0 easing=linear position="-304.6 227.8 793.6" look_at="0 0 0")
            kf(time=1.0 easing=linear position="-263.0 180.9 809.3" look_at="0 0 0")
            kf(time=2.05 easing=linear position="-25.6 51.3 733.8" look_at="0 0 0")
            kf(time=3.1 easing=linear position="349.4 -69.7 716.3" look_at="0 0 0")
            kf(time=4.0 easing=linear position="286.0 55.8 745.0" look_at="0 0 0")
            kf(time=5.05 easing=linear position="12.8 76.9 731.9" look_at="0 0 0")
            kf(time=6.1 easing=linear position="-293.0 151.1 805.1" look_at="0 0 0")
            kf(time=7 easing=linear position="-338.8 200.2 798.3" look_at="0 0 0")
    background(top=#141019 bottom=#060507)
    environment(hdr="studio_small_04_2k" as_background=false background_color=#060507 exposure=1.0 blurriness=0.5 intensity=0.6)
    lights
      light#amb(type=ambient color=#ffe9d6 intensity=0.7)
      light#key(type=directional color=#ffffff intensity=2 position="340 680 510")
      light#fill(type=directional color=#ffb27a intensity=0.5 position="-510 170 340")
    haze#hz0(blend=add opacity=0.18 position="-900 400 -1600" color=#3b2a6e size="120000 100000" pulse=0 decay=0)
    haze#hz1(blend=add opacity=0.14 position="900 -500 -1700" color=#6e3320 size="110000 90000" pulse=0 decay=0)
    text#title(text="knit" kind=layer font="Roboto" size=200 worldHeight=28 color=#f3ece4 weight=700 align=center position="0 262 0")
    text#sub(text="knit the picture · unravel into one strand · knit the partner up" kind=layer font="Roboto" size=110 worldHeight=13 color=#b8a798 weight=500 align=center position="0 232 0")

    // ── left chain · defaults ────────────────────────────────────────────────
    ui3d#stat(morph=knit morph-to=phone morph-at=1.0 morph-dur=1.8 width=600 height=440 world_width=330 position="-290 0 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=