2.8 KiB
W-077 Status
status: in_progress
task: 多级 LOD 生成、缓存和视口选择
The cache boundary is now implemented without changing the native WASM ABI:
buildLODCacheKeycreates a deterministic, path-safe key from object ID, source mesh revision, modifier-stack hash, profile hash and REST/POSE state.- IndexedDB schema v3 adds
lod_manifest; the StorageWorker can put/get a validated manifest and writes transferable.meshbytes to OPFSprojects/<id>/cache/lod/<cacheKey>.mesh. Read, delete and byte-budget pruning updatelastAccessAtand remove the least-recently-used entries. ThreeLODAdapterselects pre-generated levels from projected pixel height, with a configurable hysteresis band, and is updated by the viewport render loop without rebuilding the imported scene.generateLODevaluates every requested profile independently from the source.blendin a fresh WASM module instance, returns a validated manifest and transferable geometry, and is exposed by the React inspector. A binary length-table container round-trips the level buffers before OPFS persistence; the React path reads that persisted container back before installing levels into the Three.js viewport, while preserving source transforms and materials.- Browser E2E covers the OPFS bytes, manifest round trip, stable key and hysteresis behavior, multi-level generation and binary geometry round trips.
The React open path now lists all lod_manifest rows for the project after a
fresh application load, filters them by the authoritative SceneIR revision and
object IDs, reads the OPFS .mesh container, validates the level mesh IDs and
installs the cached levels into the Three.js LOD adapter. Applying any native
scene command also removes manifests from older source revisions, so a stale
cache cannot be selected after a mesh or modifier edit. Browser E2E covers
generation, reload, discovery and reuse.
Pose-aware skin joints are still not exported into the LOD manifest. The native
Collapse bridge now performs one Blender BMesh collapse pass at a time, creating
a fresh heap for each pass and recalculating the quadric choice from the current
mesh state. This removes the previous WASM memory failure at intermediate cube
targets; the LOD Worker keeps per-level isolation as a general fault boundary.
An active modifier stack must now have an EVALUATED dependency-graph report
before LOD generation. Metadata-only and unresolved stacks return a structured
capability error rather than caching output from an implicit base mesh.
Each isolated LOD profile applies the same skin/shape-key preflight as direct
Decimate, so a valid skinPolicy receives native remapping while a missing or
rejecting policy cannot create a partial cache entry.
Full Blender parity still requires pose-aware skin joints and broader Blender
golden coverage, so the task stays in_progress.