30 lines
1.5 KiB
Markdown
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.
|