2.3 KiB
N-014 NLA
状态:in_progress(Action Clip Main/求值 + reverse/repeat 子集)
详细分解、AnimationIR strip/track、Main 编辑、原生 NLA 求值、UI、GLB 映射和验收命令见
docs/UNDECLARED_CAPABILITIES_EXECUTION_PLAN.md。
本轮已交付 NlaTrackIR/NlaStripIR、Action 存在性、owner/path、稳定排序、不重叠、
range/scale/repeat/influence 一致性、blend/extrapolation 和 time-warp 阻断。SceneIR reader
可恢复 Track/Action Clip 摘要;setNLAStack 以整栈替换事务写 Blender Main,并经过
undo 历史、保存重开和 frame 5 native depsgraph 求值。Action Clip reverse 已映射到
Blender NLASTRIP_FLAG_REVERSE,reader 可恢复该标志;反向正例得到预期线性位置约
[0.555556, 1.111111, 1.666667]。
同一正例已扩为 repeat=2,frame 5 与第二周期 frame 14 的 native Depsgraph 矩阵一致。
M10-11 另以桌面 Blender 5.2 生成只读 fixture:同一 Track 包含 scale=2 的正向 Clip 和
reverse + repeat=2 的 Clip。桌面、Node WASM 与生产 Chromium Worker 在 12 个边界/周期帧上
逐矩阵比较,最大误差为 0;每帧求值前后的 Track/Strip/Action JSON 完全一致。本切片不调用
setNLAStack,不提前关闭细粒度 operator 工作。
当前只支持单对象 Action Clip、正 scale、Replace/Add/Multiply/Combine 和有限外插。
M10-12 仅新增 moveNLAStrip,以 revision gate 和单次 Main transaction 保留时长移动现有 Clip,
并已通过 undo/redo 与保存重开。Transition/Meta/Sound、Animated Time、Drivers、其余
create/remove/resize/active 命令、NLA UI、
骨骼/约束混合矩阵及 GLB 展开仍为 planned/结构化阻断。
M10-15 冻结 4,096 tracks、每 track 16,384 strips、总 65,536 strips 及 ID/name/reason 字节预算, 拒绝未声明字段。隔离 Chromium Worker 对 20 次 256-strip stack、超 track budget、恶意字段和 同会话小 stack 恢复分别建立 performance/OOM-prevention/malicious-input 门。
验收:npm --prefix web run test:nla-evaluation-golden、npm --prefix web run test:nla-operator、
npm --prefix web run test:authoring-roundtrip、
npm --prefix web run test:capability-gates、npm --prefix web run test:m10-domain-gates。