☰
PPT Master 逐页逐对象动画定制(Customize Animations)阶段实战指南:从 `animations.json` 编排到 Morph 确定性配对
2026/10/12 22:11:15 网站建设 项目流程
  • AI 技能
  • 人工智能

【免费下载链接】ppt-master

AI 把任意文档生成真正可编辑的 PowerPoint —— 原生形状与动画、演讲者备注可合成音频旁白、还能参考你自己的 .pptx 模板,而不是一张张图片 · 何雨果出品

项目地址:https://gitcode.com/hugohe3/ppt-master
点击查看免费下载

本指南以 PPT Master 生成流程中可选的 Customize Animations 后处理阶段为核心,系统讲解逐页(slide-level)与逐对象(object-level)动画的完整定制链路:何时触发该阶段、如何基于语义单元重建动画锚点、如何规划页切换与页内生命周期、如何编写稀疏的animations.json边车文件、如何校验并交还导出主流程。读者学完后,可以独立完成"用户要求逐对象揭示顺序、效果、时序"或"已有animations.json需要调整/替换"的完整编排任务,并能将成果对接讲者备注、音频旁白与视频运动计划。

阶段定位:什么情况下才需要运行它

Customize Animations 是 Generate-PPTX 流程中一个可选的后处理阶段,位于最终 SVG 质量门之后、导出之前。它处理的是"逐页 / 逐对象"级别的运动定制,与整副(deck-wide)的页切换、自动播放或统一入场策略走完全不同的两条路径。

运行条件判定表

条件动作
design_spec.md §I中有效 Custom Animations 结果已启用在最终 SVG 质量门与讲者备注之后、Generate Step 7 之前运行;§IX 的建议仅作参考
用户要求逐页或逐对象动画、揭示顺序、时序或效果变更运行
项目中已存在animations.json运行,以解决 preserve / adjust / replace / suppress 意图后再导出
仅有 §IX 的Motion suggestion,无上述触发条件不运行;保留建议,使用正常导出默认值
无请求、无结果、无边车文件不运行;导出保持页切换、无构建动画
仅需整副页切换、自动播放或单一逐元素策略,无边车不运行;直接通过导出器 flags 应用 animations.md,如-a auto或-a emphasis_spin
仅需页切换音效,无对象运动或边车不运行;导出时按 animations.md §2.2 解析稀疏切换边车
请求了对象动画音效运行——提示音必须绑定到已解析的行与真实目标
svg_output/*.svg缺失先完成 Executor 阶段

决策优先级:最新的显式指令 → 最终 Stage-2 策略 → 工作流默认false;出处(provenance)保留在 §I,绝不写入spec_lock.md。最终 Stage-2 为false只阻止新建,不影响已存在的边车;显式禁用按上表处理且不删除边车。

从 generate-pptx.md Step 6 的 "Motion execution (conditional)" 一节可以看到:已存在的animations.json在导出前总是运行该阶段;没有边车时,仅当存在显式逐页/逐对象请求或 §I 启用的 Custom Animations 结果才运行——§IX 建议只作参考、永不触发它。而整副级请求则改走 animations.md 并解析 Step 7.3 的 flags。

1. 解析意图并读取语义上下文

编辑animations.json之前,必须先读取所有已存在的语义文件:

  • design_spec.md:内容意图、叙事角色、强调重点;
  • spec_lock.md:页面节奏、布局角色、图表/模板约束;
  • notes/total.md或notes/*.md:讲者流程,用于揭示顺序、延迟与强调。

这些文件提供信息但不限制该阶段:缺什么就说明缺什么,然后用其余部分加可见的 SVG 内容继续;如果全都没有,只能依据显式指令、可见 SVG 与 animations.md 的解析规则,不得推断超出页面本身所表达内容的编排。

已存在边车的意图分派

已存在边车的意图动作
显式禁用 Custom Animations保留并校验边车;返回-a none
显式禁用全部运动保留并绕过它;返回--no-animations
显式要求重新生成 / 重写 / 替换重建分组计划并替换animations.json;先前的编排不构成约束
显式要求调整 / 微调 / 修复先校验;保留有效的语义单元;重组后迁移受影响的引用
阶段激活时已有边车且带新的 §IX 建议,无替换请求先校验;保留有效编排,仅调整受影响的单元
无边车且无新指令校验并原样保留;导出前修复无效的边车 / 分组引用
花名册变更(插入、删除或重编页)同步重命名页键,将每个 Morph 的from重新指向新前一页,并随页面移动预览组的端点;然后校验
请求含糊默认按"重新生成或修改"处理;Quick 根据请求、SVG 与边车自行决定

除非全运动禁用绕过校验,否则必须先校验已有边车:

python3 ${SKILL_DIR}/scripts/animation_config.py validate <project_path>

其 CLI 实现位于 scripts/animation_config.py:validate会先做纯字段级校验(validate_transition_config+validate_animation_config_errors),再做项目级引用校验(validate_animation_config),后者解析声音文件路径、扫描 SVG 目标、检查重复 id、缺失页/组、隐藏组与结构层目标。

硬规则:语义文件决定运动意图与单元边界;当前svg_output/*.svg提供可见内容与实现结构,其既有的<g>层级绝不因为存在而被当作计划。

决策所有权——先理解,再设计:§IX 的Motion suggestion描述的是沟通职责与关系,它既不激活本阶段也不锁定实现。理解它,先绑定其记录的 Morph 候选(它们的端点组已存在),再从最终 SVG 的语义单元、可见状态、构图与讲者流程出发制定运动简报——绝不是机械地映射到分组、效果、顺序或时序。Executor 可以保留、适配、简化、拒绝或选择none;显式用户需求有约束力;绝不为了合理化动画而修改页面内容。

硬规则——现有可见层边界:只在 §2 视觉等价条件下重组;绝不为了运动创建或修改裁剪层、对比层、遮罩、镜头、热点、标注或其他可见图像状态。当所需状态缺失且普通 Slide-local 创作可提供时,返回 Generate Step 6,重跑最终门(启用时含备注),再继续;当结构边界阻止时,将非约束性建议简化为合法单元、页切换或none,显式需求则走 failure recovery。

无操作即完成(No-op is complete):若无边车、每页都应保持默认fade切换且无构建动画、且没有未满足的显式需求,则不改动任何 SVG、不创建边车,直接返回 Step 7。永远不要为了展示能力而编排动画。

2. 重建语义运动单元并列出锚点

对象级运动进入范围时必须做"内容优先的分组审计":在把任何顶层<g>当作锚点之前,先对照每个受影响页面的可见内容与其沟通职责、讲者流程进行审查。受影响集合 = 被采纳建议或显式请求点名的页面 + 每个 Morph 对的两个端点;未受影响页面无需审计;纯页切换计划(无 Morph 对)跳过重组与列组。

内容条件 → 分组动作

内容条件分组动作
一个组容纳了多个独立叙述的行、卡片、步骤、主张或阶段拆分为描述性的直接根级兄弟组,每组一个单元
一个单元分散在多个组或根图元中将其背景、图标、标签、数值与文本合并/包裹进一个直接根级组
连接线或箭头解释进入某个节点/阶段与使其可理解的关系或目标放在一起
主视觉、总览图、结论或警告有独立角色独立成组
同一对象跨相邻 Morph 页延续将每个端点隔离为兼容类型的直接根级<g>;承载静态角色(decoration、background)的根图元不可配对——先包裹为组
两个叙述阶段在几何上互锁(预设接头、刻意重叠)保持一组——兄弟组不能持有不相交边界——让一个方向性效果沿阅读路径行进
多个原子表达一个不可分割的想法保持在一起
页面铬(chrome)、结构层、静态取景保留;用 animations.md §5 判定目标资格

硬规则——视觉等价:重组只改变对象边界——保留每一个可见像素、绘制顺序、坐标、变换、继承的绘制属性、不透明度、裁剪、滤镜、引用与原生元数据;扁平化可能改变外观时保持承载渲染的包裹层嵌套。硬规则——结构边界:绝不跨data-pptx-layer、data-pptx-placeholder、原生图表/表格载体、原生预设或导入逻辑对象边界拆分/合并;将整个预设连同其标签包裹在一个有界父组中不构成跨边界合并;普通直接根组遵循 shared-standards-core.md §4.3(描述性唯一id、正的根坐标data-pptx-bounds、嵌套组无 bounds)。

禁止——先列表后编排:在审计前从list-groups挑选效果或顺序;因为有id就保留粗包裹;把一个想法拆成形状/线条来提高数量;为降低数量而合并无关想法;给 SVG 添加动画data-*属性。不存在目标组数量。

重组后的校验与列组

任何重组之后,先重跑最终门,再列出后重组的锚点:

python3 ${SKILL_DIR}/scripts/svg_quality_checker.py <project_path> --canonical-authoring --stage final --json # Quick 流程在 --stage 前插入 --quick-generate python3 ${SKILL_DIR}/scripts/animation_config.py list-groups <project_path>

list-groups每页输出一行,铬组被排除并在行尾点名。铬名判定依据 scripts/svg_to_pptx/animation_config.py 中的is_chrome_id逻辑:id 等于或含-/_分隔 token 的bg/background/header/footer/decor/decoration(s)/chrome/nav/watermark/logo/pagenumber/pagenum/slidenumber/slidenum/rule均视为铬(所以takeaway-rule按名字即为铬);而*-header/*-footer组若持有页面最大字号文本,则被识别为标题块而非铬,继续保留在列表中(对应源码中的_holds_page_title与_page_reference_size中位数判定)。

这份列表是 §3–§4 唯一的页键与组键来源。若需要起始文件,可在重组后运行animation_config.py scaffold <project_path>——它生成中性的可编辑脚手架(默认对象效果none,组为{}占位),创建它本身不选择任何东西,也无需完整阅读。其默认值结构(transition: fade/0.4s、animation: none/0.4s/stagger 0.5/after-previous)直接来自 scripts/svg_to_pptx/animation_config.py 的build_scaffold。

3. 规划页与对象运动

必须:编辑前为每个受影响页面规划所需层级——页切换(defaults.transition/slides.<slide>.transition)、确定性 Morph 对(slides.<destination>.morph)、页动画默认(defaults.animation/slides.<slide>.animation)、对象生命周期(slides.<slide>.groups.<group_id>,作为单条 legacy 行或有序effects[])。局部对象请求无需整副切换审查。

逐受影响页的运动简报:先分类沟通职责(含 none)与每个单元的生命周期——页面的主载体(展示图、主图、图表)带有意图进入,取景元素(字母、slug、数字)在每页行为一致,支撑装饰(小涂鸦、箭头、花饰)保持静止——但解读动画单元的说明文字、阅读行或备注在阅读路径上:与单元同时或随后进入,绝不先于它可见;只选择必需的切换、效果、顺序、时序与一个主导 Start 节奏;顺序遵循阅读路径——取景页的 slug、数字或标题先于其所取景的单元进入,未列出的组取其上最近已列出组的位置(pptx-animations.md §8),所以只对偏离默认的项编号;仅为独立职责混用模式或添加强调/退出效果,且效果克制。必须——按意义而非目录覆盖面选择:选任何具体效果前先跑 animations.md §3–§4 的页面关系与生命周期 playbook;候选只是回忆辅助。标题运动:先分类生命周期,再选即时、延迟、同步、主图后或旁白提示时序;使用 animations.md §5 的边车覆盖,并在动画化前修复错误的结构标记。默认——继承未受影响的层(页面职责需要时可覆盖):切换与未触及页面保持默认;只有页面需要时才加 slide 级transition。时序:密集/重复扫描内容更短,转折点、主图、章节边界与结论更长;统一时序同样有效。参考——运动判断:在几何之前先定职责、生命周期、基调、受众顺序与方向是否携带含义;不能带来清晰或感受的单元就是static(none、entrance_appear、entrance_fade仅在符合生命周期时可用);仅布局方向无需运动;变化追随内容或基调,绝不为凑数。

3.1 支持的页切换

animations.md §3 中的 48 个规范原生效果之一(pptx_animations.py --list可查全量);旧名称仅作兼容输入。字段——effect、effect_options(仅所选效果的原生选项:先运行pptx_animations.py --describe-transition <effect>)、duration、auto_advance、sound——遵循 pptx-animations.md §8。跨页延续且不能依赖 PowerPoint 自动匹配时,在目标页声明一个morph块(animations.md §2.1)。

典型页面关系与候选家族包括:同章节普通延续 →fade;无延续的立即变化 →none或cut;方向性步骤/时间线/层级推进 →push/wipe(可见覆盖关系用cover/uncover);相邻页同一对象或场景变化 →morph;章节开场/关键揭示/状态边界 → 选择性split/reveal/shape/flash/random_bars;空间取景中的重复集合推进 →pan/conveyor/ferris_wheel;视点环绕连续空间 →rotate/window/orbit/fly_through;纸面/实体页隐喻 → 选择性fall_over/drape/curtains/page_curl等;破裂/坍缩/离散 →fracture/crush/dissolve/vortex/shred;几何/定时/纹理揭示 →checkerboard/blinds/clock/ripple/honeycomb/glitter/comb;卡片/面板/图库翻转 →switch/flip/gallery/cube/box/zoom;明确要求不可预测性 →random(绝不用于变化本身)。

3.2 支持的页内动画

animations.md §4 的 203 个规范键(pptx_animations.py --list打印分类清单);auto/mixed/random仅提供通用入场,绝不选择强调、路径或退出。硬规则——显式语义编排:当计划依赖特定生命周期、关系或顺序时,必须以显式规范效果与顺序瞄准真实组;泛型模式仅在泛型入场处理足够时有效。Start 模式:

  • after-previous:无点击级联(click-free cascade);
  • with-previous:一个协调节拍(coordinated beat);
  • on-click:受控揭示。

这三个 Start 值对应源码中的ANIMATION_TRIGGERS,在 OOXML 中分别写为p:cTn@nodeType的afterEffect/withEffect/clickEffect(见 scripts/pptx_animations.py 与 pptx-animations.md §5)。

生命周期先于效果:从static出发,分类initial → action → end,再选效果。static(present → hold → present)无行,legacyeffect: none仅抑制继承;enter(absent → introduce → present)用entrance_*;emphasize(present → redirect → present/altered)用显式emphasis_*,且绝不是首次揭示;move(A → progress → B)用显式path_*或端点页 + Morph;exit(present → retire → absent)用显式exit_*。默认保持"克制的入场主导编排":普通构建用入场;强调或退出仅当有真实职责;多条effects[]行仅当有多个职责。

3.3 可选音效通过(Sound Pass)

仅在视觉切换、生命周期、效果、顺序与时序全部完成后,才运行 animations.md §2.2 的可选音效通过:选定的项目相对.wav放入transition.sound、animation.sound或组/效果行;项目中用户提供的音频若格式有效,使用其自身路径。增益、限幅与视频混音属于 generate-audio,绝不进入该边车。

音效的完整物料化路径是sound_sync.py(如python3 skills/ppt-master/scripts/sound_sync.py <project_path> <namespace>/<sound_id>),它是唯一的库物料化通道;导出器从不直接读templates/sounds/,边车存的是路径而非 id。默认保持静默——绝不为了展示能力或凑覆盖率而加音效。

4. 编辑animations.json

硬规则——稀疏覆盖引用真实目标:只写受影响的页面,且只写与导出器或边车默认不同的字段;未列出的 SVG 继承整副设置;列出的页面只携带其覆盖的transition、animation、groups或morph字段;defaults可选且仅整副。禁止:svg_output/中不存在的页面;缺失、含糊或结构性的组;枚举每个组来复述页默认;SVG 中的动画data-*属性。

硬规则——单组表示:填充的groups.<id>要么用 legacy 单效果字段,要么用effects[],绝不同时使用;未触碰的脚手架{}是中性的;省略的行值继承已解析的页面值。每个字段、其范围与继承见 pptx-animations.md §8;写参数化效果前先运行pptx_animations.py --describe <canonical_effect>;Change Font 必须给出一个目标已安装字体,而非 CSS 栈。多类别effects[]示例见 animations.md §2,双页 Morph 示例见其 §2.1(绝不把源组复制进目标groups来建立同一性);单行覆盖保留 legacy 对象,绝不机械转换旧边车。

稀疏边车示例(多职责生命周期)

animations.md §2 的规范示例展示了同一个对象依次承担 enter → move → emphasize → exit 四种职责:

{ "version": 1, "slides": { "03_threshold": { "groups": { "risk-marker": { "effects": [ { "effect": "entrance_fade", "order": 1, "duration": 0.25 }, { "effect": "path_right", "effect_options": { "relative": true }, "order": 2, "duration": 0.7 }, { "effect": "emphasis_teeter", "order": 3, "duration": 0.45 }, { "effect": "exit_fade", "order": 4, "duration": 0.3 } ] } } } } }

契约:slides键是 SVG stem,groups键是顶层<g id>锚点。填充组 = legacy 单效果对象或{ "effects": [row, …] },二选一;{}为中性占位;legacyeffect: none将该组从序列中移除;行字段含effect、order、delay、duration、trigger/trigger_shape、effect_options以及 repeat / reverse / timing-ratio / restart / after-effect / sound 修饰符;未列出的页面与省略字段先继承defaults再继承 CLI;--animation none禁用所有逐元素动画;--no-animations连切换一起移除。

确定性 Morph 对象配对

当同一语义对象跨相邻页延续时,目标页声明强制 Morph 对——与groups分离(Morph 拥有跨页同一性,groups拥有动画窗格行):

{ "version": 1, "slides": { "02_detail": { "transition": { "effect": "morph", "effect_options": { "morph_by": "object" }, "duration": 0.8 }, "morph": { "from": "01_overview", "pairs": { "hero-image": { "from": "hero-overview", "to": "hero-detail" } } } } } }

配对规则要点:morph属于目标页,morph.from是导出顺序中的紧邻前一页 stem;scaffold从不猜测同一性——从最终直接根 id 检查后的运动计划添加配对;配对键是稳定同一性,其from/to是两页上唯一的直接根<g>id,写入时不带!!(导出会在两页写入选择窗格名!!<key>);带静态角色标记的根图元不可配对,Native-ready=yes的图表/表格在--native-charts-and-tables下会变成 graphicFrame 导致导出失败,结构化页面上的data-pptx-placeholder槽位会被导出重写为布局占位符——应配对 Slide-local 组;带配对的页面必须显式设置effect: morph(morph_by省略或object;word/character被拒绝);中间页可在同一键下将对象延续进另一个 Morph;一个键绝不同时命名同一页的两个对象、一个对象也绝不携带两个键,相邻 Morph 页共享的每个!!键都必须被声明;配对与页内动画共存且在-a none下依然有效,--no-animations禁用一切;导出校验每个配对,失败即中止而不是回退(对应源码 scripts/svg_to_pptx/animation_config.py 中_resolve_morph_pairs的严格检查:from必须指向紧邻前一页、首页不能声明入向 Morph、源/目标组不能重复赋值、键必须唯一且不能含!!前缀)。

字段参考表(animations.json校验并消费的全部字段)

下表依据 pptx-animations.md §8 的完整字段契约:

字段行为
defaults.transition/slides.<slide>.transition整副或 slide 级页切换对象
transition.effect48 个规范原生效果之一,或none(仅移除视觉效果,定时推进仍在)
transition.effect_options仅所选效果的原生 Effect Options(pptx_animations.py --describe-transition <effect>);需显式effect
transition.duration有限秒数,大于零
transition.auto_advance可选的有限非负秒数,点击仍可推进;effect: none下有效
transition.sound可选的项目相对.wav提示音;effect: none下有效;slide 级覆盖为null清除继承的默认音
morph.from显式确定性 Morph 切换的紧邻前一 SVG stem
morph.pairs.<key>.from/.to接收共享 PowerPoint 名!!<key>的唯一源/目标直接根组 id;仅 Morph by object
defaults.animation/slides.<slide>.animation整副或 slide 级默认对象动画行为
animation.effect默认对象效果:规范键、auto、mixed、random或none
animation.duration/animation.stagger/animation.trigger默认排期时长、行间延迟、Start 模式
groups.<id>.effects[]多职责生命周期的非空有序数组;每行命名effect;不能与同组 legacy 单效果字段共存
groups.<id>.effect向后兼容的单行形式;旧短名是只读兼容输入
effects[].trigger/ legacytrigger行级 Start 模式;省略继承animation.trigger
order普通行的页级顺序;平局保持 SVG 组顺序再取effects[]下标;未列出的动画组继承其上方最近已列出组的顺序(首个之前为 0);trigger_shape行在独立交互序列中保持相对顺序;SVG 层顺序永不改变
delay行级秒数,叠加到已解析 Start 或形状触发
duration逐行排期时长;可缩放原生树保持内部比例,entrance_appear与瞬时预设保持其创作时长并用该值做after-previous间距
effect_options效果特定参数(direction、amount、color、font_name、relative、size),限于所选效果支持(pptx_animations.py --describe <effect>;direction是运动行进方向——PowerPoint 命名起点边缘,所以right即其 "From Left");需同块/同行显式规范effect;font_name是单个目标已安装字体
trigger_shape不同顶层组 id,映射原生On Click of;仅行级、不继承;隐含on-click,显式行trigger只有同为on-click才接受
repeat_count/repeat_duration重复次数或总重复时长;互斥
auto_reverse、rewind每轮反转和/或恢复动画前状态
accelerate、decelerate、bounce_end0..1时序比例;加速 + 减速 ≤1;bounce 需要插值效果且不能与 decelerate 组合
restartalways、when-not-active或never
after_effectnone、dim(带color)、hide或hide-on-next-click
sound对象动画提示音:底层输入用项目相对或绝对.m4a/.mp3/.wav;捆绑选择用同步的项目相对.wav路径

这些约束在 scripts/svg_to_pptx/animation_config.py 中逐一落地:例如effect_options需显式effect、repeat_count/repeat_duration互斥、accelerate + decelerate ≤ 1、bounce_end与decelerate互斥、restart枚举、after_effect的dim必须带color、sound 扩展名必须为.m4a/.mp3/.wav且转换音必须是项目相对.wav。

5. 校验并返回 Generate 导出

§1 之后若创建或更改了animations.json,运行:

python3 ${SKILL_DIR}/scripts/animation_config.py validate <project_path>

然后返回所属导出路径——Default 走 generate-pptx.md Step 7.1,Quick 走 quick-generate.md §4——两者都自动读取该边车。若 §2 改动了svg_output/,返回前先完成所属路线的最终 SVG 重跑;绝不从本阶段 finalize 或导出。

校验语义:任何无效字段、目标或 Morph 对都会导致失败而非回退(pptx-animations.md §6)。通过校验的边车与读回只证明 PPTX 配置正确,不证明导出的 MP4 音轨。深层读回由导出器完成:生成导出在打包前读回每页,逐行比对行数、行序、trigger、trigger shape、形状目标、解析后的效果键、preset class、filter、presetID/presetSubtype、精确效果选项、repeat/reverse/rewind/acceleration/bounce/restart 语义、完成行为、声音关系与播放跨度;打包后扫描每个 slide part 检查根 timing 位置、重复或畸形p:cTnid、缺失p:spTgt形状、无效 build 目标与不支持的效果元组——任何不匹配都在请求的输出文件替换既有 deck 之前中止导出。

导出阶段对应命令(Default 路线):

python3 ${SKILL_DIR}/scripts/svg_to_pptx.py <project_path> # 保留 animations.json;导出器自动读取 python3 ${SKILL_DIR}/scripts/svg_to_pptx.py <project_path> -a none # 显式禁用 Custom Animations,保留边车 python3 ${SKILL_DIR}/scripts/svg_to_pptx.py <project_path> --no-animations # 显式禁用全部运动

Quick 路线则在--quick-generate基础上追加--with-notes/--no-notes,同样由svg_to_pptx.py读取边车。

5.1 可选视频运动交接

当下游渲染器要增强整副时,让 Step 7.3 附加--conversion-trace,再从最终已解析 trace(叙述输出用--recorded-narrationtrace)派生计划:

python3 ${SKILL_DIR}/scripts/video_motion_plan.py <project_path>/validation/<output_stem>.trace.json \ -o <project_path>/validation/video_motion_plan.json --style adaptive --force

计划锁定同一性、效果、方向、顺序、边界与时序,且只允许优化渲染器参数(video-motion-plan.md)。restrained与dynamic是显式强度替代,adaptive是默认并按页面角色、动画对象数与对象面积调整增强强度。关键约束:下游渲染器必须保留对象同一性与 SVG 组 id、对象顺序、源效果、语义方向、已解析开始时间与页面时序锚点,只允许在声明的optimizer_scope内优化 easing、移动距离、不透明度、缩放、遮罩羽化、模糊、运动模糊与过冲——绝不从原始animations.json或narration_animations.json直接派生视频计划,因为原始边车可能仍含继承、auto、时序模式或旁白相对值;已解析的转换 trace 才是权威输入。视频渲染器还必须拒绝点击触发动画(渲染视频没有交互点击事件),需先用 click-free 的after-previous/with-previous重导出。

原生导出分支带有已解析声音提示时,同一最终 trace 与旁白 PPTX 喂给video_sound_mix.py;显式幻灯片放映捕获记录原生提示播放,混音不使用 trace。

✅ Customize Animations 完成清单

  • 语义上下文与运动意图已解析
  • 对象运动在范围内时,采纳的对象目标使用真实的后重组 SVG id
  • 存在时稀疏animations.json覆盖有效;无操作路径不创建
  • 任何重组后的 SVG 通过最终质量门
  • 控制权已返回 Generate Step 7;视频计划等待最终已解析 trace

与相邻模块的边界速览

  • 整副级运动(页切换、自动推进、统一逐元素策略、无人值守循环播放--auto-advance/--kiosk):走 animations.md 与导出器 flags,不创建边车。
  • 讲者备注 / 旁白音频:运动与音频分离;generate-audio处理旁白、SRT 与 MP4 混音,增益/限幅绝不写入animations.json。
  • 视频交付:Customize Animations 完成并验证animations.json后才允许 Quick 视频导出(除非用户明确要求静态或仅切换播放),旁白主导的 cue 同步由 generate-audio 提供。
  • 兼容性边界:203 个规范对象预设 + 48 个规范页切换针对 PowerPoint OOXML;29 个旧短名仅作为兼容输入,新输出绝不写别名;其他演示软件可能以不同方式解释 timing 树,导出器不做无条件 Keynote 保证(pptx-animations.md §7)。
  • AI 技能
  • 人工智能

【免费下载链接】ppt-master

AI 把任意文档生成真正可编辑的 PowerPoint —— 原生形状与动画、演讲者备注可合成音频旁白、还能参考你自己的 .pptx 模板,而不是一张张图片 · 何雨果出品

项目地址:https://gitcode.com/hugohe3/ppt-master
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询