返回 ppt-master
animations.md
根目录 / docs / zh / animations.md
1 # 页间转场与元素动画
2
3 [English](../animations.md) | [中文](./animations.md)
4
5 ---
6
7 PPT Master 会把**页间转场**和可选的**元素对象动画**写成真正的 PowerPoint
8 OOXML,而不是嵌入视频。对象动画包括进入、强调、动作路径和退出。本文只说明
9 用户需要做的选择和常用命令;精确效果映射、完整 sidecar schema、锚点规则与
10 封包校验统一由[动画执行规范](../../skills/ppt-master/references/animations.md)维护。
11
12 ## 默认行为
13
14 | 层级 | 默认 | 含义 |
15 |---|---|---|
16 | 页间转场 | `fade`,0.4 秒 | 页面之间使用克制的视觉过渡 |
17 | 元素对象动画 | **`none`(关闭)** | 每页一次性完整出现;只有当动效确实有助于表达时才开启 |
18
19 修改动画设置不需要重新生成页面,可以继续使用同一份 `svg_output/`。默认发布导出仍要求
20 当前匹配且通过的最终 SVG 质量报告;不存在这样的报告时,先运行最终检查并解决其中的
21 阻塞问题,再重跑 `svg_to_pptx.py`。
22
23 ## 常用操作
24
25 | 目标 | 命令 |
26 |---|---|
27 | 保持默认设置 | `python3 skills/ppt-master/scripts/svg_to_pptx.py <project>` |
28 | 更换页间转场 | `python3 skills/ppt-master/scripts/svg_to_pptx.py <project> -t push` |
29 | 关闭视觉转场 | `python3 skills/ppt-master/scripts/svg_to_pptx.py <project> -t none` |
30 | 每 5 秒自动翻页 | `python3 skills/ppt-master/scripts/svg_to_pptx.py <project> --auto-advance 5` |
31 | 开启自动元素入场 | `python3 skills/ppt-master/scripts/svg_to_pptx.py <project> -a auto` |
32 | 全部使用同一种入场效果 | `python3 skills/ppt-master/scripts/svg_to_pptx.py <project> --animation entrance_fade` |
33 | 单击逐个揭示元素 | `python3 skills/ppt-master/scripts/svg_to_pptx.py <project> -a auto --animation-trigger on-click` |
34 | 所有元素同时入场 | `python3 skills/ppt-master/scripts/svg_to_pptx.py <project> -a auto --animation-trigger with-previous` |
35 | 放慢逐步揭示节奏 | `python3 skills/ppt-master/scripts/svg_to_pptx.py <project> -a auto --animation-duration 0.5 --animation-stagger 0.8` |
36
37 ## 选择页间切换
38
39 | 相邻页面关系 | 优先考虑 |
40 |---|---|
41 | 同一章节内的普通连续叙述 | `fade` |
42 | 无需保留连续性的直接切换 | `none` 或 `cut` |
43 | 有明确方向的步骤、时间线或可见层级推进 | 按语义方向使用 `push`、`wipe`、`cover` 或 `uncover` |
44 | 同一对象或场景的位置、尺寸、裁切或外观发生变化 | `morph` |
45 | 章节开场、关键揭示或明显状态边界 | 少量使用 `split`、`reveal`、`shape`、`flash` 或 `random_bars` |
46 | 重复内容在同一空间框架中连续推进 | `pan`、`conveyor` 或 `ferris_wheel`;单个对象需要保持身份时使用 Morph |
47 | 视点围绕或穿越一个连续空间 | `rotate`、`window`、`orbit` 或 `fly_through` |
48 | 主题适合舞台、纸张或实体翻页隐喻 | 少量使用 `fall_over`、`drape`、`curtains`、`wind`、`prestige`、`peel_off`、`page_curl`、`airplane`、`origami` 或 `doors` |
49 | 破坏性节点表达断裂、坍塌或消散 | 少量使用 `fracture`、`crush`、`dissolve`、`vortex` 或 `shred` |
50 | 关键揭示适合几何、计时或纹理图案 | 少量使用 `checkerboard`、`blinds`、`clock`、`ripple`、`honeycomb`、`glitter` 或 `comb` |
51 | 卡片、面板、图库或视角发生可见翻面 | 少量使用 `switch`、`flip`、`gallery`、`cube`、`box` 或 `zoom` |
52
53 没有其他切换能增加表达意义时,保留 `fade` 或 `none`。不要只为制造变化而
54 更换效果;只有“不确定性”本身就是意图时才使用 `random`。
55
56 48 个规范页间切换标识已经覆盖当前 PowerPoint 效果库的三个完整分组:
57
58 - 细微:平滑 `morph`、淡入/淡出 `fade`、推入 `push`、擦除 `wipe`、
59 分割 `split`、显示 `reveal`、切入 `cut`、随机线条 `random_bars`、
60 形状 `shape`、揭开 `uncover`、覆盖 `cover`、闪光 `flash`。
61 - 华丽:跌落 `fall_over`、悬挂 `drape`、帘式 `curtains`、风 `wind`、
62 上拉帷幕 `prestige`、折断 `fracture`、压碎 `crush`、剥离 `peel_off`、
63 页面卷曲 `page_curl`、飞机 `airplane`、日式折纸 `origami`、溶解
64 `dissolve`、棋盘 `checkerboard`、百叶窗 `blinds`、时钟 `clock`、
65 涟漪 `ripple`、蜂巢 `honeycomb`、闪耀 `glitter`、涡流 `vortex`、
66 碎片 `shred`、切换 `switch`、翻转 `flip`、库 `gallery`、立方体
67 `cube`、门 `doors`、框 `box`、梳理 `comb`、缩放 `zoom`、随机
68 `random`。
69 - 动态内容:平移 `pan`、摩天轮 `ferris_wheel`、传送带 `conveyor`、
70 旋转 `rotate`、窗口 `window`、轨道 `orbit`、飞过 `fly_through`。
71
72 旧标识 `strips`、`circle`、`diamond`、`newsflash`、`plus`、`pull`、
73 `wedge`、`wheel` 只保留为兼容输入;新 sidecar、计划、轨迹和输出只使用规范
74 标识。兼容输入会反糖化为一个原生效果及其效果选项,例如 `diamond` 会变成
75 `shape` 加 `shape: diamond`,`wedge` 会变成 `clock` 加 `style: wedge`。
76
77 原生 PowerPoint 效果选项写在 `transition.effect_options` 中。方向、形状、
78 图案、Morph 范围、黑场、卷页数量和弹跳等参数都会按所选效果严格校验。运行
79 `python3 skills/ppt-master/scripts/pptx_animations.py --describe-transition <effect>`
80 可查看精确取值。`-t none` 只关闭视觉效果,不会移除显式设置的自动翻页计时。
81
82 ## 选择 Start 模式
83
84 | Start 模式 | 行为 | 适用场景 |
85 |---|---|---|
86 | `on-click` | 每次单击显示一个内容组 | 由演讲者控制节奏的现场演示 |
87 | `with-previous` | 页面出现时所有内容组同时入场 | 一次协调完成的整体入场 |
88 | `after-previous`(默认) | 各内容组无需点击,按顺序自动出现 | 展厅循环、录屏走查和旁白 deck |
89
90 `--recorded-narration` 不支持 `on-click`;带旁白或用于视频导出的 deck 应使用 `after-previous` 或 `with-previous`。
91
92 ## 选择对象动画
93
94 从 `none` 开始。只有对象运动承担明确沟通任务时,才先选择生命周期,再选择
95 视觉效果:
96
97 | 沟通任务 | 选择 | 使用边界 |
98 |---|---|---|
99 | 按阅读或旁白顺序揭示信息 | `auto` 或原生 `entrance_*` | 这是最常见的对象动画场景 |
100 | 让已经可见的对象重新获得关注 | 显式 `emphasis_*` | 不用于对象第一次出现 |
101 | 表达有意义的空间或因果移动 | 显式 `path_*`,或在相邻页间使用 Morph | 路径本身应承载意义;刻意设计的背景氛围运动属于高级例外 |
102 | 在同一页移除、替换内容或腾出空间 | 显式 `exit_*` | 普通翻页已经会移走旧页面 |
103 | 为通用进入效果增加确定性或固定种子变化 | `mixed` 或 `random` | 两种模式仍只选择进入效果 |
104 | 没有明确的运动任务 | `none` | 保持静态 |
105
106 规范注册表包含 203 个 PowerPoint 原生标识:53 个进入、33 个强调、64 条
107 动作路径、53 个退出。现在新选择、sidecar、自动决策、转换轨迹和示例都只使用
108 带类别前缀的规范名称。`auto`、`mixed` 与 `random` 只会选择进入效果;强调、
109 动作路径与退出必须使用显式规范标识。29 个旧短名称只保留为兼容输入,写入前会
110 归一化,不再维护第二套动画行为。旧 Fly 方向名统一映射到 `entrance_fly`,旧
111 Wipe 方向名统一映射到 `entrance_wipe`;方向会保留为参数,而不会形成新的规范
112 预设。旧 `wheel` 保留四辐语义。运行
113 `python3 skills/ppt-master/scripts/pptx_animations.py --list` 可查看完整分类清单。
114 4 个媒体播放命令需要媒体或书签目标,仍由音视频工作流负责。
115
116 ## 自定义具体对象
117
118 只有当整份 deck 的统一设置不够用时才需要 `animations.json`,例如让同一对象
119 进入、移动、获得强调后再退出。先列出真实分组,只为受影响页面和对象写稀疏覆盖,
120 然后校验并导出。`scaffold` 是可选的中性编辑起点:其默认对象效果为 `none`,
121 未修改的 `{}` 分组条目不会开启动画。
122
123 ```bash
124 python3 skills/ppt-master/scripts/animation_config.py list-groups <project>
125 python3 skills/ppt-master/scripts/animation_config.py validate <project>
126 python3 skills/ppt-master/scripts/svg_to_pptx.py <project>
127 ```
128
129 sidecar 以稳定的顶层 `<g id="...">` 内容组为目标。group ID 是 PowerPoint
130 shape target 锚点,不等同于 Animation Pane 中的一行。兼容的单效果对象仍生成
131 一行;`effects[]` 可以生成多条有序记录,并让它们共同指向同一 shape:
132
133 ```json
134 {
135 "version": 1,
136 "slides": {
137 "03_threshold": {
138 "animation": { "trigger": "after-previous" },
139 "groups": {
140 "risk-marker": {
141 "effects": [
142 { "effect": "entrance_fade", "order": 1, "duration": 0.25 },
143 { "effect": "path_right", "order": 2, "delay": 0.1, "duration": 0.7 },
144 { "effect": "emphasis_teeter", "order": 3, "trigger": "with-previous", "duration": 0.45 },
145 { "effect": "exit_fade", "order": 4, "trigger_shape": "details-button", "duration": 0.3 }
146 ]
147 }
148 }
149 }
150 }
151 }
152 ```
153
154 一个已填写的分组只能使用旧单效果字段或 `{ "effects": [...] }`,不能混用。
155 `effects` 必须非空,且每一行都要显式声明 `effect`。现有单效果 sidecar 完全兼容。
156
157 常用动画行字段如下:
158
159 | 字段 | 用途 |
160 |---|---|
161 | `effect` | 选择一个显式效果;旧单效果形式可用 `none` 让对象保持静态 |
162 | `trigger` | 覆盖本行的 Start 模式;省略时继承页面动画 trigger |
163 | `order` | 设置普通动画行的整页顺序且不改变图层;trigger-shape 行保留在独立交互序列中 |
164 | `delay` | 给本行解析后的 Start 行为增加等待时间 |
165 | `duration` | 覆盖本行的动画排程时长 |
166 | `effect_options` | 设置效果适用的 `direction`、`amount`、`color`、`font_name`、`relative` 或 `size` |
167 | `trigger_shape` | 单击另一个顶层内容组时触发本行(PowerPoint“单击下列对象时”) |
168 | 计时修饰 | `repeat_count`/`repeat_duration`、`auto_reverse`、`rewind`、`accelerate`、`decelerate`、`bounce_end` 与 `restart` |
169 | 播放完成 | `after_effect`(变暗/隐藏)和 `.m4a`/`.mp3`/`.wav` `sound` 路径 |
170
171 `order`、`delay`、`duration`、`trigger` 与 `trigger_shape` 都按动画行独立解析。
172 页面级动画 trigger 只负责提供继承值。`trigger_shape` 隐含 `on-click`;若同一行
173 也显式写了 `trigger`,其值必须是 `on-click`。
174
175 运行 `python3 skills/ppt-master/scripts/pptx_animations.py --describe
176 <canonical_effect>` 可查看该效果实际接受的完整参数。速度由 `duration` 控制,
177 平滑开始/结束由 `accelerate`/`decelerate` 控制。Change Font 的 `font_name`
178 必须是目标环境已安装的一个具体 PowerPoint 字体名,不能写 CSS 字体列表。
179
180 `trigger_shape` 指向同一页另一个分组 id,并且只影响所在动画行。录制旁白不接受
181 任何最终解析为 `on-click` 的动画行,其中包括 `trigger_shape` 行。
182
183 当用户要求 AI 调整具体对象时,使用 [`customize-animations`](../../skills/ppt-master/workflows/stages/customize-animations.md) 阶段。完整 sidecar schema 与目标校验规则仍由[动画执行规范](../../skills/ppt-master/references/animations.md)维护。
184
185 ## 校验与兼容性
186
187 PPT Master 会严格校验动画设置:未知效果或 Start 模式、非法计时、缺失页面/分组引用,以及尝试给结构对象加动画都会直接失败,不会静默改成另一种行为。导出还会在替换现有产物前回读候选 PPTX。
188
189 | 边界 | 对用户的影响 |
190 |---|---|
191 | 动画目标 | 元素动画作用于逻辑顶层内容组锚点;一个锚点可以拥有多条 Animation Pane 记录 |
192 | 静态结构 | 背景、Master/Layout 内容、placeholder 与页面框架保持静态 |
193 | 不支持的对象 build | 不会从分组 SVG 推导段落/文字范围 build、自定义自由动作路径、原生 Chart/SmartArt 分步 build 或媒体播放命令 |
194 | 输出路线 | 动画存在于从 `svg_output/` 生成的原生 PPTX;`svg_final/` 只是静态预览 |
195 | 现有 PPTX 路线 | Template Fill 与 Native Enhance 保留源对象动画,不把它翻译成生成路线的动画模型 |
196 | 播放兼容性 | Microsoft PowerPoint 桌面版是主要验证目标;Keynote、WPS、LibreOffice 与较旧 Office 可能重新映射或忽略个别效果 |
197
198 完整 CLI 说明见 [`svg-pipeline.md`](../../skills/ppt-master/scripts/docs/svg-pipeline.md)。精确效果定义、sidecar 要求、锚点回退逻辑与 OOXML 回读规则见[动画执行规范](../../skills/ppt-master/references/animations.md)。
199
199 lines MARKDOWN