#!/usr/bin/env python3 """Render the L115 view set with the L119 candidate binaries.""" from __future__ import annotations import importlib.util import json from pathlib import Path ROOT = Path(__file__).resolve().parents[4] RESEARCH = Path(__file__).resolve().parent SPEC = importlib.util.spec_from_file_location( "l115_capture_runner", ROOT / "Standalone/Research/WorldAssemblerM3/Linux115/RunL115Captures.py") if SPEC is None or SPEC.loader is None: raise SystemExit("cannot load the L115 capture view definitions") RUNNER = importlib.util.module_from_spec(SPEC) SPEC.loader.exec_module(RUNNER) # Reuse L115's exact camera and station definitions, while rendering through L119. RUNNER.CAPTURES = RESEARCH / "captures/L119" RUNNER.SAVED = ROOT / "Saved/Linux/l119/captures" RUNNER.HELPERS.RESEARCH = RESEARCH RUNNER.BINARIES = { "L115": ROOT / "Saved/Linux/l119/bin/VoxelForgeCoreHeadless-l119-clang"} RUNNER.RENDERERS = { "L115": ROOT / "Saved/Linux/l119/bin/VoxelForgeOffscreenCapture-l119-clang"} RUNNER.HELPERS.BINARIES = RUNNER.BINARIES RUNNER.HELPERS.RENDERERS = RUNNER.RENDERERS def main() -> int: result = RUNNER.main() if result != 0: return result index = RUNNER.CAPTURES / "capture-index.json" document = json.loads(index.read_text(encoding="utf-8")) for row in document["captures"]: row["variant"] = "L119" index.write_text(json.dumps(document, indent=2) + "\n", encoding="utf-8") markdown = RUNNER.CAPTURES / "INDEX.md" lines = ["# L119 captures (L115 view set)", "", "The 23 L115 camera poses were rendered with the L119 binary. Floor anchors " "require an upward normal alignment of at least 0.85, target-to-floor distance " "at most 0.25 m, and camera-to-floor distance between 2.0 and 3.2 m. Open-air " "sections have outside and interior wall close-ups at 4 m.", ""] for row in document["captures"]: image = row["capture"].removeprefix("captures/L119/") lines.append(f"- [{row['passage']} {row['station']}]({image}) — " f"{row['kind']}; {row.get('drawn_triangles', 0)} triangles; " f"{row['pixel_quality_status']}") markdown.write_text("\n".join(lines) + "\n", encoding="utf-8") return 0 if __name__ == "__main__": raise SystemExit(main())