2.3 KiB
2.3 KiB
N-016 Grease Pencil
状态:BLOCKED(协议、有限 reader/Main transaction、当前帧及相邻帧 onion preview 已落地;
完整 2D/3D 编辑器、modifier 语义和桌面 golden 仍阻断)
已验证切片
- N-016-A:SceneIR 中提供 Layer/Frame/Drawing/Stroke/Point/Attribute schema,校验
finite position、radius、opacity、vertex color、cyclic、material index,并以
1024 layer、100k frame、1M stroke、1M point、65,536 attribute 预算拒绝越界输入。
超预算只允许
blocked + GREASE_PENCIL_BUDGET_EXCEEDED摘要。 - N-016-A:Blender 5.2 Main reader 输出真实 Grease Pencil layer/frame/drawing/stroke
数据,稳定映射
grease-pencil:*与grease-pencil-layer:*ID;对象 dataId 不再降级 为 Empty。 - N-016-B:Main 支持有界 create/remove/reorder layer、insert/remove frame,以及整帧
setGreasePencilStrokestransaction(空 stroke 数组用于擦除)。命令要求单用户数据块, 使用既有 authoritative Main、undo/redo 和 save/reopen 流程。 - N-016-C(部分):radius、opacity、vertex color、cyclic stroke 和 material index 已读写;开启 layer onion skin 时只取最近前一帧和后一帧,使用独立色调、透明材质和关闭 depth write 的有界 preview,当前 drawing 不被替换。
- N-016-D(部分):共享 Three.js 适配器按当前 frame 选择每个可见 layer 最近的有效 drawing,渲染真实 3D stroke/闭环;Chromium 主线程与 OffscreenCanvas 均通过非空像素门。
仍然阻断
- N-016-C:material datablock 事务、onion fade/range 完整语义和完整 Grease Pencil modifier reader。
- N-016-D:2D editor、stroke/point selection、timeline/dope integration、gizmo 和 worker restart; 3D current-frame stroke viewport 已完成。
- N-016-E:desktop drawing hash、Chromium 像素 golden、GLB/USD loss report 和 OPFS。
验收
npm --prefix web run typecheck
npm --prefix web run lint
npm --prefix web run test:grease-pencil
WEB_TEST_PORT=5202 npm --prefix web run test:e2e -- --grep "N-016 Grease Pencil"
test:grease-pencil 使用 modifier_grease_pencil_scene.blend,覆盖 reader、layer/frame/stroke
Main transaction、undo/redo 和保存重开。它不替代桌面 drawing hash。