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

3.4 KiB

W-079 Status

status: in_progress
task: 三角面简化和轻量化里程碑

The Blender golden fixture is checked by tools/web/run-blender-golden.mjs. It opens the local tests/files/web/basic_scene.blend, evaluates native Collapse in fresh WASM instances at ratios 1.0, 0.9, 0.5 and 0.25, and compares source object identity, vertex counts and evaluated loop-triangle counts with tests/golden/W-079/basic-scene-decimate.json. The test is runnable offline as npm run test:golden and currently passes. The focused native memory regression gate npm run test:collapse-ratios starts an isolated WASM instance for each target and asserts a successful non-empty result. The matrix now also includes the previously unstable intermediate ratios 0.80, 0.75, 0.70 and 0.65.

LOD generation evaluates each requested profile in an isolated Worker/WASM instance. A failure at one target records requestedLevel, triangleBudget and the diagnostic message in WebEngineLODResult.errors; the remaining levels are reindexed and cached. The native bridge now avoids the former multi-collapse heap lifetime failure by running one native Collapse pass per fresh heap, so the intermediate golden ratios no longer fault.

The reader retains 64-bit on-disk BHead pointer identities in WASM and resolves duplicate BLEND_DATA attribute arrays in the owning Mesh block range. This prevents a second mesh from inheriting the first mesh's attributes. The offline npm run test:topology-collapse regression confirms successful native Collapse for an open quad, an open n-gon and a non-manifold shared edge.

The rigged fixture also now runs Collapse with a preserving skinPolicy. Native output projects to the source triangles, remaps fixed four-slot weights and rebuilds shape-key positions, while a missing policy remains blocked. The same path is covered through the browser WebEngine Worker.

The deformation fixture now records an actual Blender 5.2 evaluated-depsgraph golden with shape-key value and armature pose applied. The Web deformation worker compares linear bind/rest/pose evaluation against the declared max and RMS error budget. Packed-image extraction, GLB semantic re-import and the Web deformation golden are covered by focused browser tests.

The native Blender Depsgraph path now completes full loader, view-layer sync, graph build, tagged update and frame evaluation in the headless WASM build for the empty, basic and rigged/shape-key fixtures. A wasm32-specific DNA layout adapter recursively restores 8-byte alignment for 64-bit members; this fixes the Scene.master_collection offset and prevents the former memory trap. The Web ID registry includes embedded NodeTree, Camera and Light data, and the rigged output matches the Blender 5.2 deformation golden within its max/RMS budgets. The report now exposes ordered native modifier entries, persistent UIDs, mode flags, target object IDs, stack dependencies and explicit Blender evaluation errors; the rigged fixture verifies Armature followed by a structured Decimate block on its two-triangle input. N-001 is complete for the declared fixtures and N-002 has started with this report contract; broader modifier, constraint and stress coverage remains tracked by N-002/N-003/N-008.

The broad Decimate mode/performance matrix and Blender round-trip warnings are still tracked as follow-up coverage; unsupported cases must remain structured errors and cannot be treated as parity.