31 lines
1.0 KiB
Markdown
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.
|