From bea40502afa5146de7597d0060d9b15ade764c68 Mon Sep 17 00:00:00 2001 From: Fr0zka Date: Sun, 1 Nov 2026 19:51:35 +0100 Subject: [PATCH] research: chamber support bodies (L153, 3 designs fail; kept as patch) Support under chambers and 9 m approaches either refilled the bore or left the same 5 Surface World route + 2 upper chamber probes unsupported in all three variants (identical counts with or without support), so those probes are likely not under the support footprint. Also exposed an FI chamber content-band validation failure. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1 --- .../WorldAssemblerM3/Linux153/REPORT.md | 44 +++ .../Linux153/RunL153Captures.py | 182 +++++++++++ .../Linux153/captures/INDEX.md | 35 ++ .../after-l153-0-1-0-lower-landing.jpg | Bin 0 -> 17774 bytes .../after-l153-0-1-0-upper-landing.jpg | Bin 0 -> 26754 bytes .../after-l153-1-2-0-lower-landing.jpg | Bin 0 -> 19871 bytes .../after-l153-1-2-0-upper-landing.jpg | Bin 0 -> 18482 bytes .../after-l153-2-3-0-lower-landing.jpg | Bin 0 -> 20117 bytes .../after-l153-2-3-0-upper-landing.jpg | Bin 0 -> 21954 bytes .../Linux153/captures/manifest.json | 140 ++++++++ .../Linux153/l153-chamber-support.patch | 302 ++++++++++++++++++ 11 files changed, 703 insertions(+) create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/REPORT.md create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/RunL153Captures.py create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/captures/INDEX.md create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-lower-landing.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-upper-landing.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-1-2-0-lower-landing.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-1-2-0-upper-landing.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-lower-landing.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-upper-landing.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/captures/manifest.json create mode 100644 Standalone/Research/WorldAssemblerM3/Linux153/l153-chamber-support.patch diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/REPORT.md b/Standalone/Research/WorldAssemblerM3/Linux153/REPORT.md new file mode 100644 index 0000000..fda1fd8 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux153/REPORT.md @@ -0,0 +1,44 @@ +| Landing | Before: L151 HEAD | After: L153 candidate 3 | +|---|---|---| +| passage/0-1/0 upper | ![L151 upper Surface World landing](../Linux151/captures/after-l151-0-1-0-upper-landing.jpg) | ![L153 upper Surface World landing](captures/after-l153-0-1-0-upper-landing.jpg) | +| passage/0-1/0 lower | ![L151 lower landing](../Linux151/captures/after-l151-0-1-0-lower-landing.jpg) | ![L153 lower landing](captures/after-l153-0-1-0-lower-landing.jpg) | +| passage/1-2/0 upper | ![L151 upper landing](../Linux151/captures/after-l151-1-2-0-upper-landing.jpg) | ![L153 upper landing](captures/after-l153-1-2-0-upper-landing.jpg) | +| passage/1-2/0 lower | ![L151 lower landing](../Linux151/captures/after-l151-1-2-0-lower-landing.jpg) | ![L153 lower landing](captures/after-l153-1-2-0-lower-landing.jpg) | +| passage/2-3/0 upper | ![L151 upper landing](../Linux151/captures/after-l151-2-3-0-upper-landing.jpg) | ![L153 upper landing](captures/after-l153-2-3-0-upper-landing.jpg) | +| passage/2-3/0 lower | ![L151 lower landing](../Linux151/captures/after-l151-2-3-0-lower-landing.jpg) | ![L153 lower landing](captures/after-l153-2-3-0-lower-landing.jpg) | + +# L153 — landing support did not pass + +The third support shape still fails seed 2: five Surface World route probes and two upper chamber probes remain unsupported. The work stopped after three failed implementations, as required by the round instructions. L153 is not ready to promote. + +Captures are at eye height for all six chambers. L151 and L153 camera positions match; the upper `passage/0-1/0` pitch differs by 3.10° because its planned floor tangent changed. L153 capture quality passed 6/6. The manifest and reproducible capture command are in [captures](captures/INDEX.md) and [RunL153Captures.py](RunL153Captures.py). + +## Change + +`WorldAssemblyEvaluatorVersion` is now 240. The candidate adds a tapered support SDF under chamber floors and the first/last 9 m of route approaches. Surface landings anchor to native ground within a 2 m depth budget; cave and shaft landings use a 0.75 m budget. The support footprint tapers over 1 m and embeds 0.20 m. Bounds were expanded for the support depth. + +The three seed 2 attempts used the same W8 Surface World command and differed only in support composition: + +| Attempt | Source stamp | Change | Seed 2 result | +|---|---|---|---| +| 1 | `4c83a0a143d44b7b1f44758408fafa8d220390825a9a15cd48b5484e22c35a0c` | Add the support body after passage composition | Chamber support passed, but 99 route capsule samples became solid; `interior_air=FAIL`. Five Surface World route probes remained unsupported. | +| 2 | `663ab4fff5e4605a19d2a6242b1ba23fff230c143f5ae5e9d7ebc00a2b3cf5df` | Clip support by the full passage/chamber air union | Interior air passed with zero solid capsule samples, but the upper chamber had 2 unsupported probes and Surface World route support still had 5. | +| 3 | `4599aacdabb2940f223570a9a537723727989dd5236dfc084524e6dff55bc1dc` | Clip support by the bore field only, leaving chamber air out of the clip | Same 2 upper chamber and 5 route probes remained unsupported. This is the current working tree. | + +Attempt 3’s final seed 2 summary is `interfaces=3 passed=2`, `strate_routes=3`, `route_walkable=2`, `route_bindings=3`, `route_binding_failures=0`, `status=FAIL`. The upper `passage/0-1/0` chamber reports `unsupported=2`; the Surface World route reports `unsupported=5`. Tunnel Network and Vertical Shafts route support pass. The passage interior capsule audit passes with 0 solid samples out of 320,355 and all 3 interior negative controls detected. Shell, naturalness (3/3), mouth profile (3/3), ripple (3/3), and blocked-route controls pass. + +The seam audit did not emit a result: the headless audit exits with code 10 after the failed passage summary. Seam status is unverified. + +## Checks + +- Clang 19 build passed with `-ffp-contract=off`, 4 jobs. Final source stamp: `4599aacdabb2940f223570a9a537723727989dd5236dfc084524e6dff55bc1dc`. +- `git diff --check` passed. +- Focused seed 2 audit: failed the support gate as described above. Log: `Saved/Linux/l153/seed2-focused.log`. +- Fast tier: failed after 0.5 s on the first Floating Islands owner fixture. Its resolved-layout snapshot rejects `passage/0-1/0` because the lower landing chamber does not fit inside its host content band. Log: `Saved/Linux/l153/fast-tier.log`. +- Capture quality: 6/6 passed. Existing L151 before images were reused; the after images were rendered from the L153 candidate. + +The 16-seed Tunnel Network and Vertical Shafts sweeps were not run after the seed 2 gate failed and the three support attempts were exhausted. The tile seam result is absent for the same early audit exit. GCC W1/W8/W12, Clang W1/W8/W12 determinism, L80 timing across four layers, and the Linux UE start plus 30 m/s run were not run. No v240 canonical baselines were promoted because the candidate fails seed 2 and the fast tier. No Unreal `Source/` files changed. + +## Remaining risk + +The support body can either preserve the passage interior or provide the required support at the Surface World upper landing in this seed, but the three tested compositions did not do both. The v240 evaluator change also exposes a Floating Islands chamber content-band validation failure in the fast tier. The implementation and baselines need a new premise before this round can pass. diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/RunL153Captures.py b/Standalone/Research/WorldAssemblerM3/Linux153/RunL153Captures.py new file mode 100644 index 0000000..0a1c060 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux153/RunL153Captures.py @@ -0,0 +1,182 @@ +#!/usr/bin/env python3 +"""Capture eye-height views of the six owner landing chambers for L153.""" +from __future__ import annotations + +import json +import math +import os +from pathlib import Path +import re +import subprocess +import sys + + +ROOT = Path(__file__).resolve().parents[4] +DATA = ROOT / "Standalone/data/owner_world.json" +OUT = ROOT / "Saved/Linux/l153/captures" +LAYOUT = OUT / "seed0-resolved-layout.json" +ARTIFACTS = ROOT / "Standalone/Research/WorldAssemblerM3/Linux153/captures" +HEADLESS = ROOT / "Standalone/bin/linux/VoxelForgeCoreHeadless-l153-clang" +RENDERER = ROOT / "Standalone/bin/linux/VoxelForgeOffscreenCapture-l153-clang" +STAMP = "4599aacdabb2940f223570a9a537723727989dd5236dfc084524e6dff55bc1dc" +LIMIT = ["taskset", "-c", "0-11", "prlimit", "--as=6442450944", "--"] +STAMP_RE = re.compile(r"^\[VoxelForgeSourceStamp\] sha256=([0-9a-f]{64})$", re.M) + + +def fmt(values) -> str: + return ",".join(f"{value:.6f}" for value in values) + + +def angles(camera, target) -> tuple[float, float]: + dx, dy, dz = (target[index] - camera[index] for index in range(3)) + return math.degrees(math.atan2(dx, dy)), math.degrees( + math.atan2(dz, math.hypot(dx, dy))) + + +def point_q(layout: dict, values) -> tuple[float, float, float]: + scale = layout["core_voxel_size_um"] / (256.0 * 1_000_000.0) + return tuple(value * scale for value in values) + + +def chamber_views(layout: dict) -> list[dict]: + result = [] + for passage in layout["passages"]: + controls = passage["control_points"] + for side, endpoint, neighbor in ( + ("upper", controls[0], controls[1]), + ("lower", controls[-1], controls[-2])): + chamber = passage[f"{side}_landing_chamber"] + center = point_q(layout, chamber["floor_center_q"]) + a = point_q(layout, neighbor["position_q"]) + b = point_q(layout, endpoint["position_q"]) + dx, dy = a[0] - b[0], a[1] - b[1] + length = math.hypot(dx, dy) + if length <= 1.0e-9: + raise ValueError(f"degenerate {side} tunnel tangent: {passage['stable_id']}") + dx, dy = dx / length, dy / length + eye_z = center[2] + 1.45 + distance = 9.0 + target = (center[0] + dx * distance, center[1] + dy * distance, + eye_z + (chamber["floor_gradient_q16"][0] / 65536.0 * dx + + chamber["floor_gradient_q16"][1] / 65536.0 * dy) + * distance) + camera = (center[0], center[1], eye_z) + slug = passage["stable_id"].replace("passage/", "").replace("/", "-") + result.append({"name": f"{slug}-{side}-landing", "passage": passage["stable_id"], + "side": side, "camera": camera, "target": target, + "focus": (center[0], center[1], eye_z, 18.0)}) + return result + + +def stamped_run(name: str, command: list[object], log: Path, env: dict[str, str]) -> str: + probe = subprocess.run([*LIMIT, "timeout", "15s", str(command[0]), "--print-source-stamp"], + cwd=ROOT, env=env, text=True, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, check=False, timeout=20) + match = STAMP_RE.search(probe.stdout or "") + if probe.returncode or not match or match.group(1) != STAMP: + raise RuntimeError(f"{name}: source stamp mismatch for {command[0]}") + log.parent.mkdir(parents=True, exist_ok=True) + with log.open("w", encoding="utf-8") as stream: + result = subprocess.run([*LIMIT, "timeout", "1740s", *map(str, command)], + cwd=ROOT, env=env, stdout=stream, stderr=subprocess.STDOUT, + timeout=1745, check=False) + output = log.read_text(encoding="utf-8", errors="replace") + emitted = STAMP_RE.search(output) + if result.returncode or not emitted or emitted.group(1) != STAMP: + raise RuntimeError(f"{name}: export or render failed; see {log}") + return output + + +def main() -> int: + if not DATA.is_file() or not HEADLESS.is_file() or not RENDERER.is_file(): + raise SystemExit("missing owner fixture or L153 Clang capture binaries") + OUT.mkdir(parents=True, exist_ok=True) + ARTIFACTS.mkdir(parents=True, exist_ok=True) + env = os.environ.copy() + env["LP_NUM_THREADS"] = "12" + env["XDG_CACHE_HOME"] = str(OUT / "xdg-cache") + resolve = [HEADLESS, DATA, "--world-assembler-prototype", "--stream-benchmark", + "--stream-pipeline", "--workers=12", "--clip-radius=6", "--max-clip-level=0", + "--max-level=0", "--force-generate", "--seed=0", "--recipe=surface-world", + "--resolved-layout-only", f"--resolved-layout-output={LAYOUT}"] + stamped_run("l153-resolve-layout", resolve, OUT / "resolve-layout.log", env) + layout = json.loads(LAYOUT.read_text(encoding="utf-8")) + if len(layout.get("passages", [])) != 3: + raise RuntimeError("owner layout did not resolve the expected three tunnels") + + quality_tool = ROOT / "Standalone/Tools/verify/capture_quality.py" + manifest = [] + failures = [] + for view in chamber_views(layout): + camera, target = view["camera"], view["target"] + yaw, pitch = angles(camera, target) + mesh_dir = OUT / "meshes" + mesh_dir.mkdir(parents=True, exist_ok=True) + mesh = mesh_dir / f"{view['name']}.vfmesh" + capture_layout = mesh_dir / f"{view['name']}-layout.json" + export = [HEADLESS, DATA, "--world-assembler-prototype", "--stream-benchmark", + "--stream-pipeline", "--workers=12", "--clip-radius=6", "--max-clip-level=0", + "--max-level=0", "--force-generate", "--seed=0", "--recipe=surface-world", + "--render-distance-chunks=0", f"--camera={fmt((*camera, yaw, pitch))}", + f"--resolved-layout-output={capture_layout}", f"--mesh-export={mesh}"] + stamped_run(f"l153-{view['name']}-export", export, + OUT / f"{view['name']}-export.log", env) + if not mesh.is_file() or mesh.stat().st_size == 0: + raise RuntimeError(f"{view['name']}: empty mesh export") + png = OUT / f"{view['name']}.png" + jpg = ARTIFACTS / f"after-l153-{view['name']}.jpg" + render = [RENDERER, mesh, png, "--size=1280x720", "--fov-deg=78.0", + f"--camera-m={fmt(camera)}", f"--yaw-deg={yaw:.6f}", + f"--pitch-deg={pitch:.6f}", "--tile-skirts=off", "--shade=readable", + "--headlamp=on", "--height-tint=on", "--height-center-m=-950", + "--height-range-m=60", "--tile-edges=off", + f"--focus-region={fmt(view['focus'])}"] + stamped_run(f"l153-{view['name']}-render", render, + OUT / f"{view['name']}-render.log", env) + subprocess.run([*LIMIT, "timeout", "120s", "ffmpeg", "-nostdin", + "-hide_banner", "-loglevel", "error", "-y", "-i", png, + "-frames:v", "1", "-q:v", "4", jpg], cwd=ROOT, env=env, + check=True, stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT, timeout=125) + check = subprocess.run([*LIMIT, "timeout", "120s", sys.executable, + quality_tool, jpg], cwd=ROOT, env=env, text=True, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, check=False, timeout=125) + quality_ok = check.returncode == 0 and "status=PASS" in check.stdout + if not quality_ok: + failures.append(view["name"]) + quality_line = (check.stdout.strip().splitlines()[-1] + if check.stdout.strip() else f"quality exit={check.returncode}") + manifest.append({"version": "after-l153-candidate3", "view": view["name"], + "passage": view["passage"], "side": view["side"], + "file": str(jpg.relative_to(ROOT)), "camera_m": camera, + "target_m": target, "yaw_deg": yaw, "pitch_deg": pitch, + "source_stamp": STAMP, "pose_layout_identity": layout.get("stable_identity"), + "quality_status": "PASS" if quality_ok else "FAIL", "quality": quality_line}) + print(f"[L153Capture] view={view['name']} quality={'PASS' if quality_ok else 'FAIL'} " + f"file={jpg.relative_to(ROOT)}", flush=True) + + (ARTIFACTS / "manifest.json").write_text( + json.dumps(manifest, indent=2) + "\n", encoding="utf-8") + with (ARTIFACTS / "INDEX.md").open("w", encoding="utf-8") as index: + index.write("# L153 owner landing chamber captures\n\n" + "Seed 0 eye-height poses resolved from the L153 candidate layout. The before " + "images use the L151 HEAD state; after images show L153 candidate 3, which " + "did not pass the seed 2 support gate.\n\n") + for view in chamber_views(layout): + image = f"after-l153-{view['name']}.jpg" + before = ROOT / "Standalone/Research/WorldAssemblerM3/Linux151/captures" \ + / f"after-l151-{view['name']}.jpg" + index.write(f"## {view['passage']} / {view['side']} landing\n\n" + f"- Before: [{before.name}](../../Linux151/captures/{before.name})\n" + f"- After: [image]({image})\n\n") + index.write(f"Capture quality failures: {len(failures)}/{len(manifest)}.\n") + print(f"[L153CaptureSummary] chamber_views={len(manifest)} " + f"quality_failures={len(failures)}", flush=True) + return 0 if not failures else 1 + + +if __name__ == "__main__": + try: + raise SystemExit(main()) + except Exception as error: + print(f"[L153CaptureFailure] {error}", file=sys.stderr, flush=True) + raise SystemExit(1) diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/captures/INDEX.md b/Standalone/Research/WorldAssemblerM3/Linux153/captures/INDEX.md new file mode 100644 index 0000000..06e64e4 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux153/captures/INDEX.md @@ -0,0 +1,35 @@ +# L153 owner landing chamber captures + +Seed 0 eye-height poses resolved from the L153 candidate layout. The before images use the L151 HEAD state; after images show L153 candidate 3, which did not pass the seed 2 support gate. + +## passage/0-1/0 / upper landing + +- Before: [after-l151-0-1-0-upper-landing.jpg](../../Linux151/captures/after-l151-0-1-0-upper-landing.jpg) +- After: [image](after-l153-0-1-0-upper-landing.jpg) + +## passage/0-1/0 / lower landing + +- Before: [after-l151-0-1-0-lower-landing.jpg](../../Linux151/captures/after-l151-0-1-0-lower-landing.jpg) +- After: [image](after-l153-0-1-0-lower-landing.jpg) + +## passage/1-2/0 / upper landing + +- Before: [after-l151-1-2-0-upper-landing.jpg](../../Linux151/captures/after-l151-1-2-0-upper-landing.jpg) +- After: [image](after-l153-1-2-0-upper-landing.jpg) + +## passage/1-2/0 / lower landing + +- Before: [after-l151-1-2-0-lower-landing.jpg](../../Linux151/captures/after-l151-1-2-0-lower-landing.jpg) +- After: [image](after-l153-1-2-0-lower-landing.jpg) + +## passage/2-3/0 / upper landing + +- Before: [after-l151-2-3-0-upper-landing.jpg](../../Linux151/captures/after-l151-2-3-0-upper-landing.jpg) +- After: [image](after-l153-2-3-0-upper-landing.jpg) + +## passage/2-3/0 / lower landing + +- Before: [after-l151-2-3-0-lower-landing.jpg](../../Linux151/captures/after-l151-2-3-0-lower-landing.jpg) +- After: [image](after-l153-2-3-0-lower-landing.jpg) + +Capture quality failures: 0/6. diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-lower-landing.jpg b/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-lower-landing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d6fe05fc462d99e5d402a750d37a4cc73b48d2f GIT binary patch literal 17774 zcmdse30M>Xoa(I9U|LX1p5S`2g>1M3>Gi&Cz1uu=pUPp`h0U);`{uT zoq~jL$*;e-eTa4NY3qQKuZFU^)b#Rq5MBh^EC>l;HbdCWkiceW`4O~105pgfz(a=6 z^G%TkY$k>QHEKXL*S?c0yBn?=5r2Y4IlFjokfqu*+%JW9@T_bZ=G?9=i;u{dX;aCQ zAK;c1*Qx0RL}bnM{AD1M@${L4Or7@8%$TQheX=gsQV(o8a4pfr!EQG17^oMmr^Q%M z991=Ux$ty8)zM@zH4088ENmI2KE#Z&ELs?=WZGxf|#% ze%kv1O-N?ea_5FzOALfD#@W+wAOS%%iclg&sGBT97P>46@^~^1qQQ&-8A);Q#8AX> zaQb$BC&PJ;>w?{hiUM zA;K99heYY3FhxpC6*klg5mzozD1o_Q=nDY_I~r(qf#=-rt0J z4M*i)NZYm8_i8rCCF*wDNdNWzP;c|HnM&{Lfx%Nhj#XQGZn{1^b$?sB^wBbdQ2mmh z;c?a5{mk*oiQ#MC&J48;Wcb#WRXE%ib4g~E1|aJC+$kAhpI4=ebVAAw zWNCW{34s<{HQ+xk!!P*9!4e zsXOrLe7SX}jY}qDv9C#O_=4rYGNe^dc^0UhY-P^?=XTwJv{3JW3p15l-DmR}p4{Ix z(`Zw9ASLv`x%rZ7JHhBq%?9T+loec)3Dhf(AL)^H;piDSWLKWJeJ60S{P2Y6J9B&c>F8Bm+2Yrope zZx;X)&`p-@B+Jj|`m(b050=ih5nJ_17j0xr1MAr;lhSd5^5U361dD8O1DFRILZfBs#rotQxx}5_v5685v}$ilhw&G5LxW;2*6642O&V1Dr$K zgrHU+gSkF&w4hRMwUwpm?ZXN|E|vR1zZz z8JN!xtVARF?Q; zp_;_EDd?1?1gX#oOd^D35;rgeU7PW0PA%k4HAu~Oobjg)pK%7^jD3!!co74NgN)xb z(em9ZDJgUcS@+-9&F(m~7&HWrE;7RFDtverQ)*2SPESo91~QiGnWh=%u5io#ri-m< zhSjGow16&c8%t9!Cz_;R=NU=)t?g7lH!AHoB#F2b5RUgmrxH}u1QAh$XEiX(fM5jS z1Tm1*zW}?iooZ6JqD$nD?I$I_=+dR&b#jkb81K)HWBr4}5RGI)47w6hXMMCHZ10#P z-n4kAP{Qhn)KTL5i0fPY!2Dmx!Zy}%Ku6E!`ZCkoR5#zwiZuqwR$a4tc9u?6BvDHw zJi3Z5Ruw7mcR&mXBB%)QW&xCH6(�c+hYqsDUa(Hi9;HdP#2XRFgFEIt?Vt6EFz; zBCp*Bwh(FS%|8u;_yIBWqC7V6fyh&7O%5*q*!EEyqpJRCWc@`?inBTiU+qs;ViF&C zof!PgM>^TW2j8au?|rO0^;NDu(%e)9aY~Mt`vWJ}Kx0=+wc{LDSHkYbA2to`*mp#g zYgZ8XOVez|E>)SJs~veBR}z-aoUcCt`7VEY{)%liF3;u^8Iciu=+`}QP>zG7Fj7WTp8ld0;27--`edKNf?h># z*Na&ZHGov75%l&20b_T(@)!C zHz*Tdf9U5J!=Q61cFvbJ=6yABPxF`OK3l6v(Fp@Fn+k{T9ZKzV({2npU8858VxOCO zErT-{cl~6qY(aH^sa;l%r}YCT!fs@Y1*F;07j7p4?-^{H z3Y}WIaNlFwaLr`(kJF>oi=Tg{Iy1AFo2HiRmH4XdzC3<%Xh-{NoyCUvD7Ry##wVK; z-GoQX8MDPPahbc?ZZt`A%okE)&Bn*ANL$KGMGC8e`u+|jy{}~$Bm=+`b`tso71lOhjzbk%Z?5HK2~v|=jWb*Gfj23NOGT*rfqj_Uue4J zc(HL8x2ow(zJmFIoSDZ{QY}xP8AxY4`nH5l`G=g1m3?B+nO5aDIo0XDklr&Ga#*g$ zP4%4GzRw>_X!ciV4Sn?_HS>^1XUipH^HT}+Izb+X4yxNxN=~M956KSY)OWVo)SFjL zM}Pg(#EAAbO6ZsI6`>CGP5WH^0|}=cC2oa?&OUzNGwaXN`ApgSg8zZ&AKNNZ&Rq}L zUSPQWMpZzSU5&)y{t(8Z*~9t5LASfE`aW)&w`;0HQ$i0Pim&mMkZ6;2*4tI(buM7E zdBpG8Y7g+aSn=3%eyy=2SB(RAPiVvVjApA7f+FDUGcr~hip0K;=)NDsb zZnSG>N~(4$zAxr$=Y|&FvN-J!+fdJ;FypYiY=g}7pJw%Xiv$og6s-0^{5!6=_^~bB+8V^kxzfAYM?s|IOedcV~g(|Pk9>d~ou1^wU(r|O$ z@tx=Pg+-eG(%QXrNH$>3bkoPf;Z{W)r+mB|fh1a7_~^8{x}Mt!CXdc{J^ox}?&M!J z^-t@>i}fcGOm-+<=vTEHxU8;z^JL@HwbP{M#Z3%H%elDGZFvs(Sfp3-`2+ZI7x~*|uZLQ0SsdBaqRH z(bFW-K!ot#y06bwI1fB454Jt6UuH7@V!F+6STDf*ZhZCdJeTv_8~?EWNo;^Veu-2W zDpynGF;|?DQ5vLk}Lk2LuPl7CF;ecH>Yrt$Spb2?uSV$LLqTt3$Td2-iHD53vkYRKX zB>C0xMpBaaw=Fq>1iWt4*%71|TMDks2$*Av_pbeXMl*BQysE^-rt;nWcm=ie=~=m9 z4QHwO98yB{SR*%a`j&uWD_5BXJCJUc% zf=0hG5X|v>l;^E2aD^Ge_ z^p{Ggi)AJ14o+n|WQW@1`!Y;_R%HJ!fqxvqR`ePW0=A zP;#WA>Z?qpyEk2IIDI8M>5z+_tXD~x->K;v(R!uc5fmS~L2Y0XH5VpNZ*|E{(ZO)Wz|%@|Zp_�=J#u8e+v~F8-iV0W`R!tTVY!rNrMV_; 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 I*>d;)0~i4ewg3PC literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-upper-landing.jpg b/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-upper-landing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c189afc9727d38c0e757129484a61b4cd0d90dc9 GIT binary patch literal 26754 zcmeFZcUV))*D$(4P^^G}NR&fwC;FX z%1DSw$csr_kO21jfXe_K9o=EN!$xxFYo!iIv@w20uE47Q2~D?>H}0XvJtrSTm-%u|<67}%DU<@aa#FD*NGN0r%XqWk(m;^i*go%By5y&4m{-YF$_~299{0^T~(Ho4QR)u8j*6=Dlr_ z3)?mq6MY$rFjdfF-jc$vbEd1Xn(XE@TVgt-eceqW+hd+*2>U0QiJ87N7}`A4@!pOFd@y?Bl@f$N;mC?5<)%AP`t;-0hMi!aiL{yk_8FPJ_ zP?Q$5opaC(GMJ!fe(+3;x3XR1TB62I!VHn@%B|!w@=n{rSMqkr+l8v&9~cnjW44e|g+xXBC1;KJ;n&_y zCW|Ah;Omc1p0iw(cGrV9a_ZUmSjRs(an3^E>&h}gVjf-5SsA+Q`zEj(CHgf+`Py={ zH=g@k2Me)+@l=YDg@3yod3oK@uYU4UQWLtS{G9T<|3rIQ_4cb(Z9lG+ww{q?=nfk~ zD-Z$GT7)9zoOMp69K{Xk--XUYi3{kAPZK7P>ATa-L)Hf2xH1rDBpqJHYAY+~N&8Bf zTn^88Hx)jOL@1vM$>@7E&RNyK^kyrtOP%UnUE=xAk^5243kel*qaK|z9kU<(K2?$mB!yeC zT~d8!xy4WqE%&Ij@^XQrKjI7x8ZKu^q>o?a)9m}Ohlq@C1Gh($( z*&$L}?s@Zm^Nuw~Fb-*Gxcf8|G27weq`T_1qS8*5UpqXhdMJ2RPE%rBmG$?v%Et7- zMpK0n{^~^cWK*XsLaC9TMZ%7u9%C1anK$iA?X@5Js6Uo);qg(&Qe?ek; zw{170ch_2GSZVUh*WJbw6G|DQ&MIqhD+22q;%4K89a7c%6BVko$o7|qF?C6s$zdoH zmDYWv7nm)BRNzg}&O2R@f)~)eV0z>NK8jrWu>H8;^}EIa_bmb7TVd z6^9H+Y{tl12(8t1&HlB@liyd_;KwSb#jelp0W-<6eIhHaZjRhhr&|)H$BDWcPwLGE zIDGpRqqE;-_r64HEl)$cW;=b__JH24p;O$(YbLc}WIt7F*|22aFjq5!l+P`r+3{bz z0@?@GUoQ=nkDC}I3~$L-!pZ%1&z358yUn>wdXD~lL_$9w(WuGKM`ZR`b(Gw*R@mSx zU0ubQ9g^1|iBWk{PD&vaOE})@T$SrNuloq8wS(wjEJIawrOo*){6HVC?-MHlC&ocR zpC1pX@B0H%L@%X8{L=$sYu(UopgbVb=&tHOtyRf zOMUXsdaD2D^}cRXt7mry{1wJ`iBrjDe%DzckoB1UFq8UTf5YL=(YDQIb^8NA64xnv|>8MhiX|lzoFu@3~q

XW?ofx|7PT}B&d6+f6?z9h^JQ&S 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 literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-1-2-0-lower-landing.jpg b/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-1-2-0-lower-landing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3fb78489ffed68cf7c90ea1b4441ff4aecf66aeb GIT binary patch literal 19871 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 literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-lower-landing.jpg b/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-lower-landing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5673317085439c7a6d5aab0499dc6bda60d74b02 GIT binary patch literal 20117 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 Z`~9f?-|X-IJnMf(;Qy@=_~zY>{{^Wb_VEA! literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-upper-landing.jpg b/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-upper-landing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..530e4879d2b66ee2b3c4debef62f219698199473 GIT binary patch literal 21954 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 literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/captures/manifest.json b/Standalone/Research/WorldAssemblerM3/Linux153/captures/manifest.json new file mode 100644 index 0000000..efbdacd --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux153/captures/manifest.json @@ -0,0 +1,140 @@ +[ + { + "version": "after-l153-candidate3", + "view": "0-1-0-upper-landing", + "passage": "passage/0-1/0", + "side": "upper", + "file": "Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-upper-landing.jpg", + "camera_m": [ + 37.0, + -5.25, + -372.3810546875 + ], + "target_m": [ + 28.40474992442715, + -7.918646874047773, + -371.83751160914875 + ], + "yaw_deg": -107.24848481126237, + "pitch_deg": 3.4561048595792685, + "source_stamp": "4599aacdabb2940f223570a9a537723727989dd5236dfc084524e6dff55bc1dc", + "pose_layout_identity": "resolved-layout-v3-fnv64:46a5ebaca9fef170", + "quality_status": "PASS", + "quality": "[CaptureQuality] image=/home/jahni/VoxelM/Plugins/VoxelForge/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-upper-landing.jpg pixels=921600 mean_luma=117.986 stddev_luma=14.908 coverage_luma_gt12=1.00000 thresholds=(stddev>=2.0,coverage>=0.001) status=PASS" + }, + { + "version": "after-l153-candidate3", + "view": "0-1-0-lower-landing", + "passage": "passage/0-1/0", + "side": "lower", + "file": "Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-lower-landing.jpg", + "camera_m": [ + 25.8369140625, + 3.19921875, + -736.6798828125 + ], + "target_m": [ + 17.97380590951016, + -1.1793118453464206, + -734.970169262755 + ], + "yaw_deg": -119.11101808688004, + "pitch_deg": 10.756207017349817, + "source_stamp": "4599aacdabb2940f223570a9a537723727989dd5236dfc084524e6dff55bc1dc", + "pose_layout_identity": "resolved-layout-v3-fnv64:46a5ebaca9fef170", + "quality_status": "PASS", + "quality": "[CaptureQuality] image=/home/jahni/VoxelM/Plugins/VoxelForge/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-0-1-0-lower-landing.jpg pixels=921600 mean_luma=111.545 stddev_luma=12.291 coverage_luma_gt12=1.00000 thresholds=(stddev>=2.0,coverage>=0.001) status=PASS" + }, + { + "version": "after-l153-candidate3", + "view": "1-2-0-upper-landing", + "passage": "passage/1-2/0", + "side": "upper", + "file": "Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-1-2-0-upper-landing.jpg", + "camera_m": [ + 19.166015625, + -14.2001953125, + -731.8810546875 + ], + "target_m": [ + 10.35825176774404, + -16.050410390488395, + -733.216132282697 + ], + "yaw_deg": -101.86342177874246, + "pitch_deg": -8.437834550031965, + "source_stamp": "4599aacdabb2940f223570a9a537723727989dd5236dfc084524e6dff55bc1dc", + "pose_layout_identity": "resolved-layout-v3-fnv64:46a5ebaca9fef170", + "quality_status": "PASS", + "quality": "[CaptureQuality] image=/home/jahni/VoxelM/Plugins/VoxelForge/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-1-2-0-upper-landing.jpg pixels=921600 mean_luma=117.059 stddev_luma=15.604 coverage_luma_gt12=1.00000 thresholds=(stddev>=2.0,coverage>=0.001) status=PASS" + }, + { + "version": "after-l153-candidate3", + "view": "1-2-0-lower-landing", + "passage": "passage/1-2/0", + "side": "lower", + "file": "Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-1-2-0-lower-landing.jpg", + "camera_m": [ + 19.166015625, + -14.2001953125, + -753.05390625 + ], + "target_m": [ + 10.48848361510052, + -16.587754362485967, + -751.7193175939389 + ], + "yaw_deg": -105.38384894032598, + "pitch_deg": 8.434788863627224, + "source_stamp": "4599aacdabb2940f223570a9a537723727989dd5236dfc084524e6dff55bc1dc", + "pose_layout_identity": "resolved-layout-v3-fnv64:46a5ebaca9fef170", + "quality_status": "PASS", + "quality": "[CaptureQuality] image=/home/jahni/VoxelM/Plugins/VoxelForge/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-1-2-0-lower-landing.jpg pixels=921600 mean_luma=119.900 stddev_luma=14.906 coverage_luma_gt12=1.00000 thresholds=(stddev>=2.0,coverage>=0.001) status=PASS" + }, + { + "version": "after-l153-candidate3", + "view": "2-3-0-upper-landing", + "passage": "passage/2-3/0", + "side": "upper", + "file": "Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-upper-landing.jpg", + "camera_m": [ + -20.0625, + -5.068359375, + -812.075390625 + ], + "target_m": [ + -13.604954164712868, + -11.337338700629157, + -813.6662645746064 + ], + "yaw_deg": 134.15112141809087, + "pitch_deg": -10.024269857937275, + "source_stamp": "4599aacdabb2940f223570a9a537723727989dd5236dfc084524e6dff55bc1dc", + "pose_layout_identity": "resolved-layout-v3-fnv64:46a5ebaca9fef170", + "quality_status": "PASS", + "quality": "[CaptureQuality] image=/home/jahni/VoxelM/Plugins/VoxelForge/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-upper-landing.jpg pixels=921600 mean_luma=118.188 stddev_luma=15.874 coverage_luma_gt12=1.00000 thresholds=(stddev>=2.0,coverage>=0.001) status=PASS" + }, + { + "version": "after-l153-candidate3", + "view": "2-3-0-lower-landing", + "passage": "passage/2-3/0", + "side": "lower", + "file": "Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-lower-landing.jpg", + "camera_m": [ + -20.0625, + -5.068359375, + -900.0333984375 + ], + "target_m": [ + -14.865342978484083, + -12.416118141706198, + -898.4427583280197 + ], + "yaw_deg": 144.72777711381306, + "pitch_deg": 10.022826283920647, + "source_stamp": "4599aacdabb2940f223570a9a537723727989dd5236dfc084524e6dff55bc1dc", + "pose_layout_identity": "resolved-layout-v3-fnv64:46a5ebaca9fef170", + "quality_status": "PASS", + "quality": "[CaptureQuality] image=/home/jahni/VoxelM/Plugins/VoxelForge/Standalone/Research/WorldAssemblerM3/Linux153/captures/after-l153-2-3-0-lower-landing.jpg pixels=921600 mean_luma=121.648 stddev_luma=16.295 coverage_luma_gt12=1.00000 thresholds=(stddev>=2.0,coverage>=0.001) status=PASS" + } +] diff --git a/Standalone/Research/WorldAssemblerM3/Linux153/l153-chamber-support.patch b/Standalone/Research/WorldAssemblerM3/Linux153/l153-chamber-support.patch new file mode 100644 index 0000000..951ddbd --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux153/l153-chamber-support.patch @@ -0,0 +1,302 @@ +diff --git a/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h b/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h +index 4799b9e..e3ecf5e 100644 +--- a/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h ++++ b/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h +@@ -512,7 +512,8 @@ namespace VoxelForgeCore + // boundary-blended host rock from widening the authored passage wall. + // v238 plans one resolved passage spline with explicit landing chambers. + // v239 plans their floor planes as the passage's continuous floor profile. +- inline constexpr std::uint32_t WorldAssemblyEvaluatorVersion = 239; ++ // v240 gives landing chambers and their route approaches tapered floor support. ++ inline constexpr std::uint32_t WorldAssemblyEvaluatorVersion = 240; + + enum class FieldChannel : std::uint32_t + { +diff --git a/Standalone/Core/src/ShapeWorldInternal.h b/Standalone/Core/src/ShapeWorldInternal.h +index 6b1a6af..f0e0da4 100644 +--- a/Standalone/Core/src/ShapeWorldInternal.h ++++ b/Standalone/Core/src/ShapeWorldInternal.h +@@ -57,6 +57,7 @@ static constexpr double VF_PassageShellThicknessMetres=0.75; + static constexpr double VF_PassageWallReliefMetres=0.21; + static constexpr double VF_PassageCornerBlendMetres=0.50; + static constexpr double VF_PassageReachMarginMetres=0.01; ++static constexpr double VF_LandingSupportBoundsDepthMetres=2.20; + // Radial support in metres: shell + maximum relief + the smooth-max support + // (corner-blend width / 6) + a 1 cm guard for float and bound rounding. + static constexpr double VF_PassageInfluenceReachMetres= +@@ -1260,11 +1261,92 @@ public: + constexpr double WallReliefMetres=VF_PassageWallReliefMetres; + constexpr double OpenAirSideWallHeightMetres=1.0; + constexpr double MouthShellBlendMetres=5.0; ++ // Landing floors carry a tapered footing below their walk plane. Surface ++ // landings use local native ground within a 2 m budget; cave and shaft ++ // landings reuse the cave planner's 0.75 m floor-support depth. ++ constexpr double LandingSupportMaximumDepthMetres=2.0; ++ constexpr double LandingSupportFallbackDepthMetres=0.75; ++ constexpr double LandingSupportTaperMetres=1.0; ++ constexpr double LandingSupportGroundEmbedMetres=0.20; ++ constexpr double LandingSupportTopBiasSubvoxels=2.0; + const double qPerMetre=Q*1000000.0/ + std::max(1,ResolvedLayout->coreVoxelSizeMicrometres); + const double qx=static_cast(X)*Q,qy=static_cast(Y)*Q, + qz=static_cast(Z)*Q; + const double shellThickness=FloorShellThicknessMetres*qPerMetre; ++ const auto* queryStratum=FindBoundStratumForManagerZ(Z); ++ double landingSupportDistanceVoxels=std::numeric_limits::infinity(); ++ double landingSupportAirClipVoxels=-std::numeric_limits::infinity(); ++ double routeUnionDistance=std::numeric_limits::infinity(); ++ bool surfaceGroundQueried=false,surfaceGroundValid=false; ++ double surfaceGroundVoxels=0.0; ++ const bool surfaceLandingStratum=queryStratum&&queryStratum->Resolved ++ &&queryStratum->Resolved->generatorKind=="SurfaceWorld"; ++ const auto surfaceGroundAtQuery=[&]() ++ { ++ if(!surfaceGroundQueried) ++ { ++ surfaceGroundQueried=true; ++ const double layoutWidth=GetResolvedLayoutChunkWidthVoxels(); ++ if(layoutWidth>0.0) ++ { ++ const int32 chunkZ=FMath::FloorToInt( ++ static_cast(static_cast(Z)/layoutWidth)); ++ float ground=0.0f,ceiling=0.0f; ++ surfaceGroundValid=GetNativeSurfaceHeightsAt( ++ X,Y,chunkZ,ground,ceiling); ++ if(surfaceGroundValid)surfaceGroundVoxels=ground; ++ } ++ } ++ return surfaceGroundValid?surfaceGroundVoxels ++ :std::numeric_limits::quiet_NaN(); ++ }; ++ const auto includeLandingSupport=[&](double floorSubvoxels, ++ double centerDistanceSubvoxels,double footprintRadiusSubvoxels) ++ { ++ if(!(footprintRadiusSubvoxels>0.0))return; ++ const double floorVoxels=floorSubvoxels/Q; ++ const double centerDistanceVoxels=centerDistanceSubvoxels/Q; ++ const double radiusVoxels=footprintRadiusSubvoxels/Q; ++ const double supportDepthVoxels=(surfaceLandingStratum ++ ?LandingSupportMaximumDepthMetres:LandingSupportFallbackDepthMetres) ++ *qPerMetre/Q; ++ const double taperVoxels=LandingSupportTaperMetres*qPerMetre/Q; ++ const double embedVoxels=LandingSupportGroundEmbedMetres*qPerMetre/Q; ++ const double topBiasVoxels=LandingSupportTopBiasSubvoxels/Q; ++ if(centerDistanceVoxels>=radiusVoxels+taperVoxels ++ ||static_cast(Z)(Z)>floorVoxels+topBiasVoxels)return; ++ ++ double groundAnchorVoxels=floorVoxels-supportDepthVoxels; ++ if(surfaceLandingStratum) ++ { ++ const double ground=surfaceGroundAtQuery(); ++ if(std::isfinite(ground)) ++ groundAnchorVoxels=std::max(groundAnchorVoxels, ++ std::min(ground,floorVoxels)); ++ } ++ const double radialFade=std::clamp( ++ (radiusVoxels+taperVoxels-centerDistanceVoxels)/taperVoxels, ++ 0.0,1.0); ++ const double smoothFade=radialFade*radialFade*(3.0-2.0*radialFade); ++ const double supportTop=groundAnchorVoxels ++ +(floorVoxels+topBiasVoxels-groundAnchorVoxels)*smoothFade; ++ const double supportBottom=groundAnchorVoxels-embedVoxels*smoothFade; ++ const double supportDistance=std::max( ++ centerDistanceVoxels-(radiusVoxels+taperVoxels), ++ std::max(static_cast(Z)-supportTop, ++ supportBottom-static_cast(Z))); ++ landingSupportDistanceVoxels=std::min(landingSupportDistanceVoxels, ++ supportDistance); ++ }; ++ const auto applyLandingSupport=[&](float composed) ++ { ++ if(!std::isfinite(landingSupportDistanceVoxels))return composed; ++ const double clippedSupportDistance=std::max(landingSupportDistanceVoxels, ++ landingSupportAirClipVoxels); ++ return std::min(composed,static_cast(clippedSupportDistance)); ++ }; + struct FNearestTubeSample + { + double signedDistance=std::numeric_limits::infinity(); +@@ -1284,7 +1366,6 @@ public: + std::numeric_limits::infinity(); + double plannedTunnelPassageShellDistance=std::numeric_limits::infinity(); + const std::uint32_t reliefSeed=static_cast(Owner?Owner->Seed:0); +- const auto* queryStratum=FindBoundStratumForManagerZ(Z); + const bool plannedTunnelStratum=queryStratum&&queryStratum->Resolved + &&(queryStratum->Resolved->generatorKind=="TunnelNetwork" + ||queryStratum->Resolved->generatorKind=="VerticalShafts") +@@ -1346,6 +1427,9 @@ public: + const double radialDistance=DeterministicSqrt( + (qx-centerX)*(qx-centerX)+(qy-centerY)*(qy-centerY)) + -landingChamber->radiusSubvoxels; ++ includeLandingSupport(floorCenterZ, ++ radialDistance+landingChamber->radiusSubvoxels, ++ landingChamber->radiusSubvoxels); + const double floorDistance=floorCenterZ-qz; + const double ceilingDistance=qz-(floorCenterZ + +landingChamber->clearHeightSubvoxels); +@@ -1578,6 +1662,42 @@ public: + visitShellSegment); + } + if(!nearest.valid)continue; ++ if(queryStratum&&queryStratum->Resolved ++ &&(queryStratum->StrateIndex==passage.upperStrateIndex ++ ||queryStratum->StrateIndex==passage.lowerStrateIndex) ++ &&nearest.floorSegmentIndexStrateIndex ++ ==passage.upperStrateIndex ++ &&floorAlongMetres>=-LandingSupportTaperMetres ++ &&floorAlongMetres<=LandingApproachLengthMetres; ++ const bool lowerApproach=queryStratum->StrateIndex ++ ==passage.lowerStrateIndex ++ &&constants.totalPathLengthMetres-floorAlongMetres ++ <=LandingApproachLengthMetres ++ &&constants.totalPathLengthMetres-floorAlongMetres ++ >=-LandingSupportTaperMetres; ++ if(floorSegment.routeSegment&&(upperApproach||lowerApproach)) ++ { ++ const double routeX=floorSegment.a[0] ++ +nearest.floorT*floorSegment.delta[0]; ++ const double routeY=floorSegment.a[1] ++ +nearest.floorT*floorSegment.delta[1]; ++ const double routeDistance=DeterministicSqrt( ++ (qx-routeX)*(qx-routeX)+(qy-routeY)*(qy-routeY)); ++ const double floorRadius=floorSegment.radiusA ++ +std::clamp(nearest.floorT,0.0,1.0)*floorSegment.radiusDelta; ++ const double supportRadius=std::max(0.0, ++ floorRadius-0.23*qPerMetre); ++ includeLandingSupport(nearest.floorCenterZ-nearest.floorDepth, ++ routeDistance,supportRadius); ++ } ++ } + const double wallElevationMetres=(qz-(nearest.floorCenterZ + -nearest.floorDepth))/qPerMetre; + double distanceToCenter=std::max(1.0e-9, +@@ -1648,6 +1768,8 @@ public: + static_cast(shapedDistance)-floorShellThickness); + nearest.floorShellSignedDistance=std::min( + nearest.floorShellSignedDistance,floorShellDistance); ++ routeUnionDistance=std::min(routeUnionDistance, ++ static_cast(shapedDistance)); + unionDistance=std::min(unionDistance,static_cast(shapedDistance)); + unionFloorShellDistance=std::min(unionFloorShellDistance, + nearest.floorShellSignedDistance); +@@ -1657,13 +1779,18 @@ public: + std::min(localShellDistance,nearest.shellSignedDistance)); + } + +- if(!std::isfinite(unionDistance))return density; ++ if(!std::isfinite(unionDistance))return applyLandingSupport(density); + const float passageAirDistance=static_cast(-unionDistance/Q); ++ // Keep support out of the passage bore while allowing it under the ++ // chamber's own floor, where the chamber volume is naturally open. ++ if(std::isfinite(routeUnionDistance)) ++ landingSupportAirClipVoxels=-routeUnionDistance/Q; + // Keep the landing floor shell where it is exposed to the chamber. At + // the tunnel joint, the passage void must be able to open through that + // floor shell so its own continuous floor and shell define the throat. + if(unionLandingChamberFloorShellDistance<0.0&&unionDistance>0.0) +- return static_cast(unionLandingChamberFloorShellDistance/Q); ++ return applyLandingSupport( ++ static_cast(unionLandingChamberFloorShellDistance/Q)); + const auto plannedPortalWalkCorridorContains=[&]() + { + if(!queryStratum||!queryStratum->Resolved +@@ -1855,7 +1982,7 @@ public: + // otherwise the neighboring field can widen its wall by a whole + // shell thickness. Native graph air still wins above via the + // positive nativeTunnelFieldDensity path. +- return passageAirDistance; ++ return applyLandingSupport(passageAirDistance); + } + // Air is the union of the native graph and passage voids. Keeping the + // signed passage distance outside the void as well gives marching cubes +@@ -1865,9 +1992,10 @@ public: + &&plannedTunnelPassageShellDistance<0.0&&unionDistance>0.0) + { + if(nativeTunnelFieldDensity>=0.0f&&plannedPortalWalkCorridorContains()) +- return std::max(nativeTunnelFieldDensity,passageAirDistance); +- return std::min(density, +- static_cast(plannedTunnelPassageShellDistance/Q)); ++ return applyLandingSupport( ++ std::max(nativeTunnelFieldDensity,passageAirDistance)); ++ return applyLandingSupport(std::min(density, ++ static_cast(plannedTunnelPassageShellDistance/Q))); + } + if(nativeTunnelFieldDensity>=0.0f) + { +@@ -1875,29 +2003,30 @@ public: + // cave voids after the explicit mouth fade has ended. Keep this scoped + // to the planner-crossing passage shell so nearby portal joints stay open. + if(plannedTunnelPassageShellDistance<0.0&&unionDistance>0.0) +- return std::min(nativeTunnelFieldDensity, +- static_cast(plannedTunnelPassageShellDistance/Q)); ++ return applyLandingSupport(std::min(nativeTunnelFieldDensity, ++ static_cast(plannedTunnelPassageShellDistance/Q))); + constexpr float NativeCaveAirMarginVoxels=0.75f; + if(unionDistance>0.0 + &&nativeTunnelFieldDensity(unionFloorShellDistance/Q)); +- return std::max(nativeTunnelFieldDensity,passageAirDistance); ++ return applyLandingSupport(std::min(nativeTunnelFieldDensity, ++ static_cast(unionFloorShellDistance/Q))); ++ return applyLandingSupport( ++ std::max(nativeTunnelFieldDensity,passageAirDistance)); + } + if(nativeFloorSupport!=std::numeric_limits::lowest() + &&nativeFloorSupport<0.0f) +- return std::min(nativeFloorSupport,unionDistance<=0.0 +- ?passageAirDistance:density); ++ return applyLandingSupport(std::min(nativeFloorSupport,unionDistance<=0.0 ++ ?passageAirDistance:density)); + if(nativeTunnelFieldDensity!=std::numeric_limits::lowest()) +- return std::max(density,passageAirDistance); ++ return applyLandingSupport(std::max(density,passageAirDistance)); + if(unionDistance>0.0&&unionShellDistance<0.0&&density>=0.0f) + { + if(connectedSurfaceLandingShellContains()) +- return std::max(density,passageAirDistance); +- return static_cast(unionShellDistance/Q); ++ return applyLandingSupport(std::max(density,passageAirDistance)); ++ return applyLandingSupport(static_cast(unionShellDistance/Q)); + } +- return std::max(density,passageAirDistance); ++ return applyLandingSupport(std::max(density,passageAirDistance)); + } + + float ApplyResolvedStrateComposition(float density,float X,float Y,float Z) const +@@ -2044,8 +2173,11 @@ public: + static_cast(chamber.floorGradientQ16[0])/65536.0, + static_cast(chamber.floorGradientQ16[1])/65536.0); + const double extent=reachCoreVoxels+0.01; ++ const double supportDepth=(VF_LandingSupportBoundsDepthMetres*1000000.0/ ++ std::max(1, ++ ResolvedLayout->coreVoxelSizeMicrometres)); + const double low[3]={cx-radius-extent,cy-radius-extent, +- cz-floorExtent-extent}; ++ cz-floorExtent-supportDepth-extent}; + const double high[3]={cx+radius+extent,cy+radius+extent, + cz+floorExtent+static_cast( + chamber.clearHeightSubvoxels)/Q+extent}; +@@ -5484,8 +5616,12 @@ private: + const double height=static_cast( + chamber.clearHeightSubvoxels)/Q; + const double extent=requiredReachCoreVoxels+0.01; ++ const double supportDepth=(VF_LandingSupportBoundsDepthMetres*1000000.0/ ++ std::max(1, ++ ResolvedLayout->coreVoxelSizeMicrometres)); + const std::array minimum{ +- cx-radius-extent,cy-radius-extent,cz-floorExtent-extent}; ++ cx-radius-extent,cy-radius-extent, ++ cz-floorExtent-supportDepth-extent}; + const std::array maximum{ + cx+radius+extent,cy+radius+extent, + cz+floorExtent+height+extent};