ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何读懂 Oil Motion 的 motion_budget.py:动画资源格式与播放控制器自动决定完全指南

如何读懂 Oil Motion 的 motion_budget.py:动画资源格式与播放控制器自动决定完全指南 如何读懂 Oil Motion 的 motion_budget.py动画资源格式与播放控制器自动决定完全指南【免费下载链接】oil-motion设计并实现随滚动、拖动、指针或状态变化响应的网页动画覆盖素材、时间轴和运行时。项目地址: https://gitcode.com/gh_mirrors/oi/oil-motionOil Motion 是一个把 AI 生成的连续动作接入网页交互的开源动画 Skill而 scripts/motion_budget.py 是它的预算决策器在你生成任何动画素材之前根据帧数、显示尺寸、DPR 和交互方式自动决定动画资源格式烘焙视频、Alpha 图集或绿幕视频和网页动画播放控制器逐帧 scrub、分段播放或自主播放避免生成一堆又大又卡、页面根本装不下的资源。本文不贴大段代码用决策清单的方式讲清楚这个脚本的判断逻辑看完你就能理解一份预算报告里的每个字段。 为什么生成动画素材前要先算预算AI 生成的动画视频在变成网页素材时会面临一个现实问题帧数和分辨率直接决定文件体积和内存占用。举个例子48 帧动画每帧最低 640×640 px浏览器单张纹理上限 4096×4096 时一张图集最多只能排 6×6 36 帧——48 帧根本塞不进一张图硬塞就得偷降清晰度。这正是 motion_budget.py 要解决的问题。它在流程中的位置是先算预算、再生产素材。Agent 会先运行它并直接采用选定的主方案不会让使用者在多种格式间纠结也不会重复实现两套资源。完整命令参数和决策顺序的权威说明见 references/delivery-selection.md。 三种动画资源格式脚本会在其中选一个格式适合场景原理烘焙视频baked-video场景叙事、镜头运动、环境光重要背景与主体一起烧进视频无抠色风险连续性最好Alpha 图集alpha-atlas小型、环形、二维参数、频繁跳转的透明素材构建时完成抠色像雪碧图一样随机定位任意一帧绿幕视频chroma-video大尺寸、长时间轴的一维滚动动画视频压缩率高运行时 WebGL 实时抠色省内存三条路线的完整制作规范分别写在 references/baked-video.md、references/alpha-atlas.md 和 references/chroma-video.md。 脚本如何自动决定资源格式固定决策顺序核心选择逻辑在 select_delivery 函数 中它按固定优先级依次判断命中即停背景归属是video背景烧进视频→ 选baked-video结束。参数空间是2d比如水平角度 × 垂直角度两个轴→ 选alpha-atlas。二维参数无法压成一条线性视频必须离散成帧网格。参数空间是discrete互不连续的状态切换→ 选alpha-atlas每个状态分别预算不拼成线性视频。随机访问且预算内用户可能跳转到任意一帧且单图集 解码内存都达标→ 选alpha-atlas。一维顺序访问且帧数 ≥ 180默认门槛典型如长滚动动画→ 选chroma-video。图集超预算超过单张纹理容量或 192 MiB 理论解码内存→ 选chroma-video。其余小型透明素材→ 选alpha-atlas。 预算是怎么算出来的脚本先根据CSS 显示尺寸 × 目标 DPR得出最低单帧像素再算单张图集容量列数 floor(4096 ÷ 单帧宽) 行数 floor(4096 ÷ 单帧高) 容量 列数 × 行数帧数 ≤ 容量 且 总解码内存 ≤ 192 MiB → 图集预算内 ✅否则触发atlas-budget-exceeded等阻断/原因码路由到绿幕视频或提示重新预算比如 551 帧、显示 1536×864 的一维滚动动画就会命中第 5 条long-linear-sequence自动选chroma-video——这正是 tests/test_motion_budget.py 中固化的用例。⏱️ 播放控制器如何独立决定只由 time_control 决定这是新手最容易混淆的一点资源格式和播放方式互相独立不能互相推断。视频既可以逐帧 scrub也可以正常播放图集也可以按时间自动播放。控制器只由合同里的time_control字段一对一映射controller 映射time_control生成的runtime.controller行为scrubframe-scrub输入值持续对应时间轴位置松手停在当前帧segment-playsegment-playback输入选择下一段随后按时间播放可反向撤回autonomousautonomous-playback动画由时间推进交互只负责开始/暂停每个控制器同时绑定对应渲染器alpha-atlas→css-alpha-atlas、chroma-video→webgl-chroma-video、baked-video→baked-video。控制器的具体实现入口是 assets/interactive-motion.ts字段语义以 references/runtime.md 为准。 实际跑一次一条命令出报告python3 scripts/motion_budget.py \ --frames 96 --display 240x240 \ --driver pointer --time-control scrub \ --parameter-space circular \ --background-owner page \ --strict --json两个必须显式传入的参数值得注意--background-owner没有默认值——故意设计成合同未锁定就报错防止静默回退到绿幕路线。--strict让存在阻断项时返回非零退出码方便流水线拦截。JSON 报告里重点看四个字段字段含义delivery.selected唯一主媒体格式delivery.reasonCodes选择依据例如small-asset-fits-atlas-budgetruntime.controller播放控制器failures/passes阻断项清单与总判定failures不只是不通过三个字而是带修法的具体建议例如二维 Alpha 图集超出单图集或内存预算需要降低参数采样密度、拆分参数轴或在用户确认的显示范围内重新预算滚动采样密度不足需要至少 144 帧当--scroll-pages给出的每屏帧数低于 24 帧/屏时源素材低于最终显示所需像素源帧 × DPR 不够清晰时禁止从低清素材反向放大任何调整后都要重新运行预算旧报告立即失效。 小结格式选择回答素材怎么存背景归属 → 参数空间 → 预算七步定序命中即停。控制器回答画面怎么播time_control一对一映射与格式解耦。报告里的reasonCodes和failures就是脚本给新手写的为什么这么选、超了怎么改。想继续深入可以按这份路径索引读源码和文档决策器源码scripts/motion_budget.py决策顺序唯一事实源references/delivery-selection.md三条媒体路线规范baked-video.md · alpha-atlas.md · chroma-video.md运行时与控制器实现references/runtime.md、assets/interactive-motion.ts行为用例含各种预算场景的断言tests/test_motion_budget.py【免费下载链接】oil-motion设计并实现随滚动、拖动、指针或状态变化响应的网页动画覆盖素材、时间轴和运行时。项目地址: https://gitcode.com/gh_mirrors/oi/oil-motion创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表