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

1.0 KiB

W-030 Status

status: done task: 从内存读取 .blend

Evidence

  • Reader: blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp
  • ABI: web_engine_open_blend(handle, data, length) copies an ArrayBuffer into WASM memory and never receives a browser or POSIX path.
  • Worker: web/app/src/workers/web-engine.worker.ts reports started/progress/completed phases and maps malformed input to BLEND_READ_FAILED.
  • Golden: tests/golden/W-030/manifest.json

The reader accepts uncompressed, gzip and zstd Blender streams, validates the little-endian Blender header, decodes the embedded DNA1 schema and returns an empty or populated SceneIR snapshot. empty.blend and basic_scene.blend are both exercised by the WASM smoke.

Verification

node tools/web/run-web-engine-smoke.mjs  # empty + basic + save passed
tools/web/check-dual-engine.sh           # native ABI + WASM reader passed

Remaining risk

The first reader is deliberately bounded to a 1 GiB block and summary export; evaluated mesh buffers are W-033.