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

31 lines
1.0 KiB
Markdown

# 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
```text
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.