Files
workinf_Blender_Wasm/docs/status/W-038.md
2026-08-12 04:47:48 -04:00

30 lines
1.5 KiB
Markdown

# W-038 Status
status: done_current_scope
task: 实现场景增量
## Implemented
`web/protocol/scene-delta.ts` defines revisioned node add/update/remove, active
object/frame changes and mesh/material/camera/light/animation resources.
`diffSceneSnapshots` emits changed node and resource fields;
`applySceneDelta` rejects stale base revisions and returns sorted immutable node
arrays. The native C ABI computes the same minimal delta whenever a new
`.blend` is opened, and the Worker exposes it through the `delta` request after
validating the envelope. The command registry covers scene/frame state,
modifier switches, mesh editing, material/UV authoring, keyframes/constraints
and object hierarchy operations. Each command mutates Blender Main and returns
the corresponding revisioned delta through `applyCommand`.
## Accepted bounded scope
SceneDelta now covers resource collections for meshes, materials, cameras,
lights and animations in addition to nodes/frame/active object. Mesh payloads
transfer separately so topology and attribute changes replace the associated
resource envelope, while node-only changes stay in place. All declared
authoring commands are Main-authoritative and covered by save/reopen. Fine-
grained `MeshGeometryDelta` patches now transfer only changed byte ranges when
field lengths stay stable; topology/attribute layout changes replace only the
affected per-mesh envelope. The main-thread client applies patches immutably
and retains unchanged mesh buffers.