mcpField
M
motion-design-prompt-generator

motion-design-prompt-generator

github.com/8533502-dev创意与媒体437 次安装6 天前更新
代码仓库

关于 motion-design-prompt-generator

面向 AI 编码 Agent 的工作流技能,可将动态影片提示词转化为 Remotion 项目。它侧重保留提示词细节、预先规划时间线、设计各个元素并检查渲染结果。

主要功能

  1. 01提示词与变换清单
  2. 02设计契约与风格种子
  3. 03场景时间线规划
  4. 04元素专属设计指南
  5. 05评审与反模板检查
  6. 06确定性 Remotion 渲染

适用场景

  1. 01将简短创意扩写为影片提案
  2. 02根据提示词制作动态影片
  3. 03检查场景连续性与时序
  4. 04检查渲染帧并修订设计

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/8533502-dev/deepseek-opus-motion-skill --skill motion-design-prompt-generator

安装后在 Claude Code 中输入/motion-design-prompt-generator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

REFERENCE.md
安装说明.md
design-systems/
bold-poster.md
data-instrument.md
drafting-table.md
editorial-ink.md
README.md
riso-halftone.md
storybook-scene.md
swiss-kinetic.md
examples/character-rig/
README.md
examples/character-rig/src/
Film.tsx
examples/drafting-table/
README.md
examples/drafting-table/src/
Film.tsx
spec.ts
templates/remotion-starter/
package.json
tsconfig.json
templates/remotion-starter/scripts/
check.sh
cues.json
score.mjs
templates/remotion-starter/src/
Film.tsx
index.ts
Root.tsx
spec.ts
templates/remotion-starter/src/lib/
film.tsx
motion.tsx
templates/remotion-starter/src/scenes/
Scene01.tsx

详细介绍

Opus 同等水准的动态影片(Remotion)

**目标:**无论主题或风格如何,将同一条提示词分别交给 Opus 5.5 和运行此技能的模型,生成的影片在观感、动态和声音上都几乎相同。

差距很少在于审美,更多在于行为。Opus 会:

  • 遵循长提示词中的每一项要求;
  • 将模糊的词语转化为具体的设计决策;
  • 妥善设计每个元素,而不是用占位符敷衍了事;
  • 编码前规划完整时间线;
  • 构建一套共享系统,确保内容始终保持一致;
  • 检视自己的输出并加以修正。

如果不明确要求,较弱的模型会跳过上述每一项。此技能基于 Open Design 架构,将这些要求明确下来:

Open Design 组成部分本项目中的对应内容
负责工作流的功能性技能本文件:优先级、各阶段和元素操作指南
每次渲染都会读取的 DESIGN.md 契约src/spec.ts 顶部的设计契约;design-systems/*.md 是其起始模板
模板templates/remotion-starter/,已通过测试(完整源代码见 REFERENCE.md)
Design Jury 评审关卡第 6 阶段:五位评审,持续修正,直至每位评审的评分都达到 ≥ 8
防止低质生成的检查清单第 6 阶段的禁用清单
确定性渲染Remotion:每一帧都是帧编号的纯函数

优先级顺序

当规则相互竞争、需要取舍时,按以下顺序处理:

  1. 提示词本身的文字:每项价值、节拍、文案和禁用要求。
  2. 符合风格水准的视觉效果和工艺:构图、调色板、字体,以及每个元素的妥善设计(见操作指南)。质感和光线也属于这一项。这是观众最先评判的内容。
  3. 连贯性:真实的变换、持久一致的身份、可信的物理效果。
  4. 节奏和声音。
  5. 记录管理:台账、表格和检查。它们服务于第 1–4 项,绝不能取而代之。

辅助工具和示例只是实现机制,不是风格。 motion.tsx 决定元素的位置和运动方式,但绝不决定它们的外观。绝不可将辅助工具的中性默认效果(例如纯色方框或棍状四肢)直接当作设计交付。绝不可将某个示例的主题、调色板或布局照搬到另一部影片中。每部影片都必须有专属设计风格,其丰富程度至少不低于不使用辅助工具时的效果。

调用方式

  • 任何动态影片请求都要执行完整流程。不要提问:在第 1 阶段解决缺失信息,并在“解读”中说明。
  • 每条新提示词都是一部新影片,必须基于起始模板重新构建,即使此前的对话中已经制作过影片。只有用户明确要求修改时,才可复用先前的代码(修改、改一下、在上一版基础上、fix this)。在支持文件工具的宿主中,为影片创建新的项目文件夹。
  • 模式。 默认模式是构建。只要提示词 / 扩写 / “prompt only”模式会在第 2 阶段后停止,并将扩写后的简报放在一个围栏式 text 代码块中输出。
  • 宿主环境。 纯聊天环境:以代码块形式输出文件(第 7 阶段)。支持文件和 shell 工具的环境:写入文件,运行 npx tsc -p .、npm run render 和 npm run check,查看静帧并进行修正,然后汇报结果。
  • 如果消息中没有创意,唯一回复:“请给我一句话的创意或一段完整的提示词。”

阶段 0 — 像 Opus 一样阅读提示词:三本台账

  • 规格台账 S01…:每个数值或指令各占一行,并逐字引用。内容涵盖时长、尺寸、颜色、字体、字重、文案、数量、角度、位置、时间、缓动、禁用项、循环或结尾、角色以及每个分镜节拍。spec.ts 中的 FILM(时长、fps、尺寸)由这些条目确定;绝不能保留起始模板中的占位值。截断的提示词应沿用其最后一个完整部分的语气和信息密度补全,并将相应条目标记为 S##*。

  • 变换台账 X01…:记录每个表示变化的动词(becomes、turns into、gathers、dissolves、unfolds、grows into、变成、化成、收拢、汇聚、展开),格式为 source → target · mechanism · start–end s · what is conserved。

  • 元素台账 E01…:记录每个绘制对象,并按其操作手册分类(type、object、character、environment、data、UI、transition、texture-light、sound),同时列出:

    • 三个或更多结构特征;
    • 尺寸和坐标;
    • 移动方式;
    • 对于角色,列出设计稿和命名姿势;
    • 对于手持物品,记录各时间点的持有者。

    每个场景还要列出从后到前的图层顺序。

每个数值都具有约束力:不得对其取整、改名、改色、改时间或省略。长提示词的最后三分之一与开头同等重要。如果两条目冲突,保留更具体的一条,并在解读中注明。在代码中:

  • 常量放在 spec.ts,并标记为 // S07;
  • 构建器放在 film.tsx,并标记为 // E03;
  • 节拍放在场景文件中,并标记为 // S31 X02。

阶段 1 — 像 Opus 一样填补空缺

仅补充提示词未明确的内容;绝不覆盖台账条目。

空缺类 Opus 默认值
格式1920 × 1080;密集动态内容用 60 fps,平静或角色类作品用 30 fps。明确指定的格式具有约束力;快速预览时使用 npm run preview,绝不降低 FILM
时长和结尾概念短片为 15 s,作品集或品牌影片为 30 s。短循环和标识采用无缝循环;故事和宣传片采用完整的最终画面或片尾卡
节奏根据氛围确定节奏:舒缓为 60–90 BPM,品牌类为 110–128 BPM,活力充沛为 128–140 BPM。密集作品每拍都有一个事件,平静作品每小节都有一个事件。密集内容的停留时间 ≤ 0.5 s;平静内容则按文案所需时长停留
叙事用一个母题或载体贯穿影片;每个场景都从前一个场景自然延展;不使用无关的标题卡
摄影机除非提示词暗示有移动,否则固定并正面拍摄。故事类作品以完整世界的广角画面开场
构图根据风格的画面占比和留白来确定。静止内容距左右边缘不得小于 150 px,距上下边缘不得小于 90 px
字体排印选择一个有个性的字体系列。重点词或数字使用最粗字重和最大字号。拉丁字体:Inter、Geist、Space Grotesk、Fraunces;中文字体:Noto Sans SC、Noto Serif SC
色彩采用 3–5 种各有用途的颜色;强调色应预示接下来的内容
纹理和光线根据元素尺寸选择对应材质。光线应来自合理的光源
细节设计三个反复出现的微细节,让影片具有创作感(标签、刻度、图例、时间码、标识)。不得在提示词之外添加新的主张、数字或文案;提示词有明确措辞时应沿用
字幕任何屏幕上的对白、歌词或字幕:1080p 下字号 ≥ 40 px,对比度高,位于下三分之一处;完整句子应在其阅读时间内持续显示(每个汉字约 0.25 s,拉丁文每秒约 3 个词)
声音生成符合氛围的配乐;环境主导的场景则使用环境音。只有在明确要求时才保持静音

第 2 阶段 — 方向:从提示词中推导设计契约

风格来源:

  1. 提示词明确说明风格(配色、材质、字体、参考)。契约仅从记录表中得出。
  2. 提示词描述一种感受、媒介或参考(“像报纸”、“水墨”、“terminal”、“Swiss poster”、“Pixar-like”)。从 design-systems/ 中最接近的种子开始并加以调整。
  3. 提示词只有一个大致想法。 使用以下方法综合设计新契约。种子只是可选的起点,并非默认方案。

风格综合方法(适用于任何主题):

  1. 主题 → 世界。 这个主题存在于什么物质世界中?纸张、墨水、玻璃、金属、织物、屏幕、自然、城市、实验室。选一个,最多再选一个与之形成对比、用于转化的世界。
  2. 受众和情绪 → 能量。 平静还是有冲击力,温暖还是精准,活泼还是严肃。这决定节奏、缓动、超调和密度。
  3. 具体化。 用数值而不是形容词写出契约:
    • 配色: 带用途的十六进制值。
    • 字体: 字体系列、字重、字号、字距。
    • 视觉标记: 线条、填充和形状的绘制方式,采用 SVG 技法说明。
    • 纹理和光线: 分元素说明。
    • 构图: 占比、留白、边缘规则。
    • 动态特征: 按运动类型指定缓动。
    • 转场语法: 哪种机制改变哪一个场景。
    • 标志性细节。
    • 声音配色。
    • 禁用项。
  4. 检查是否流于俗套。 每项选择都必须能追溯到主题或提示词。泛泛的渐变、辉光和模板布局,正是设计契约要取代的内容。

design-systems/ 中的种子:

种子适用场景
drafting-table流程、工具、工程
swiss-kinetic品牌、发布、宣言
editorial-ink文化、工艺、传统、东亚主题
data-instrument解说、金融、科学
bold-poster音乐、体育、青年
riso-halftone独立、复古、活泼
storybook-scene角色、故事、MV

简短提示词: 先以 Opus 密度写出完整简报。简报包含方向段落、契约、结构(节奏、场景名称、场景变化)、角色(如有),以及带时间戳和数字的逐场景分镜。该简报将成为记录表。在仅提示词模式下,输出简报后即停止。

第 3 阶段 — 先定时间线,再写代码

  1. 每个场景写一行:start–end s · name · what the viewer learns · carried element in → out · transition out (X##)。
  2. 列出每个事件:t: element (E##) · action · numbers · ids。
  3. 在 T 块中标出关键时刻。
  4. 根据同一组事件推导声音提示列表。

继续之前的检查:

  • 节拍落在 60/BPM 的倍数上;
  • 每个场景的结束状态与下一个场景的进入状态一致;
  • 同一属性不会同时由两个动作驱动;
  • 所有内容都在结束前完成;
  • 对于循环,虚拟的 t = D 帧必须与第 0 帧一致,且所有运动都处于静止状态。

第 4 阶段 — 先设计,再制作动态效果

  1. 在模块级别根据每个元素的结构特征构建其几何形状。
  2. 对于角色,先制作一张角色设定表:在同一张静帧中呈现每个角色的所有指定姿势,并让角色拿着各自的道具。
  3. 将关键构图精确固定为以 px 为单位的布局:第 0 帧、每个场景或材质的首个完整帧,以及最终帧。逐一检查它们是否符合契约中的占比和留白要求。
  4. 在编写静态状态后,再编写它们之间的动态变化。动态效果无法挽救糟糕的静帧。在文件工具宿主中,先渲染并查看这些静帧。

元素制作手册

每个请求都由以下元素类型组成。针对每种元素,遵循其制作手册。

元素构建动起来检查(常见故障)
文字使用同一套字体;通过字重和字号建立层级;每种字号单独设置字距;大词排在一行,适配指定宽度;拆分的单词和字母之间保留空格;CJK 文字可以竖排以 EASE.out 入场;错开 0.02–0.06 s;通过槽位裁切、沿轨道滑动、缩放显现;离场前保持足够时间,确保可读单词连在一起、行尾孤字、字幕太小或对比度太低、最有冲击力的部分没有采用最粗的字重
物体(图标、道具、产品、符号)至少呈现真实物体的三个结构特征;用一侧阴影塑造体积;保持轮廓处理方式一致;将其构建为函数,仅构建一次根据物体特性运动:纸张沿折痕弯曲、液体泛起涟漪、金属绕轴旋转、灯光开关用符号代替物体、部件悬浮、不同镜头间比例不一致
角色使用 Body 设计表:轮廓、比例、颜色、面部、标记均通过 color、face 和 parts 设计;为姿势命名在命名姿势之间使用 poseMix 过渡,并以 settle 稳定姿势;行走时使用 walk();加入细微且易读的表演动作;道具放在 grip() 处,并绘制在 held 中不同镜头间外观漂移、手没有拿住道具、肢体穿过头部、默认采用火柴人外观、双脚离地
环境(房间、城市、景观、天气)从后到前分层:天空或墙面、远景、中景、地面、前景。光源及其光影形状要有明确依据。天气在画面中分布于两个深度保持持续的环境动态(天气、灯光、细小循环动作);除非有要求,否则摄像机保持静止背景过于平面、天气穿过实体、缺少合理的光照逻辑、画面边缘到边缘都很杂乱
数据(图表、计数器、示意图、地图)先确定坐标轴和单位;数值必须与数据台账完全一致;标签附在对应标记上;每个场景只放一张图表依次呈现坐标轴、数据、注释;计数器与对应标记同步滚动;图表通过共用槽位相互变形数字错误、坐标轴未标注、装饰遮盖数据、标签不符合提示词中的措辞
UI / 产品使用真实界面或忠实重现的界面,确保矩形边缘清晰、比例准确、层级真实由光标或状态变化驱动;放大到发生变化的区域截图拉伸、界面中出现虚假的杂乱元素、小字难以辨读
转场使用物理机制:变形(chain)、合并(converge)、遮罩或擦除(Reveal)、材质变化(在 Reveal 下使用两次 MaterialLayer)、展开、通过共享形状匹配衔接边缘清晰;按节拍规划;源元素消失的同时目标元素形成交叉淡化、使用提示词未要求的切镜、元素突然出现、材质变化时失去原有身份特征
纹理与光线将纸张与油墨分为独立图层(使用 Paper、由 roughFor 缩放的 InkFilter);通过图案实现网点和排线;用形状呈现光线(光锥、亮灯窗户、反射)使用固定种子并保持稳定,或按固定步长变化所有物体都使用均匀纹理、装饰性光晕或泛光、未设置随机种子导致闪烁
声音在 scripts/cues.json 中:音乐场景使用带有音高的背景音和旋律,或环境主导的场景使用 ambience 背景音;每次视觉冲击都配有音效与 T 区块同步;循环音轨的尾部衔接到开头因遗漏而无声、用噪声代替音乐、音效与画面不同步

通用规则

  1. 变形真实发生。 每一行 X 都会让同一个对象逐点变形(点数相同;多个形状用 chain(),多个对象合并为一个用 converge())。目标成形时,源对象消失。必须完全变成目标:如果提示词说“变成柱状图”,最终就要呈现为柱形。各部分从源位置诞生并移动。合并和拆分要保持数量守恒。绝不能用叠加、交叉淡化或缩放整个画面来伪造变形。
  2. 身份持续不变。 除非提示词另有说明,否则元素在每个场景和材质变化中都要保留其颜色、形状和槽位。只需将形状描述一次,作为带有调色板索引的 Item,并用 MaterialLayer 渲染每种材质。彼此变形的元素要共用一个槽位常量(路径、基线或锚点)。
  3. 明确表现物理效果和深度。 每个场景都要列出从后到前的图层。天气效果要遵循遮挡关系;玻璃后的物体要带有色调;反射要镜像其来源;阴影要共用一个光源方向。要计算接触位置:脚落在地面上,手接触所持物体。
  4. 空间词汇对应坐标。 在 1920 × 1080 的画面中,中心是 (960, 540);左右三分之一处的 x ≈ 640 和 x ≈ 1280;上方是 y ≈ 360;下方是 y ≈ 760。其他格式需按比例缩放。
  5. 节奏均匀。 屏幕变化要遵循节拍。重音是经过规划的节点;除非计划停顿,否则不能有空白秒数。用 npm run check 检查。
  6. 默认带声音,且只能通过 score.mjs 添加。音乐使用有音高的乐器;环境场景要有 ambience 氛围音轨;噪声点缀不得超过 1 s。脚本会拒绝既没有音乐也没有氛围音轨的配乐。
  7. 完成并检查。 完整编写每个场景,运行评审,并持续修复,直到每位评审者的评分都达到 8 分或以上。

第 5 阶段 — 在 Remotion 中构建

templates/remotion-starter/ (copy once)        tested on Remotion 4.0.537 + React 19.1.0
  src/index.ts src/Root.tsx      do not change
  src/lib/motion.tsx             helpers — do not change (API below)
  src/lib/film.tsx               your builders, Body sheets, Items (E##)
  src/spec.ts                    design contract, FILM, ledger constants (S##), T block
  src/Film.tsx                   master timeline: persistent layers, material changes, <Audio>
  src/scenes/SceneNN.tsx         one file per scene, absolute timestamps
  scripts/cues.json              sound cues (you write it) · score.mjs, check.sh — do not change

规则:

  • 时间。 只能使用 useTime(),其中 t 是绝对秒数。禁止使用 CSS 动画、计时器、Date、Math.random(改用 rand 或 wobble),也不能在帧之间保留状态。
  • 场景不能使用 <Sequence>。 每个场景都使用绝对时间 t,并在自身时间窗口之外返回 null。持久元素要在整个影片的 Film.tsx 中只绘制一次。
  • 缓动。 使用 EASE.* 和 settle()。Remotion 自带的 Easing.exp 在起始位置并非恰好为 0,会导致隐藏图层泄漏。
  • 文字。
    • 使用 HTML 排版,字母间距以 em 为单位;逐字母运动使用 <Letters>。
    • 图案填充、描边和裁剪使用 SVG <text>。
    • 竖排 CJK 使用 writingMode: 'vertical-rl'。
  • 字体。 从 @remotion/google-fonts/<Family> 使用 loadFont,并且只加载所用的字重;对于 CJK 字体系列,省略 subsets。
  • 声音。 FILM.sound = true 会播放 public/score.wav。npm run studio、npm run preview 和 npm run render 会先根据 cues.json 重新生成该文件。
  • 完整性。 不得留下 TODO。如果空间不足,请在文件末尾停止,并添加 // CONTINUE FROM <path>。

阶段 6 — 设计评审

五位评审分别打分,范围为 1–10 分。每位评审都要指出最差的时刻,并标注时间戳:

  1. SPEC. 每条 S、X 和 E 行都按其确切值实现。列出缺失或已更改的 id。此项评分会限制总分上限。
  2. CONTINUITY. 每条 X 行都是真正到达目标的变形,部件从其源位置生成。身份和位置在不同场景与材质间保持一致。物理效果和景深正确。
  3. RHYTHM & SOUND. 事件落在节拍上,缓动符合约定。能量保持均匀,没有计划外的突增或空白秒数。每次冲击都有对应音效,循环衔接干净。
  4. DESIGN.
    • 关键帧与布局一致;占比和留白符合约定。
    • 每个元素都通过其设计手册检查。放大静帧,检查字体、人脸、手、道具和数据标签。
    • 视觉风格应为这部影片量身设计,而非沿用辅助工具的默认风格或示例风格。
  5. CRAFT.
    • 纹理和光线应针对每个元素单独设计。
    • 影片具有确定性,并遵循 Remotion 规则。
    • 不得包含禁用项:未要求的渐变;发光效果(泛光、霓虹光晕、镜头光斑);通用淡入;禁止使用弹跳效果的场景中出现弹跳;粒子爆发、镜头抖动、RGB 分离;居中标题叠加卡片的布局;素材图标和表情符号;占位文案;任何看起来像模板的内容。以图形绘制、有合理动机的光线效果可以使用。

从最低分的评审意见开始,优先修复最严重的问题。每轮最多修复三轮,解决所有低于 8 分的评审意见。

在文件工具环境中:

  1. 运行 npm run render。
  2. 运行 TIMES="<key moments>" npm run check。
  3. 阅读 out/check/:包含图表、静帧、audio.png 和运动曲线。

必须修复每一条 FAIL:格式不匹配、残留的占位规格、缺失音频、第 0 帧颜色闪烁、循环衔接不佳。判断时优先相信静帧,而不是代码。

阶段 7 — 输出

仅聊天环境。 按以下顺序回复:

  1. 解读(使用用户的语言,≤ 6 行):风格来源、假设、冲突、推断出的 S##* 行。

  2. 台账和时间线,放在一个带 text 标记的代码围栏中(S、X 和 E 行、场景行、T 块),以便后续修复轮次使用。

  3. 文件:每个文件都放在代码块中,并以其路径作为标题:src/spec.ts、src/lib/film.tsx、src/Film.tsx、所有 src/scenes/SceneNN.tsx、scripts/cues.json。只有当用户没有起始文件夹时才打印起始文件,并从 REFERENCE.md 原样复制。

  4. 对齐表:

    • X## · 源 → 目标 · 辅助工具 · 文件;
    • E## · 设计手册 · 绘制的特征 · 构建器 · 跨材质保持的身份,以及每个角色随时间变化的姿势和道具;
    • format · W×H fps duration · S##。

    任何通过叠加、交叉淡化或整帧缩放完成的 X 行都不合格:回复前必须修复。

  5. 评审: 五项评分,以及你最不确定的三件事。

  6. 运行方法(使用用户的语言):

    • 复制 skill 包中的 templates/remotion-starter 文件夹,将文件放到对应位置(删除不用的 src/scenes/Scene01.tsx)。
    • 运行 npm install;如果提示 esbuild 需要批准,运行 npm approve-scripts esbuild && npm rebuild esbuild。
    • 使用 npm run studio 预览,npm run preview 导出半分辨率小样,npm run render 导出 out/film.mp4,使用 npm run check 自查。
    • 遇到问题时,截图发给我,并说“评审修复”。

后续操作。 继续 → 仅提供剩余文件。评审修复 → 根据静帧或代码运行阶段 6,然后仅输出已更改文件的完整内容。

文件工具环境。 根据起始模板创建项目,写入文件,然后运行 npx tsc -p .、npm run render 和 npm run check。根据静帧进行评审并修复,然后报告文件夹、评分和 MP4 路径。

辅助工具 API(src/lib/motion.tsx)— 完整源码见 REFERENCE.md

Time      useTime() → {t, fps, frame, D, width, height} · prog(t, start, dur, ease) 0..1
          settle(t, fps, landing, {lead=0.05, dur=0.45, bounce}) spring that lands on a beat
          EASE.out / in / inOut (exact expo) · smooth · snap · linear · mix(a, b, p)
          beats(bpm).at(n) / .bar(n) / .index(t) · rand(seed) · wobble(seed, i, t) · stepped(t, perSecond)
Shapes    Pt = [x, y] · polygon(cx, cy, r, sides, rot, n=96) · circle(cx, cy, r, n) · line(x1, y1, x2, y2, n)
          toPath(pts, closed) · morphPts(a, b, p) · morphPath(dA, dB, p) · drawOn(d, p) → spread on <path>
Transform chain(t, [{at, dur, pts, ease}, …]) one object through many shapes
          converge(t, [{pts, arrive, mass, travel}], target, {baseRadius, radiusPerMass}) → {shapes, radius}
Materials Item = {d, c, w?} | {text, x, y, size, font, weight?, c, anchor?, spacing?}  (c = palette index)
          <MaterialLayer items material palette id/> material: {kind:'flat'} | {kind:'paper', shadow, shadowOpacity, edge}
          | {kind:'line'|'glass', width, fill} | {kind:'halftone', inks:[hex…], pitch, offset, angle:[deg…]}
          inkCoverage(hex, inks) → coverage per ink
Characters Body = {torso:[w,h], head:[w,h], upperArm, foreArm, thigh, shin, limb, hand, foot,
          color:{body, head, limb, hand?, shoe?, shade?, line?}, face?(box), parts?{head, torso, limb, hand, foot}(box)}
          Pose = {x, y (ground), facing ±1, lean, head, mood, look, armL/armR:[shoulder, elbow], legL/legR:[hip, knee]}
          angles in degrees: shoulder 0 down · 90 forward · 180 up; elbow bends forward; knee bends back
          <Character body pose back held front/> · grip(body, pose, 'L'|'R') hand point · nearSide(pose)
          poseMix(a, b, p) · walk(t, base, stepsPerSecond, swing) · shadeHex(hex, k) · rig(body, pose) joints
Texture   <Paper color grain fibre/> · <InkFilter id edge grain boil seed/> (filter="url(#id)") · roughFor(sizePx, strength)
          <RoughFilter id scale freq step/> · <Grain opacity freq blend/> · <Grid pitch major color/>
Layout    <Stage bg/> · <Canvas> full-frame SVG · <Reveal p from="left|right|top|bottom|circle" at/>
          <Letters text t start stagger dur ease style(p, i) box/> (keeps spaces) · <Counter from to p decimals/>
Sound     scripts/cues.json {duration, bpm, loop, palette, bed[], patterns[], events[]} → npm run score
          instruments: pluck bell pad ambience(rain|wind|room) tick kick clap hat whoosh drop knock scratch boom
Commands  npm run studio · preview · render · check (format, frame 0, loop seam, sound, motion curve)

评论

支持 Markdown