44 lines
2.8 KiB
Markdown
44 lines
2.8 KiB
Markdown
# N-022 Tracking 与 Mask
|
||
|
||
状态:`BLOCKED`(资源 schema、真实 Mask Main reader、marker/mask 有界事务和 solve 能力门
|
||
已落地;MovieClip Main、写回、跟踪/相机求解、编辑器 overlay 与桌面 golden 未实现)
|
||
|
||
## 已验证切片
|
||
|
||
1. N-022-A:版本化 project schema 覆盖 MovieClip、Track/Marker、Plane Track、Camera
|
||
Solve metadata、Mask Layer/Spline/Point 及 compositor/scene binding。
|
||
2. N-022-A/B:clip 路径限制在项目内,source 与 solve 绑定 SHA-256;marker frame、
|
||
plane track 引用、mask point/handle、资源 binding、重复 ID 与总量预算都严格校验。
|
||
3. N-022-B(部分):marker upsert/delete、track selection、mask point 与 spline cyclic
|
||
修改使用 revision 事务,锁定项和 stale revision 会拒绝,提交后再次完整解析。
|
||
4. N-022-C(门):marker/mask schema edit 可用;browser tracking 只有显式 probe 成功后
|
||
放行,camera solve 保持 `BLOCKED` 并要求受验证的服务端 Blender。
|
||
5. N-022-D(部分):按屏幕射线对可见、未锁定且非零透明度的 Mask Bezier 段做有界采样,
|
||
返回稳定的 layer/spline/point/segment identity;精确点命中优先于段命中,未声明的
|
||
selection/raycast 编辑器仍保持阻断。
|
||
6. N-022-A(部分):Blender 5.2 Mask Main reader 输出 layer、spline 和 Bezier point,保留
|
||
cyclic/fill、viewport visibility、lock/hide-select、opacity、handle type/坐标、feather 与
|
||
selection;1024 layer、100k spline、1M point 预算在分配前检查。MovieClip 不能从外部路径
|
||
推导内容 SHA-256,继续阻断而不使用路径散列冒充源摘要。
|
||
7. N-022-D(选择子集):Mask point marquee 支持 replace/add/toggle,验证矩形、已有 stable
|
||
identity、重复项和 1M point 预算;输出按 Main 中的 mask/layer/spline/point 顺序确定化,隐藏、
|
||
锁定和零透明度 layer 不会成为新选中项。
|
||
8. Blender 5.2 fixture 同时包含锁定层和可编辑层,经 WASM/Worker 后实证锁定点不可 raycast,
|
||
可编辑点返回稳定 identity,跨两层的 marquee 仅选择可编辑点,toggle 可确定性清空。
|
||
|
||
## 仍然阻断
|
||
|
||
- N-022-A/B:真实 MovieClip reader、Mask/MovieClip 写回、undo/redo 和 save/reopen;Mask reader
|
||
已完成。
|
||
- N-022-C:浏览器 tracking 实现、完整 camera/plane solve 与服务端 job/hash 提交。
|
||
- N-022-D:完整 Clip/Mask editor、overlay、handle/segment marquee 与 compositor/scene 实际绑定;
|
||
point raycast 和 point marquee 的真实 Main 子集已完成。
|
||
- N-022-E:desktop solve/error golden、媒体故障和 Chromium 测试。
|
||
|
||
## 验收
|
||
|
||
```bash
|
||
WEB_TEST_PORT=5322 npm --prefix web run test:e2e -- --grep "N-022 tracking"
|
||
npm --prefix web run test:mask-main-reader
|
||
```
|