vaweGitHub

MovesChange between shots

Split reveal

look: dusk1.6 ssplit-reveal.md

Split reveal: final frame of the transition animation
Tap the clip to play it.

When to use

Use when the next shot is behind the current one and the current one should open like a pair of doors. Shot A is drawn twice, each copy showing one half, so the seam is invisible until they part. The detail that sells it is the light in the gap: shot B waits in the dark, a shadow is cast beside each door, and B lights up and settles from 1.12x as the doors clear. Clip: split-reveal.mp4. Demo: demo/split-reveal.html.

The code

js
import { EASE } from '../../core/motion/presets.js';
const W = innerWidth, far = 0.62;
const t = { duration: 850, delay: 350, easing: EASE.settle, fill: 'both' };
// each .door is 50vw wide: a clipped full-width copy of shot A, plus an .edge gradient beside its inner side
left.animate([{ translate: '0 0' }, { translate: `${-W * far}px 0` }], t);
right.animate([{ translate: '0 0' }, { translate: `${W * far}px 0` }], t);
veil.animate([{ opacity: 0.85 }, { opacity: 0.8, offset: 0.4 }, { opacity: 0 }], t);   // black over shot B
shotB.animate([{ scale: 1.12 }, { scale: 1 }], { duration: 1100, delay: 350, easing: EASE.land, fill: 'both' });
// door blur: stdDeviation = 0.2 x one frame's travel, x only, set in vawe.onFrame as in push-blur

Easing and timing

The clip runs 1.6 s. The look is dusk.

The clip uses 2 named eases from core/motion/presets.js. Each is a pair of After Effects handles: influence is how far along the segment the handle reaches, and speed is how fast the value moves at the key, as a multiple of the segment's average speed. Motion in the docs explains both.

EaseLeaving a keyArriving at a key
land12% influence, speed 4.875% influence, speed 0
settle60% influence, speed 060% influence, speed 0

Notes

The doors travel 62 percent of the width, not 50: the shadow beside each door must also leave the frame, or a grey band stays on screen after the move. Keep the veil dark until the gap is wide (the 0.4 offset), or B is lit before it is uncovered and the gap reads as a hole. EASE.settle moves the doors fastest through the middle; a plain ease-in-out spends the move in two frames. No highlight line on the door edge: it reads as a border while the doors are still shut.

Looks (ground, type, radius, accent) live in demo/demo.css; this snippet keeps neutral tokens.

Sound

Sound: none; the light in the gap is the event, and it stays quiet.