1.5 KiB
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.