# VoxelForge R26 — lattice generator family ## Legacy inventory | Family | Generator and output | Per-sample work and bounds | |---|---|---| | **Maze** | [`BuildMazeStack`]() composes solid rock, `FLatticeCorridorSource`, three-octave SDF roughness, and carving. The deterministic 3D lattice has origin-directed parent edges plus optional loops. Parameters include cell size, corridor radius, roughness, and boundary seal. | Hot path: floor to the containing cell and test up to 24 cached corridor capsules; roughness noise runs near the corridor surface. A cache miss rebuilds up to 24 edge decisions. Its box propagation scans up to 64³ cells and returns a geometric lower bound with an unbounded upper bound; oversized queries become unknown. No feature BVH. [Parameters]() · [source and bounds]() | | **Vertical shafts** | [`BuildVerticalShaftStack`]() composes rock, hash-placed full-height shafts and connector capsules, roughness and carving, periodic partial ledges, connector air/floor modifiers, and optional structural posts. Parameters include shaft spacing/radii, connector radius, ledge spacing/depth, roughness, and seal. | Hot path checks the local 3×3 shaft neighborhood and its connector capsules, then applies roughness, ledge, and connector operations. A cell-cache rebuild does the broader hash-grid and parent-link work. Box propagation scans up to 64² XY cells and also returns a lower bound with an unbounded upper bound; it has no BVH. [Parameters]() · [field]() · [ledge and connector modifiers]() | These are code-level cost descriptions, not legacy per-sample benchmarks; I found no comparable timing for either generator. ## Native design and shaft walkability Add a native lattice recipe with immutable, stable-ID graph records resolved from `(seed, strate, recipe version, cell, feature ID)`. Put the **required spine between the actual resolved arrival and departure anchors first**. Use a finite graph search to choose its cells and edges; A* is a standard option for this [graph-search problem](https://www.cs.auckland.ac.nz/courses/compsci709s2c/resources/Mike.d/astarNilsson.pdf). Add branches and loops only after that spine exists. Attach branches to it, and give any navigable dead end a supported landing or a clear return path. Represent each room, corridor, and shaft as one filleted void feature with a stable ID. Reuse L54’s analytic SDF construction: cap each void against its floor with smooth-max, then union voids; L54 used a 2.4 m smooth width and measured a 0.702 m composed fillet. Keep route floors out of roughness displacement. [L54 field and fillet]() [L54 construction details]() Store dimensions, floor profiles, blend widths, and padded bounds in the native resolved layout, following the existing micrometre-based cavern records. Build a BVH over bounds that include blend, floor support, and any bounded roughness. Use exact primitive intervals where available, propagate sound intervals through the composed field, and return unknown when a bound cannot be proven. Reuse the cave candidate lookup, field-classification, and tile-shape-free path; the BVH culls absent features, while interval proofs decide whether a tile is all air or solid. [Cavern records]() · [BVH]() · [interval classification]() · [`isTileShapeFree`]() **The shaft route must not depend on falling.** The historical note reports arrival-to-departure failures on 15 of 16 seeds. The code’s diagnosis explains the structural gap: a large connected origin-spine component still does not guarantee that shaft networks at the measured passage mouths join. A full-height air column is not standing support; periodic one-sided ledges and sparse horizontal links do not establish a continuous route. [Connectivity diagnosis]() [Landing-point constraints]() For a walkable descent without custom gravity, make the shaft a view well around a **continuous ramp**: a helix or broad switchbacks between landings. Enforce `|rise| / horizontal run ≤ tan(15°)` on every route segment. For example, a 4 m rise needs at least 14.9 m of horizontal run; a 4 m-radius helix rises 4 m per 25.1 m turn, about 9°. Verify the final composed field with a capsule flood fill from the actual mouths, plus local grade, support, and headroom checks—the method L54 used for caves. [L54 route audit]() ## Cost and VR read **Performance class: medium; unmeasured.** Use the measured L54 cave whole-view time (0.727 s) and L56 motif time (0.524 s) as comparison points, not forecasts. [Caves]() · [Motifs]() Capsule and cylinder fields are simpler per active feature than L54’s curved edges, but a dense lattice, many ramps, and broad mixed regions can outweigh that. Sparse BVH candidates and tight intervals are the main cost controls. For an initial scale, try a maze pitch near 16 m, 3.5–5 m clear corridors, and a shaft spacing near 20 m; those pitch values match the legacy defaults’ documented Core scale. Repeat a consistent grid rhythm, then vary a few junctions and landmark bays so it reads as a maze rather than a featureless corridor set. Pair local junction markers with an occasional global landmark; a recent VR wayfinding study reports that landmark usefulness varies with navigation strategy. [Wayfinding study](https://www.sciencedirect.com/science/article/pii/S0272494425001446) For shafts, expose the central void and repeated landing tiers, with visible handrails and human-scale references. Treat vertigo as an intended effect to assess, not a reason to drop the design: a 42-person VR height study found increased distress and physiological responses on an exposed platform up to 40 m, strongest among participants with greater height intolerance. [Study](https://pubmed.ncbi.nlm.nih.gov/35095450/) Keep the walking route clear and forward-readable; Meta’s guidance recommends gentle slopes, distant walls, and spatial sound cues for orientation. [Meta locomotion guidance](https://developers.meta.com/vr/design/locomotion-best-practices/) ## Slices and verification 1. **Maze slice:** a small multi-level lattice with the real arrival-to-departure spine, one optional branch, and one loop. Check deterministic layouts, interval soundness against brute-force samples, BVH candidates, tile-shape coverage, and final-field capsule reachability with grade ≤15°. Capture an eye-height junction view and a high oblique cutaway showing the route and repeated cells. 2. **Shaft slice:** two or three shaft cells joined by one helix or switchback descent. Run the same checks, then repeat the mouth-to-mouth walkability audit across the historical 16-seed matrix. Capture the ramp at eye height, a view across the shaft to its tiers, and a cutaway showing the complete route. 3. **Density pass:** add branches and additional levels only after both slices pass; repeat interval, determinism, route, and whole-view timing checks at the denser preset. Frame captures to show route support as well as scale. **Question for the owner:** should the first playable slice be the maze or the shaft descent?