compreel

Motion vocabulary · Timelines and milestones

Hurdle lane

A lane with hurdles; one by one each lights with its label while a guide reaches from the ball; with clear the ball hops them.

Live loop · 8 s · 1920×1080 at 24 fps

Parameters

ParameterTypeWhat it does
steps[{label, value?}]steps: 2-6 steps, low to high; value pops on landing, the last one slams
milestones / goal[{date, label}] / booleanroadmap: 3-6 milestones; goal blooms the last one (default true)
items / clearstring[] / booleanhurdles: 3-5 labels; clear: the ball hops each one (done) instead of waiting (to do)
step_msmsone beat: hop + dwell, move + dwell, hurdle to hurdle
ease{"<move>": ease}retune any named move (see the entry's moves): a preset name ("out-expo"), a cubic-bezier [x1, y1, x2, y2], {spring: [hz, damping]} or {trapezoid: [accel, decel]}. A wrong move name or curve throws, it never falls back. A move measured from a reference clip (the replica workbench's measure/*.json, frame-keyed) becomes a curve without conversion: MV.fitEase(doc, "x", {from: 133, to: 142}) or `motion-fit <file> --measure x --from 133 --to 142 --ease`
camera{focal?, x?, y?, z?}the scene's camera: pan x / y and push z as numbers or keyframes [[ms, value, ease?], ...]; objects at different depths move differently (real parallax). focal default 1800
brandhex
Default: #6B5BFF
the site's brand colour; the component derives its accent (>= 3:1 on the stage), surfaces and ink from it
stage"dark" | "light"
Default: "dark"
the stage the component sits on
displayfont stem
Default: "Inter-Bold"
headline stem; name it in the call so the runtime loads it
bodyfont stem
Default: "Inter-Regular"
UI / body stem; name it in the call so the runtime loads it
start_msms
Default: 300
when the component starts, ms into the shot
backgroundboolean
Default: false
draw the stage background (off: transparent over the shot's own stage)
place{x, y, w, h, z?}the component's place in the shot's layout: it fits its 1920x1080 composition into this stage rect (centred, aspect kept); z orders components front to back. Default: the whole stage

Moves and their curves

Every move is eased on its own. Retune one with ease: { "<move>": <curve> }, a curve name or cubic-bezier handles.

MoveCurveWhat it does
hurdle.inhouseeach hurdle fading in
tag.popovershoota hurdle's label popping as it lights
guide.reachout-cubicthe dashed guide reaching from the ball to the lit hurdle
hop.xin-out-sinethe ball's travel over a hurdle (clear: true; its height follows gravity)

This demo

variant"hurdles"
items["Script","Voice","Motion","Render"]
cleartrue
brand#E0563B
stagelight
<script src="/vendor/motion-vocab.js"></script>
MV.bind("s3", MV.timeline(el, {"variant":"hurdles","items":["Script","Voice","Motion","Render"],"clear":true,"brand":"#E0563B","stage":"light","display":"Inter-Bold","body":"Inter-Regular"}));

When to use it in a launch film

The steps the product takes care of (clear: done), or the problems still in the viewer's way (waiting).

Why it works

Hurdles make each step an obstacle with a name; clearing them is the product's work made visible.

Do not combine with

  • more than five hurdles
  • long labels (the tags sit over the bars)

Job in the film

  • Feature

Natural length

4.5–8.0 s

Make a film with these moves in LaunchReel

More timelines and milestones

All motion components →