2.7 KiB
M10-01 Status
status: done task: 从 Blender Main 读取 Geometry Nodes 图拓扑、socket 默认值、link 和稳定 node ID updated: 2026-08-16 America/New_York
Scope
The WebEngine authoritative Main reader publishes a bounded GeometryNodeGraphIR
snapshot for every GeometryNodeTree. It preserves unsupported nodes as metadata,
uses Blender node identifiers and socket identifiers rather than display names, and
does not evaluate Geometry Nodes. The existing web/protocol/schema-version remains
1: geometryNodeGraphs is an additive optional SceneIR field and no existing field
meaning or persisted storage schema changed.
Evidence
- Fixture:
tests/files/web/modifier_geometry_nodes_scene.blend. - Fixture SHA-256:
f3820511f791769837d75be092934130c397cf46ee0acf79db28efca9a7948c9. - Desktop reference:
tests/golden/W-075/modifier_geometry_nodes_scene.json. - Desktop reference SHA-256:
93c21e5158daefce10f2d4df674e636bf3f6ed3dd43e1576c45a02a8592f5886. - Golden manifest:
tests/golden/M10-01/geometry-node-main-reader.json. - Protocol/unit check:
node --test web/tests/unit/geometry-nodes.test.mjs(3/3). - Native/WASM reader check:
node tools/web/check-geometry-node-main-reader.mjs; 3 graphs, 10 nodes, 7 links, 9 defaults, stable IDs, graph hashes, desktop comparison, save/reopen and unsupported Simulation-node preservation all passed. - Chromium Worker check:
WEB_TEST_PORT=5440 npm --prefix web run test:geometry-node-main-reader(unit 3/3, reader 1/1, Chromium 1/1). source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8: passed (ninja: no work to do).npm --prefix web run typecheck,npm --prefix web run lint,npm --prefix web run build, andgit diff --check: passed.
Contract
- Per-graph budgets are fixed at 4,096 graphs, 4,096 nodes, 16,384 links, 65,536 node sockets, and 4,096 interface sockets.
- Graphs, nodes, links, and socket arrays are deterministically ordered before the graph SHA-256 is emitted.
- Socket data types and finite defaults are read from Blender's native
bNodeSocketstorage; ID-valued defaults are serialized as stable typed IDs. __extend__sockets are omitted because they are UI extension sockets, not graph data. Missing/duplicate identifiers, invalid links, and budget overflow fail closed.- Unsupported node types remain in the graph and are available to the later M10-02 allowlist gate; this task does not claim Geometry Nodes evaluation.
Rollback
Remove the M10-01 reader, protocol field, golden, unit/E2E checks, package script and
this status file together. Existing SceneIR consumers continue to accept snapshots
without the optional geometryNodeGraphs field.