remotion-motion-design
Build AE-grade 3D motion-design videos with Remotion (three.js + 2D overlays, frame-driven camera rigs, real scene transitions, cinematic motion blur, kinetic typography). Use when creating, extending, or rendering motion-graphics / presentation / explainer / promo / investor videos, or when adding 3D, transitions, motion blur, or kinetic type to a Remotion project.
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 2
- Forks
- 0
01 前言 Front Matter
- name
- remotion-motion-design
- scope
- harness
- triggers
- [ "motion design", "remotion", "video", "3d video", "motion graphics", "mograph", "kinetic typography", "after effects", "AE-grade", "scene transition", "motion blur", "investor video", "explainer video", "render video" ]
- invocation
- ability
- description
- Build AE-grade 3D motion-design videos with Remotion (three.js + 2D overlays, frame-driven camera rigs, real scene transitions, cinematic motion blur, kinetic typography). Use when creating, extending, or rendering motion-graphics / presentation / explainer / promo / investor videos, or when adding 3D, transitions, motion blur, or kinetic type to a Remotion project.
03 SKILL.md 正文
Remotion Motion Design — AE-Grade 3D Engine
The operating manual for producing studio-grade motion videos. It compounds: every new video reuses the engine libs and the technique below, and any new mechanism gets added back here.
Reference implementation (the canonical project): 02_RESOURCES/INVESTOR-DECK/motion/.
The bar
Apple-keynote / studio motion design: a 3D realm (three.js) with 2D overlays composited on top, frame-driven camera choreography (bezier/physics), real visual transitions (never fade-to-black), cinematic motion blur on fast motion, kinetic typography with detail (highlighted words, clip reveals, underline wipes), and compositional diversity (no two scenes framed the same).
Stack (Remotion v4.0.476)
@remotion/three+@react-three/fiber@9+three@0.184+@react-three/drei— the 3D realm.@remotion/transitions— real scene transitions (TransitionSeries + presentations).@remotion/motion-blur—<CameraMotionBlur>(true shutter) +<Trail>(cheap ghost smear).- Render 3D with
--gl=angle(macOS → Metal, fast). Without it, ThreeCanvas renders black.
Engine libraries (reuse, don't reinvent)
src/lib/system.ts— paletteC, type scaleT, trackingLS, weightsW,BEZcurve table,BLURdefaults,hash/smooth/fmt. Single source of truth. Never hardcode color/font/curve.src/lib/three-env.tsx—Stage(ThreeCanvas + fog + lights),CameraRig(keyframed camera:{f,pos,look,fov}[]interpolated with a BEZ ease — the camera move),DepthField(deterministic particle volume),TechLights,Overlay(2D-over-3D compositor).src/lib/kinetic.tsx—ClipReveal,WordStagger,HighlightWord,UnderlineWipe,BoxDraw,ColorPop,CountUp. AE type mechanics, all frame-driven.src/lib/transitions.tsx—depthPush/glideUpcustom presentations,T_smooth/T_snap/T_reveal/ T_springtiming kit,Cinematic(CameraMotionBlur) +Smear(Trail) wrappers.
Hard rules (non-negotiable — these are what make it render correctly)
- Deterministic only. Every animation is a pure function of
useCurrentFrame(). NEVERuseFrame(R3F's loop does NOT fire in headless render — animation will freeze). NEVERMath.random/Date.now(motion blur + transitions re-render children N times → non-determinism = visible noise). Usehash(i). - Camera + 3D objects animate via
useCurrentFrame()→ props/useLayoutEffect, inside<ThreeCanvas>.CameraRigalready does this; give it keyframes. - 2D over 3D: put DOM/SVG in
<Overlay>AFTER<Stage>. Pointer-events none. - Transitions: use
<TransitionSeries>(NOT<Series>) withTransitionSeries.Sequence+TransitionSeries.Transition. TransitiondurationInFramesMUST be<both adjacent sequences. Total frames = Σ sequences − Σ transitions (transitions overlap). Compute the composition duration from this. - Motion blur: the moving element must call
useCurrentFrame()inside the wrapper's children, not the parent.CameraMotionBlur samples={N}multiplies render cost ×N — wrap ONLY fast subtrees; usesamples:5for 3D,8for 2D. PreferSmear/Trailfor cheap stylised streaks. Slow cinematic camera moves need no blur. - 3D text: drei
<Text>(troika) needs a local.woff/.ttf(NOT woff2) inpublic/+preloadFont. When in doubt, render the wordmark as a 2D<Overlay>title over the 3D world (AE-standard, zero font risk).
AE technique cheat-sheet (from research — bake into scenes)
- Bezier curves (
BEZin system.ts):entrancedecisive arrival ·settlepolished ·snappop (accents only) ·editorialsymmetric camera move ·overshootspring-settle ·revealclip-reveal standard. - Timing grid: everything on multiples of ~4f @30fps. Stagger siblings 4–6f. Secondary follow-through 2–3f AFTER primary (e.g. underline wipes 4–6f after text lands — never simultaneous).
- Camera: push-in on emphasis = scale 1.0→1.04–1.06 over 18–24f (never >8% unless hero). Dolly = move z AND parallax BG at 0.3× FG. Add 0.5–1px blur at peak velocity, sharp at ends. Pull-back to 0.94 for context.
- Kinetic type: highlight swipe (scaleX 0→1 from left, text bleeds through at 60%), underline wipe (width 0→100%, reveal curve), box draw (stroke-dashoffset), word stagger (translateY+rotateX fold, 4f apart), clip reveal (translateY 112%→0 in overflow:hidden), color pop (color shift 3f + 1.06 micro-pulse).
- Composition diversity: cycle 6 archetypes across the film — full-bleed center · rule-of-thirds anchor · cornered asymmetry · scale contrast · horizontal band · fragmented grid. Alternate dense ↔ sparse. Use real scale contrast (120px hero next to 14px body, not 48 vs 24).
- Polish: film grain (feTurbulence, 4–5% opacity, overlay blend — biggest "looks cheap" fix), vignette, glow on key type/stats, depth-of-field blur (0.8–1.5px) on background layers only.
Workflow for a new video (compounding loop)
- Content + brief → a
SCENE-SPEC.md(the build contract; facts authoritative, no invention). - Lay foundation yourself (system tokens, reference scene) → render a still → lock the look.
- Fan scene construction to parallel agents against the spec + 2 reference scenes (distinct files, no conflict).
- Verify every scene by rendered still (
remotion still ... --gl=angle) — catch layout collisions before full render. - Assemble with
<TransitionSeries>(durations via the Σ rule). Render with--gl=angle --crf=18. - Sample frames from the encoded mp4 to confirm quality. Add any new mechanism back into the engine libs + this skill.
Render commands
remotion studio src/index.ts # live scrub
remotion still src/index.ts <SceneId> out/s.png --frame=N --gl=angle # verify a scene
remotion render src/index.ts <CompId> out/film.mp4 --codec=h264 --crf=18 --gl=angle
Corrected direction (2026-06-13, after feedback) — READ THIS
Full research synthesis: 02_RESOURCES/research/ae-grade-motion-design-remotion-2026-06-13.md
(searchable via ai search "ae-grade motion design"). Also mirror the OFFICIAL skill
github.com/remotion-dev/skills for Remotion conventions.
The "3D realm" is not a visible 3D environment (no grid floors, wireframe cores, Tron/neon —
that reads as a 2003 video-game loading screen). It means operate motion across all 3 spatial +
rotational axes using CSS perspective + transform-style: preserve-3d on flat text/vector
layers (crisper than three.js for type; reserve three.js for particles/meshes only). Build a CSS
"camera rig" parent (perspective 800–1400 + preserve-3d, animate rotateX/rotateY = camera move);
place layers at depth via translateZ; parallax falls out for free.
Non-negotiables for premium (the things we got wrong):
- Text TRAVELS, never pops. translateY/translateZ/path motion + mask reveals; tracking-in
(letterSpacing −0.06→0). No opacity-only fades. Use
@remotion/animation-utilsmakeTransform. - Elements move each other to form the scene — lines draw into dividers, blocks slide & lock, shapes travel and grow into text containers, one element pushes another out. (8 moves in research §8.)
- Continuous flow + speed. Next move starts at 50–70% of the previous (overlap). An anchor element is always moving. Exits ~60% of entry length. No dead frame >10f. Faster pacing, less settling.
- Mask/clip reveals (
clipPath inset/polygon, overflow:hidden + translateY) over opacity fades. - Kill default eases — BEZ table / spring configs (snappy
{damping:20,stiffness:200,mass:0.5}, hero{damping:15,stiffness:50,mass:2}). Apple land =cubic-bezier(0,0,0.2,1), no overshoot. - Grain 2–4%, optical alignment, one accent color, massive negative space, restraint.
- Render 2× (
--scale 2) for crisp type; neverfilter:on a preserve-3d ancestor. - Toolkit:
@remotion/animation-utils(makeTransform/interpolateStyles),@remotion/paths(evolvePath/getPointAtLength/interpolatePath), spring+measureSpring for stagger math.
VFX pipeline (GPU — the "not-flat / not-PS2" lever)
Flat CSS/DOM cannot do VFX. For spectacle (intros, hero moments, energy/data viz) use three.js +
@react-three/postprocessing inside <ThreeCanvas> (render --gl=angle):
- Bloom is the single biggest cinematic lever —
<Bloom intensity={...} luminanceThreshold={0.18} mipmapBlur radius={0.8}/>; drive intensity by frame (ambient ~0.7 → spike ~5 at the drop → settle ~1.2). Emissive materials needtoneMapped={false}to bloom hard. - GPU particles:
<points>+ bufferGeometry positions rebuilt per frame inuseMemo([frame])(deterministic, no useFrame/random);AdditiveBlending,depthWrite={false}. Soft round dots, NOT squares: build a radial-gradientCanvasTextureand set it asmap+alphaMaponpointsMaterial(default point sprites are hard squares — always replace them). - Also:
ChromaticAberration(subtle, spike on the drop),Vignette,Noise(overlay ~0.16). Shockwave = expandingringGeometryadditive. DepthOfField for focal racks. - Reference scene:
src/scenes/SceneIgniteVFX.tsx(particle convergence → bloom charge → shockwave drop → wordmark resolve).
Music-theory timing (momentum + pacing)
Score motion to an implied track. system.ts: BPM, BEAT (15f@120BPM/30fps), beat(n), bar(n),
accel(count,startBeat,endBeat) (accelerando spawn frames). Hits land on beats; build-ups accelerate
into a downbeat "drop" (the flash); resolutions land on the next downbeat. Crescendo = ramp bloom +
particle convergence over a bar; the drop is the loudest frame; then resolve + sustain.
Morphing (controlled transformation)
kinetic.tsx: MorphText (variable-font wght/wdth morph — needs a variable font; weight snaps on static
fonts but tracking/color still morph), ColorMorph (interpolateColors across keyframes), ShapeMorph
(@remotion/paths interpolatePath A→B; keep command structure compatible). Use for stat numbers,
thesis words igniting, controlled color/weight shifts on key words, icon/shape transformations.
Session Notes
2026-06-16
- session: 8m | peak ctx: 0% | compacts: 0
- tools: Bash×48, Read×19, Edit×6, Write×3, Agent×3, Skill×1
- corrections: Base directory for this skill: /Users/marcelspatz/.claude/skills/cross-reference-navigation
Cross-Reference Navigation (XREF)
The GROUND step of the work loop, made reflexive. One question asked a | Base directory for this skill: /Users/marcelspatz/.claude/skills/quantum-hypothesis-simulation
Quantum Hypothesis Simulation
The quantum-probability layer for YURI's claim/pulse machinery. It mode | Base directory for this skill: /Users/marcelspatz/.claude/skills/cross-reference-navigation
Cross-Reference Navigation (XREF)
The GROUND step of the work loop, made reflexive. One question asked a
- errors: none
04 同仓库更多 Skills
zoom-out
Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.
yuri-shura
6-perspective adversarial review for high-stakes turns (architecture decisions, refactor planning, deployment review) — fans out architect, adversary (7-vector attack), maintainer, ops, product, and security perspectives in parallel, then consolidates. Use when user says 'review this decision', '/shura', 'adversarial review', 'what could go wrong', 'architecture review', or 'deployment review'.
yuri-sales-intelligence
Unified sales and outreach skill generating cold outreach openers, social selling sequences, objection rebuttals, and ad creative for any paid platform — multi-persona aware, adapting tone and offer frame to buyer type. Use when user says 'write a cold email', 'outreach sequence', 'objection handling', 'ad copy', or 'sales pitch'.
yuri-code-intelligence
Unified code quality intelligence layer that diagnoses code smells (Long Method, Feature Envy, design pattern issues), prescribes targeted Fowler refactoring techniques, and reviews code for security, performance, and clarity. Use when user says 'review this code', 'refactor this', 'what's wrong with this method', 'code smells', or 'clean this up'.
yuri-adw
Invoke when user asks to run the ADW loop / agentic engineering loop / software factory workflow.
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment