docs(prompting): add rule 7 — seeded + two-frame-hold motion for handmade-but-deterministic feel

Learned from a strong example prompt (not reused verbatim — different
subject, same technique): a stop-motion/hand-animated look wants
irregular timing, but true unseeded randomness breaks HyperFrames'
determinism guarantee (same seek must always render the same frame).
The correct pattern is a PRNG seeded once at composition start, stepping
elements between held positions rather than tweening continuously —
distinct from rule 1's continuous ambient idle, which is a different
tool for a different texture.

Kept separate from "The grammar, measured" (rules 1-6, empirically
videoed) since there's no rendered proof for rule 7 yet — the new
section and example are illustrative, not claimed as verified.

Co-Authored-By: Claude Opus <noreply@anthropic.com>
This commit is contained in:
Vance Ingalls
2026-07-13 15:39:18 -07:00
co-authored by Claude Opus
parent ead4341c7c
commit ba37b53efb
+10 -1
View File
@@ -1,6 +1,6 @@
---
title: Motion that reads premium
description: "Six motion-grammar rules from frame-by-frame study of professional work — nothing stops, the camera acts, action overlaps."
description: "Seven motion-grammar rules from frame-by-frame study of professional work — nothing stops, the camera acts, action overlaps, imperfection stays reproducible."
---
Static frames can be perfect and the video still feels cheap if the motion is dead. Professional motion design follows a grammar you can put directly in prompts:
@@ -11,6 +11,7 @@ Static frames can be perfect and the video still feels cheap if the motion is de
4. **Overshoot and follow-through.** Every pop scales past its target and settles back; letters can tumble in individually with rotation.
5. **Depth planes.** One or two large, heavily-blurred foreground elements drifting near the lens sell depth instantly.
6. **Match pacing to genre.** Showreel-style cuts run 1.5-4 seconds per idea; a stretched 8-second version of a 2-second idea feels slow no matter how it's animated.
7. **Handmade imperfection stays reproducible.** A stop-motion or hand-animated feel wants irregular timing, not machine-smooth eases — but true unseeded randomness breaks the render: HyperFrames must produce the identical frame every time it seeks to the same point, and `Math.random()` can't promise that. Seed a PRNG once at composition start instead, and step discrete elements between held positions (a "two-frame hold": land, hold two frames, jump to the next offset) rather than tweening continuously between them. The irregularity is real — it just comes from a seed, not from chance.
## The grammar, measured
@@ -23,3 +24,11 @@ The same composition built twice — identical content, identical layout; the on
*The six rules: staggered overshoot entrances, a continuous 5% push, ambient idle, a blurred foreground plane, sparkline draw-ins as secondary motion.*
The difference is measurable, not just visible: in the final second the frozen build has bit-identical consecutive frames, while the motion-grammar build changes every single frame — corroborated by the encoder (211KB vs 2.5MB for the same content). A frozen final second is the cheap-motion tell you can test for.
## Handmade, still deterministic
Rule 1's ambient idle is *continuous* — a slow, smooth breathing scale. Rule 7 is a different tool for a different job: when the brief wants something that reads as physically hand-animated (paper cutouts, stop-motion, a wobbly hand-drawn line), continuous easing is the wrong texture — it reads as digital no matter how organic the curve. What you want is irregular, but reproducible:
> A paper-cutout garden scene: flowers, leaves, and a bee drifting on visible wires, like stop-motion. Seed a random offset per element at the start (same seed every render) so each leaf sways to a slightly different rhythm, but hold each position for exactly two frames before stepping to the next — discrete jumps, not a smooth tween. It should read as intentionally handmade, not glitchy.
Name the seed and the hold length explicitly — "seeded" and "two-frame hold" are the two words that keep an agent from reaching for `Math.random()` and quietly breaking every re-render. Ask for it, and seeking to frame 214 twice gives you the identical frame twice, exactly like every other HyperFrames render — the imperfection is designed in, not left to chance.