wip(assembler): M2 round 3 -- opt-in hybrid sharp mesher (WorldAssemblerHybridV1) in the Unreal Core route

Default MarchingCubesV1 unchanged (W1/W8/W16 = round-6 hashes). Hybrid DC only in LOD0 interior cells
with tagged features; tile-border cells and LOD1+ stay MC. BuildHost: fixtures repeat exactly, cooked
collision bounds = render bounds, same-LOD borders pass, sampled SurfaceWorld cliff bit-identical to MC.
Open: tagged tiles cost 5.7-6.7x MC; corner-top field contact error 20 cm; 5 MC doorway LOD cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-10 09:53:04 +02:00
1 parent a3b7d2015e
commit 22a6b30494
21 files changed
+3009 -23

No files matched your search

+44
View File
@@ -482,3 +482,47 @@ fix, the actor test passed. The final rerun after gating the manifest hash on th
passed in 9m20s with 3,880,357,888 bytes peak sampled private memory (3.61 GiB). No `0xC0000142`
retry or new UECC folder occurred. The owner's project was not opened or built and no `.uasset` was
edited.
### M2 round-3 hybrid mesher integration (2026-10-10)
`WorldAssemblerHybridV1` is an opt-in Core recipe; `MarchingCubesV1` and
`bUseVoxelForgeCore=false` remain the defaults. Tagged type-2 plan boxes use sharp hybrid cells only
at LOD0 interior cells. Tile-border cells and LOD1+ use MC, with the existing skirt retained. The
full BuildHost actor commandlet passed its W1/W8/W16 matrix at the round-6 Core hashes,
anchor/edit/travel checks, height agreement, switch-off gate, Blueprint carve/fill, native
SurfaceWorld route and five cooked collision contacts. It ran in null-RHI BuildHost for 11 minutes
and logged zero engine errors. A PowerShell status-format cast initially made the outer wrapper
return 1 after the engine had passed; the script was fixed, focused fixture and cliff checks
returned 0, and the corrected full wrapper rerun also returned 0 in 11m06s at a sampled 3.73 GiB
peak.
The BuildHost fixture plan has nine stable type-2 feature boxes for the corner, doorway, riser and
ledge, plus the existing type-4 SurfaceWorld cliff. Five contacts hit the Pawn channel and the same
RMC component; direct component traces agreed with world traces, and cooked Chaos body bounds
matched render bounds. Field contact error ranged from 0 to 20.332 cm. The separate sampled native
cliff check passed bit-identity: 10,231 vertices, 10,360 triangles, mesh hash
`0xfc7bd7a3cf997992`. Same-LOD independent borders passed with 63 segments; the 125-phase LOD0/LOD1
doorway probe had no contours over 50 cm and a 22.844 cm worst mismatch.
That LOD probe is not a topology proof. The standalone full transition suite still records five MC
doorway failures out of 625, with skirts serving as the current repair. At the 25 cm Core grid, the
17.68 cm corner bevel is 0.35 of a LOD1 sample and may round off or pop at the threshold. Null RHI
cannot show or measure this visually; owner review remains necessary.
Plugin fixture timings show a 5.66–6.70× hybrid/MC meshing cost on the tagged sharp fixtures; the
organic cave is 0.992× MC. See the M2 round-3 tables and complete failed-run ledger in
[`WorldAssemblerM2/REPORT.md`](Research/WorldAssemblerM2/REPORT.md). BuildHost artifacts include
the owner-previewable [`surface_hybrid_fixture_plan.json`](Research/WorldAssemblerM2/round3/surface_hybrid_fixture_plan.json).
Owner preview: duplicate the settings asset, import the fixture manifest through
`SourceWorldAssemblyManifestJson` / `ImportWorldAssemblyManifestJson`, enable Core on the test
`AVoxelWorld`, and select `World Assembler Hybrid V1`. Review the corner and doorway while crossing
the LOD distance, then compare riser and ledge contacts. The owner builds the plugin and judges the
live view. No owner `.uasset`, project build, or editor session was used here.
New source files are the mirrored private headers
`Source/VoxelForge/Private/VoxelHybridSharpMesher.h` and
`Standalone/Source/VoxelForge/Private/VoxelHybridSharpMesher.h`; no new `.cpp` or generated header
was added. Likely compile touchpoints are `VoxelWorld.h/.cpp`, `VoxelTypes.h`,
`VoxelMarchingCubesMesher.h/.cpp`, both hybrid mesher headers, the Core public header and
`VoxelForgeCore.cpp`, `VoxelForgeExploreCommandlet.cpp`, and `VoxelForgeEditor.Build.cs`.