diff --git a/Standalone/Core/include/VoxelForgeCore/PassageSpline.h b/Standalone/Core/include/VoxelForgeCore/PassageSpline.h index 19c34cb..6b61bb9 100644 --- a/Standalone/Core/include/VoxelForgeCore/PassageSpline.h +++ b/Standalone/Core/include/VoxelForgeCore/PassageSpline.h @@ -121,7 +121,8 @@ namespace VoxelForgeCore::PassageSpline inline std::vector BuildSegments(std::span controls, std::size_t spanCount,double spacingMetres,double unitsPerMetre=1.0, - std::span plannedFloorProfile={}) + std::span plannedFloorProfile={}, + double maximumChordErrorMetres=0.0) { std::vector result; if(controls.size()<2||!(spacingMetres>0.0)||!(unitsPerMetre>0.0))return result; @@ -141,18 +142,14 @@ namespace VoxelForgeCore::PassageSpline previous=current; } const double spanLength=horizontalArc.back(); - const std::size_t segmentCount=std::max(1, + const std::size_t baseSegmentCount=std::max(1, static_cast(std::ceil(spanLength/spacingMetres))); std::vector points; std::vector parameters; - points.reserve(segmentCount+1); - parameters.reserve(segmentCount+1); - points.push_back(EvaluateRaw(controls,span,0.0,unitsPerMetre)); - parameters.push_back(0.0); - for(std::size_t segment=1;segment<=segmentCount;++segment) + points.reserve(baseSegmentCount+1); + parameters.reserve(baseSegmentCount+1); + const auto parameterAtArc=[&](double targetArc) { - const double targetArc=spanLength*static_cast(segment) - /segmentCount; const auto upper=std::lower_bound(horizontalArc.begin()+1, horizontalArc.end(),targetArc); const std::size_t upperIndex=static_cast( @@ -161,10 +158,63 @@ namespace VoxelForgeCore::PassageSpline const double arcSpan=horizontalArc[upperIndex]-horizontalArc[lowerIndex]; const double arcT=arcSpan>1.0e-12 ?std::clamp((targetArc-horizontalArc[lowerIndex])/arcSpan,0.0,1.0):0.0; - const double t=(static_cast(lowerIndex)+arcT)/ArcTableSteps; - points.push_back(EvaluateRaw(controls,span,t,unitsPerMetre)); - parameters.push_back(t); + return (static_cast(lowerIndex)+arcT)/ArcTableSteps; + }; + parameters.push_back(0.0); + const double chordError=std::max(0.0,maximumChordErrorMetres); + const auto appendAdaptive=[&](auto&& self,double tA,double tB, + const FPoint& a,const FPoint& b,unsigned depth)->void + { + constexpr std::array CheckFractions={0.25,0.5,0.75}; + double maximumError=0.0,polylineLength=0.0; + FPoint previous=a; + for(const double fraction:CheckFractions) + { + const FPoint current=EvaluateRaw(controls,span, + std::lerp(tA,tB,fraction),unitsPerMetre); + const double chordX=std::lerp(a[0],b[0],fraction); + const double chordY=std::lerp(a[1],b[1],fraction); + const double dx=(current[0]-chordX)/unitsPerMetre; + const double dy=(current[1]-chordY)/unitsPerMetre; + const double dr=(current[3]-std::lerp(a[3],b[3],fraction)) + /unitsPerMetre; + maximumError=std::max(maximumError, + std::sqrt(dx*dx+dy*dy+dr*dr)); + const double segmentX=(current[0]-previous[0])/unitsPerMetre; + const double segmentY=(current[1]-previous[1])/unitsPerMetre; + polylineLength+=std::sqrt(segmentX*segmentX+segmentY*segmentY); + previous=current; + } + const double finalX=(b[0]-previous[0])/unitsPerMetre; + const double finalY=(b[1]-previous[1])/unitsPerMetre; + polylineLength+=std::sqrt(finalX*finalX+finalY*finalY); + const bool split=(polylineLength>spacingMetres*(1.0+1.0e-9) + ||(chordError>0.0&&maximumError>chordError))&&depth<12; + if(split) + { + const double tMid=(tA+tB)*0.5; + const FPoint middle=EvaluateRaw(controls,span,tMid,unitsPerMetre); + self(self,tA,tMid,a,middle,depth+1); + self(self,tMid,tB,middle,b,depth+1); + return; + } + parameters.push_back(tB); + }; + for(std::size_t segment=1;segment<=baseSegmentCount;++segment) + { + const double targetA=spanLength*static_cast(segment-1) + /baseSegmentCount; + const double targetB=spanLength*static_cast(segment) + /baseSegmentCount; + const double tA=parameterAtArc(targetA); + const double tB=parameterAtArc(targetB); + const FPoint a=EvaluateRaw(controls,span,tA,unitsPerMetre); + const FPoint b=EvaluateRaw(controls,span,tB,unitsPerMetre); + appendAdaptive(appendAdaptive,tA,tB,a,b,0); } + points.reserve(parameters.size()); + for(const double t:parameters) + points.push_back(EvaluateRaw(controls,span,t,unitsPerMetre)); std::vector sampledHorizontalArc(points.size(),0.0); for(std::size_t i=1;i=0.0 - &&wallElevationMetres<=OpenAirSideWallHeightMetres ?smoothShellFade*shellThickness:0.0; double floorExtensionFade=1.0; if(!segment.routeSegment) @@ -1380,10 +1378,13 @@ public: } const double floorShellThickness=smoothFloorBlend*shellThickness *floorExtensionFade*smoothShellFade; - const double localThickness=std::max(mouthWallThickness, - floorShellThickness); - const double localShellDistance=std::max(-static_cast(flatDistance), - static_cast(flatDistance)-localThickness); + const double wallShellDistance=PassageRoundedWallShellDistance( + flatDistance,wallElevationMetres*qPerMetre, + OpenAirSideWallHeightMetres*qPerMetre,mouthWallThickness); + const double floorShellDistance=std::max(-static_cast(flatDistance), + static_cast(flatDistance)-floorShellThickness); + const double localShellDistance=std::min(wallShellDistance, + floorShellDistance); nearest.shellSignedDistance=std::min(nearest.shellSignedDistance, localShellDistance); }; @@ -1391,11 +1392,17 @@ public: qx,qy,qz,0,shellSearchBound,visitShellSegment); } if(!nearest.valid)continue; + const double wallElevationMetres=(qz-(nearest.floorCenterZ + -nearest.floorDepth))/qPerMetre; double distanceToCenter=std::max(1.0e-9, nearest.roundSignedDistance+nearest.radius); const double verticalWallAlignment=distanceToCenter>1.0e-9 ?std::clamp(-(qz-nearest.centerZ)/distanceToCenter,0.0,1.0):0.0; - const double wallReliefWeight=0.05+0.95*(1.0-verticalWallAlignment); + const double crestFade=std::clamp((OpenAirSideWallHeightMetres + -wallElevationMetres)/0.25,0.0,1.0); + const double smoothCrestFade=crestFade*crestFade*(3.0-2.0*crestFade); + const double wallReliefWeight=(0.05+0.95*(1.0-verticalWallAlignment)) + *smoothCrestFade; float relief=0.0f; if(nearest.swept) { @@ -1427,11 +1434,7 @@ public: const double floorBlend=std::clamp(floorDistanceMetres/0.25,0.0,1.0); const double smoothFloorBlend=floorBlend*floorBlend *(3.0-2.0*floorBlend); - const double wallElevationMetres=(qz-(nearest.floorCenterZ-nearest.floorDepth)) - /qPerMetre; const double mouthWallThickness=segment.routeSegment - &&wallElevationMetres>=0.0 - &&wallElevationMetres<=OpenAirSideWallHeightMetres ?smoothShellFade*shellThickness:0.0; double floorExtensionFade=1.0; if(!segment.routeSegment) @@ -1445,11 +1448,14 @@ public: } const double floorShellThickness=smoothFloorBlend*shellThickness *floorExtensionFade*smoothShellFade; - const double localShellThickness=std::max(mouthWallThickness, - floorShellThickness); + const double wallShellDistance=PassageRoundedWallShellDistance( + shapedDistance,wallElevationMetres*qPerMetre, + OpenAirSideWallHeightMetres*qPerMetre,mouthWallThickness); + const double floorShellDistance=std::max(-static_cast(shapedDistance), + static_cast(shapedDistance)-floorShellThickness); unionDistance=std::min(unionDistance,static_cast(shapedDistance)); - const double localShellDistance=std::max(-static_cast(shapedDistance), - static_cast(shapedDistance)-localShellThickness); + const double localShellDistance=std::min(wallShellDistance, + floorShellDistance); unionShellDistance=std::min(unionShellDistance, std::min(localShellDistance,nearest.shellSignedDistance)); } @@ -3436,6 +3442,25 @@ private: return SmoothMaxDistance(roundDistanceSubvoxels,floorDistance, static_cast(CornerBlendMetres*qPerMetre)); } + static double PassageRoundedWallShellDistance(double flatDistanceSubvoxels, + double wallElevationSubvoxels,double wallHeightSubvoxels, + double wallThicknessSubvoxels) + { + if(!(wallThicknessSubvoxels>1.0e-9)||!(wallHeightSubvoxels>0.0)) + return std::numeric_limits::infinity(); + const double radius=wallThicknessSubvoxels*0.5; + const double capCenter=wallHeightSubvoxels-radius; + if(!(capCenter>0.0))return std::numeric_limits::infinity(); + const double x=flatDistanceSubvoxels-radius; + const double boxHalfHeight=capCenter*0.5; + const double boxX=std::abs(x)-radius; + const double boxY=std::abs(wallElevationSubvoxels-boxHalfHeight) + -boxHalfHeight; + const double boxDistance=std::min(std::max(boxX,boxY),0.0) + +std::hypot(std::max(boxX,0.0),std::max(boxY,0.0)); + const double capDistance=std::hypot(x,wallElevationSubvoxels-capCenter)-radius; + return std::min(boxDistance,capDistance); + } struct FPassageNearestNode { std::array minimum{},maximum{}; @@ -4499,7 +4524,7 @@ private: if(!ResolvedLayout) { if(tracePreparation) - std::printf("[L112PassagePrepare] passages=0 control_spans=0 segments=0 spacing_m=1.00 bytes=0 prepare_ms=%.3f\n", + std::printf("[L113PassagePrepare] passages=0 control_spans=0 segments=0 max_spacing_m=8.00 max_chord_error_m=0.025 bytes=0 prepare_ms=%.3f\n", std::chrono::duration( std::chrono::steady_clock::now()-preparationStart).count()); return; @@ -4510,7 +4535,8 @@ private: constexpr double Q=static_cast(VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel); const double qPerMetre=Q*1000000.0/ std::max(1,ResolvedLayout->coreVoxelSizeMicrometres); - constexpr double PassageSegmentSpacingMetres=1.0; + constexpr double PassageSegmentSpacingMetres=8.0; + constexpr double PassageSegmentChordErrorMetres=0.025; std::size_t preparedSegments=0,controlSpans=0; for(std::size_t passageIndex=0;passageIndexpassages.size(); ++passageIndex) @@ -4569,7 +4595,29 @@ private: upperMouthFloorDepth*qPerMetre); const auto sampledSegments=VoxelForgeCore::PassageSpline::BuildSegments( controls,controls.size()-1,PassageSegmentSpacingMetres,qPerMetre, - plannedFloorProfile); + plannedFloorProfile,PassageSegmentChordErrorMetres); + constexpr double MaximumFloorGradeDegrees=15.0; + constexpr double DegreesPerRadian=180.0/3.14159265358979323846; + double maximumFloorGradeDegrees=0.0; + std::size_t floorGradeSamples=0,floorGradeViolations=0; + for(const auto& segment:sampledSegments) + { + if(segment.controlSpan>=routeEnd)continue; + const double dx=(segment.b[0]-segment.a[0])/qPerMetre; + const double dy=(segment.b[1]-segment.a[1])/qPerMetre; + const double dz=(segment.plannedFloorB-segment.plannedFloorA)/qPerMetre; + const double horizontal=std::hypot(dx,dy); + const double grade=horizontal>1.0e-9 + ?std::atan2(std::abs(dz),horizontal)*DegreesPerRadian + :(std::abs(dz)>1.0e-9?90.0:0.0); + maximumFloorGradeDegrees=std::max(maximumFloorGradeDegrees,grade); + ++floorGradeSamples; + if(grade>MaximumFloorGradeDegrees+1.0e-8)++floorGradeViolations; + } + std::printf("[PassagePlanGradeAudit] id=%s samples=%zu max_grade_deg=%.6f limit_deg=%.3f violations=%zu status=%s\n", + passage.stableId.c_str(),floorGradeSamples,maximumFloorGradeDegrees, + MaximumFloorGradeDegrees,floorGradeViolations, + floorGradeViolations==0?"PASS":"FAIL"); constants.upperMouthX=controls.front()[0]; constants.upperMouthY=controls.front()[1]; constants.upperMouthPlannedFloor=plannedFloorProfile.front(); @@ -4663,9 +4711,10 @@ private: PassageSegmentOffsets[passageIndex+1]=preparedSegments; } if(tracePreparation) - std::printf("[L112PassagePrepare] passages=%zu control_spans=%zu segments=%zu spacing_m=%.2f bytes=%zu prepare_ms=%.3f\n", + std::printf("[L113PassagePrepare] passages=%zu control_spans=%zu segments=%zu max_spacing_m=%.2f max_chord_error_m=%.3f bytes=%zu prepare_ms=%.3f\n", PassageSegmentData.size(),controlSpans,preparedSegments, - PassageSegmentSpacingMetres,preparedSegments*sizeof(FPassageSegmentData), + PassageSegmentSpacingMetres,PassageSegmentChordErrorMetres, + preparedSegments*sizeof(FPassageSegmentData), std::chrono::duration( std::chrono::steady_clock::now()-preparationStart).count()); } @@ -4688,6 +4737,7 @@ private: constexpr double PassageShellMetres=0.75; constexpr double ReliefMetres=0.21; constexpr double SweepReachMetres=4.0; + constexpr double CornerBlendMetres=0.50; for(std::size_t passageIndex=0;passageIndexpassages.size(); ++passageIndex) { @@ -4707,9 +4757,10 @@ private: routeMinimum[axis]=std::min(prepared.a[axis],prepared.b[axis])/Q; routeMaximum[axis]=std::max(prepared.a[axis],prepared.b[axis])/Q; } - const double routeExtent=maximumRadius+PassageShellMetres - +ReliefMetres+0.01; - const double tileExtent=routeExtent+SweepReachMetres; + const double requiredReach=std::max(SweepReachMetres+ReliefMetres + +CornerBlendMetres*0.25,PassageShellMetres+ReliefMetres); + const double routeExtent=maximumRadius+requiredReach+0.01; + const double tileExtent=routeExtent; FPassageProofBound proof; for(std::size_t axis=0;axis<3;++axis) { @@ -11414,8 +11465,6 @@ inline void FStandaloneShapeWorld::FScopedPassageTileQueries::prepareSweptTubeBa const double wallElevationMetres=(qz-(floorCenterZ-floorDepth)) /qPerMetre; const double mouthWallThickness=segment.routeSegment - &&wallElevationMetres>=0.0 - &&wallElevationMetres<=OpenAirSideWallHeightMetres ?smoothShellFade*shellThickness:0.0; double floorExtensionFade=1.0; if(!segment.routeSegment) @@ -11429,10 +11478,14 @@ inline void FStandaloneShapeWorld::FScopedPassageTileQueries::prepareSweptTubeBa } const double floorShellThickness=smoothFloorBlend*shellThickness *floorExtensionFade*smoothShellFade; - const double localThickness=std::max(mouthWallThickness, - floorShellThickness); - const double localShellDistance=std::max(-static_cast(flatDistance), - static_cast(flatDistance)-localThickness); + const double wallShellDistance= + FStandaloneShapeWorld::PassageRoundedWallShellDistance( + flatDistance,wallElevationMetres*qPerMetre, + OpenAirSideWallHeightMetres*qPerMetre,mouthWallThickness); + const double floorShellDistance=std::max(-static_cast(flatDistance), + static_cast(flatDistance)-floorShellThickness); + const double localShellDistance=std::min(wallShellDistance, + floorShellDistance); sample.shellSignedDistance=std::min(sample.shellSignedDistance, localShellDistance); if(!sample.valid||flatDistance int: + ordered = sorted(values) + if not ordered: + return 0 + return ordered[min(len(ordered) - 1, + max(0, math.ceil(fraction * len(ordered)) - 1))] + + +def run(strate: int, version: str) -> dict: + OUT.mkdir(parents=True, exist_ok=True) + log = OUT / f"{version}-s{strate}.log" + camera = ",".join(f"{v:.12f}" for v in CAMERAS[strate]) + ",0,0" + command = [ + "taskset", "-c", "0-11", "prlimit", "--as=6442450944", "--", + "timeout", "1740s", str(BINARIES[version]), str(DATA), + "--world-assembler-prototype", "--stream-benchmark", "--stream-pipeline", + "--workers=12", "--clip-radius=3", "--max-clip-level=8", "--max-level=8", + f"--camera={camera}", "--profile-passage-composer", "--stream-scheduler-policy=3", + ] + started = time.monotonic() + with log.open("w", encoding="utf-8") as stream: + result = subprocess.run(command, cwd=ROOT, stdout=stream, + stderr=subprocess.STDOUT, check=False, timeout=1740) + output = log.read_text(encoding="utf-8", errors="replace") + features = [int(row[0]) for row in LIST.findall(output)] + routes = [int(row[1]) for row in LIST.findall(output)] + if result.returncode or not features: + raise SystemExit(f"candidate-list profile missing: {log}; exit={result.returncode}") + row = { + "strate": strate, "version": version, "profiled_tiles": len(features), + "feature_candidates": {"sum": sum(features), "min": min(features), + "median": statistics.median(features), "p95": percentile(features, .95), + "max": max(features)}, + "route_segment_candidates": {"sum": sum(routes), "min": min(routes), + "median": statistics.median(routes), "p95": percentile(routes, .95), + "max": max(routes)}, + "elapsed_s": round(time.monotonic() - started, 3), + "log": str(log.relative_to(ROOT)), + } + print("[L113CandidateLists] " + json.dumps(row, sort_keys=True), flush=True) + return row + + +def main() -> int: + if any(not path.is_file() for path in (*BINARIES.values(), DATA)): + raise SystemExit("missing L109/L112/L113 candidate-list input") + rows = [run(strate, version) for strate in range(4) + for version in ("L109", "L112", "L113")] + (OUT / "summary.json").write_text(json.dumps(rows, indent=2) + "\n", + encoding="utf-8") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/RunL113Captures.py b/Standalone/Research/WorldAssemblerM3/Linux113/RunL113Captures.py new file mode 100644 index 0000000..3c0abc2 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux113/RunL113Captures.py @@ -0,0 +1,892 @@ +#!/usr/bin/env python3 +"""Compare copied L112 captures against L113 routes and verified 4 m wall views.""" +from __future__ import annotations + +import hashlib +import json +import math +import re +from array import array +import shutil +import struct +import subprocess +import sys +import time +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[4] +RESEARCH = Path(__file__).resolve().parent +CAPTURES = RESEARCH / "captures" +SAVED = ROOT / "Saved/Linux/l113/captures" +DATA = ROOT / "Standalone/data/owner_world.json" +BINARIES = { + "after": ROOT / "Saved/Linux/l113/bin/VoxelForgeCoreHeadless-l113-clang", +} +LAYOUTS = { + "before": ROOT / "Saved/Linux/l112/audit-layout-candidate.json", + "after": ROOT / "Saved/Linux/l113/audit-layout-candidate.json", +} +AUDIT_LOGS = { + "before": ROOT / "Saved/Linux/l112/audit-owner-clang.log", + "after": ROOT / "Saved/Linux/l113/audit-owner-clang.log", +} +RENDERERS = { + "after": ROOT / "Saved/Linux/l113/bin/VoxelForgeOffscreenCapture-l113-clang", +} +SECTION = re.compile( + r"^\[PassageOpenAirSection\] id=(\S+) section=(\d+) start_m=([\d.]+) " + r"end_m=([\d.]+) samples=(\d+) midpoint_xyz_m=\(([^)]*)\) " + r"midpoint_radius_m=([\d.]+)", re.M) +DRAWN = re.compile(r"drawn_triangles=(\d+)") +QUALITY_METRICS = re.compile(r"stddev_luma=([\d.]+).*coverage_luma_gt12=([\d.]+)") + + +def vector(text: str) -> tuple[float, float, float]: + return tuple(float(value) for value in text.split(",")) + + +def add(a, b): + return tuple(x + y for x, y in zip(a, b)) + + +def sub(a, b): + return tuple(x - y for x, y in zip(a, b)) + + +def mul(a, scale): + return tuple(x * scale for x in a) + + +def norm(a): + length = math.sqrt(sum(x * x for x in a)) + if length <= 1.0e-9: + return (0.0, 1.0, 0.0) + return tuple(value / length for value in a) + + +def angles(camera, target): + delta = sub(target, camera) + horizontal = math.hypot(delta[0], delta[1]) + return (math.degrees(math.atan2(delta[0], delta[1])), + math.degrees(math.atan2(delta[2], horizontal))) + + +def fmt(values) -> str: + return ",".join(f"{value:.6f}" for value in values) + + +def mesh_triangle_count(mesh: Path) -> int: + """Read only the VFMSH headers and count indexed triangles.""" + with mesh.open("rb") as stream: + magic = stream.read(8) + materials = magic == b"VFMSH002" + if magic not in (b"VFMSH001", b"VFMSH002"): + raise RuntimeError(f"unsupported mesh scene header: {mesh}") + version, _voxel_um, tile_count = struct.unpack("<3I", stream.read(12)) + if version != (2 if materials else 1): + raise RuntimeError(f"mesh scene version mismatch: {mesh}") + stream.seek(40, 1) + triangles = 0 + for _ in range(tile_count): + stream.seek(16, 1) + surface_count, _skirts, vertex_count, index_count, mask_count = struct.unpack( + "<5I", stream.read(20)) + triangles += index_count // 3 + stream.seek(vertex_count * 24 + (10 * vertex_count if materials else 0) + + index_count * 4 + mask_count, 1) + if stream.read(1): + raise RuntimeError(f"trailing data in mesh scene: {mesh}") + return triangles + + +def dot(a, b): + return sum(x * y for x, y in zip(a, b)) + + +def closest_point_triangle(point, a, b, c): + def closest_segment(start, end, first_weight, second_weight): + edge = sub(end, start) + length_squared = dot(edge, edge) + t = (min(1.0, max(0.0, dot(sub(point, start), edge) / length_squared)) + if length_squared > 1.0e-16 else 0.0) + position = add(start, mul(edge, t)) + weights = [0.0, 0.0, 0.0] + weights[first_weight], weights[second_weight] = 1.0 - t, t + return position, tuple(weights) + + ab, ac = sub(b, a), sub(c, a) + cross = ((ab[1] * ac[2] - ab[2] * ac[1]), + (ab[2] * ac[0] - ab[0] * ac[2]), + (ab[0] * ac[1] - ab[1] * ac[0])) + if dot(cross, cross) <= 1.0e-16: + candidates = [closest_segment(a, b, 0, 1), + closest_segment(b, c, 1, 2), + closest_segment(c, a, 2, 0)] + return min(candidates, key=lambda candidate: + dot(sub(candidate[0], point), sub(candidate[0], point))) + ap = sub(point, a) + d1, d2 = dot(ab, ap), dot(ac, ap) + if d1 <= 0.0 and d2 <= 0.0: + return a, (1.0, 0.0, 0.0) + bp = sub(point, b) + d3, d4 = dot(ab, bp), dot(ac, bp) + if d3 >= 0.0 and d4 <= d3: + return b, (0.0, 1.0, 0.0) + vc = d1 * d4 - d3 * d2 + if vc <= 0.0 and d1 >= 0.0 and d3 <= 0.0: + denominator = d1 - d3 + if denominator <= 1.0e-16: + return a, (1.0, 0.0, 0.0) + v = d1 / denominator + return add(a, mul(ab, v)), (1.0 - v, v, 0.0) + cp = sub(point, c) + d5, d6 = dot(ab, cp), dot(ac, cp) + if d6 >= 0.0 and d5 <= d6: + return c, (0.0, 0.0, 1.0) + vb = d5 * d2 - d1 * d6 + if vb <= 0.0 and d2 >= 0.0 and d6 <= 0.0: + denominator = d2 - d6 + if denominator <= 1.0e-16: + return a, (1.0, 0.0, 0.0) + w = d2 / denominator + return add(a, mul(ac, w)), (1.0 - w, 0.0, w) + va = d3 * d6 - d5 * d4 + if va <= 0.0 and d4 - d3 >= 0.0 and d5 - d6 >= 0.0: + denominator = (d4 - d3) + (d5 - d6) + if denominator <= 1.0e-16: + return b, (0.0, 1.0, 0.0) + w = (d4 - d3) / denominator + edge = sub(c, b) + return add(b, mul(edge, w)), (0.0, 1.0 - w, w) + face_denominator = va + vb + vc + if face_denominator <= 1.0e-16: + candidates = [closest_segment(a, b, 0, 1), + closest_segment(b, c, 1, 2), + closest_segment(c, a, 2, 0)] + return min(candidates, key=lambda candidate: + dot(sub(candidate[0], point), sub(candidate[0], point))) + denominator = 1.0 / face_denominator + v, w = vb * denominator, vc * denominator + weights = (1.0 - v - w, v, w) + closest = tuple(weights[0] * a[axis] + weights[1] * b[axis] + + weights[2] * c[axis] for axis in range(3)) + return closest, weights + + +def nearest_surface_anchor(mesh: Path, point, margin_m=200.0, *, + preferred_normal=None, minimum_alignment=-1.0) -> dict: + """Return the nearest point on a VFMSH surface triangle and its normal.""" + best_distance_sq = float("inf") + best_position = best_normal = None + with mesh.open("rb") as stream: + magic = stream.read(8) + materials = magic == b"VFMSH002" + if magic not in (b"VFMSH001", b"VFMSH002"): + raise RuntimeError(f"unsupported mesh scene header: {mesh}") + version, voxel_um, tile_count = struct.unpack("<3I", stream.read(12)) + if version != (2 if materials else 1): + raise RuntimeError(f"mesh scene version mismatch: {mesh}") + stream.seek(40, 1) + for _ in range(tile_count): + key = struct.unpack("<4i", stream.read(16)) + surface_count, _skirts, vertex_count, index_count, mask_count = struct.unpack( + "<5I", stream.read(20)) + extent = (32 << key[3]) * voxel_um / 1_000_000.0 + origin = (key[0] * extent, key[1] * extent, key[2] * extent) + if any(point[axis] < origin[axis] - margin_m or + point[axis] > origin[axis] + extent + margin_m for axis in range(3)): + stream.seek(vertex_count * 24 + (10 * vertex_count if materials else 0) + + index_count * 4 + mask_count, 1) + continue + positions = array("f") + positions.frombytes(stream.read(vertex_count * 12)) + normals = array("f") + normals.frombytes(stream.read(vertex_count * 12)) + if materials: + stream.seek(vertex_count * 10, 1) + indices = array("I") + indices.frombytes(stream.read(index_count * 4)) + stream.seek(mask_count, 1) + if struct.pack("=I", 1) != struct.pack("= surface_count or vertex_index >= vertex_count + for vertex_index in triangle): + continue + a, b, c = (vertex(vertex_index) for vertex_index in triangle) + position, weights = closest_point_triangle(point, a, b, c) + delta = sub(position, point) + distance_sq = dot(delta, delta) + if distance_sq >= best_distance_sq: + continue + raw_normals = [vertex_normal(vertex_index) for vertex_index in triangle] + raw_normal = tuple(sum(weights[corner] * raw_normals[corner][axis] + for corner in range(3)) for axis in range(3)) + if dot(raw_normal, raw_normal) < 1.0e-10: + raw_normal = ( + (b[1] - a[1]) * (c[2] - a[2]) - (b[2] - a[2]) * (c[1] - a[1]), + (b[2] - a[2]) * (c[0] - a[0]) - (b[0] - a[0]) * (c[2] - a[2]), + (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0])) + if dot(raw_normal, raw_normal) < 1.0e-10: + continue + candidate_normal = norm(raw_normal) + if preferred_normal is not None: + alignment = dot(candidate_normal, preferred_normal) + if abs(alignment) < minimum_alignment: + continue + if alignment < 0.0: + candidate_normal = mul(candidate_normal, -1.0) + best_distance_sq = distance_sq + best_position = position + best_normal = candidate_normal + if best_position is None: + raise RuntimeError(f"no nearby surface vertices in mesh scene: {mesh}") + return {"position_m": best_position, "normal": best_normal, + "distance_m": math.sqrt(best_distance_sq)} + + +def sanitize(value: str) -> str: + return re.sub(r"[^A-Za-z0-9_-]+", "-", value).strip("-").replace("/", "-") + + +def route_height_at_xy(route, x, y): + if not route: + return None + if len(route) == 1: + point = route[0] + return point[2], (x - point[0]) ** 2 + (y - point[1]) ** 2 + best = (float("inf"), None) + for a, b in zip(route, route[1:]): + dx, dy = b[0] - a[0], b[1] - a[1] + length_sq = dx * dx + dy * dy + t = min(1.0, max(0.0, ((x - a[0]) * dx + (y - a[1]) * dy) / length_sq)) \ + if length_sq > 1.0e-12 else 0.0 + px, py = a[0] + t * dx, a[1] + t * dy + distance_sq = (x - px) ** 2 + (y - py) ** 2 + if distance_sq < best[0]: + best = (distance_sq, a[2] + (b[2] - a[2]) * t) + return best[1], best[0] + + +def upper_mouth_floor_depth(layout: dict, passage: dict, controls) -> float: + scale = layout["core_voxel_size_um"] / 256.0 / 1_000_000.0 + authored = max(0.0, controls[0][0][2] - passage["upper_mouth_q"][2] * scale + 1.13) + stratum = next((row for row in layout["strates"] + if row["strate_index"] == passage["upper_strate_index"]), None) + if stratum is None or stratum["generator_kind"] != "FloatingIslands": + return authored + route = [tuple(value * scale for value in anchor["values"][:3]) + for anchor in stratum.get("anchors", []) + if anchor.get("kind") == "route_point" and len(anchor.get("values", [])) >= 3] + projected = route_height_at_xy(route, controls[0][0][0], controls[0][0][1]) + if projected is None or projected[1] > (controls[0][1] + 2.0) ** 2: + return authored + route_depth = max(0.0, controls[0][0][2] - projected[0] + 1.13) + return max(authored, route_depth) + + +def route_controls(layout: dict, passage: dict, *, adjust_upper_mouth=False): + scale = layout["core_voxel_size_um"] / 256.0 / 1_000_000.0 + controls = [(tuple(value * scale for value in row["position_q"]), + row["radius_q"] * scale) for row in passage["control_points"]] + lower_q = passage["lower_mouth_q"] + player_center_above_floor_q = round( + 1.13 * 256.0 * 1_000_000.0 / layout["core_voxel_size_um"]) + lower_index = next((index for index, row in enumerate(passage["control_points"]) + if row["position_q"][0] == lower_q[0] + and row["position_q"][1] == lower_q[1] + and row["position_q"][2] - row["radius_q"] + + player_center_above_floor_q == lower_q[2]), None) + if lower_index is None: + raise RuntimeError(f"{passage['stable_id']}: lower mouth control is unbound") + if lower_index < 1: + raise RuntimeError(f"{passage['stable_id']}: incomplete route controls") + if adjust_upper_mouth: + controls[0] = (controls[0][0], max(controls[0][1], + upper_mouth_floor_depth(layout, passage, controls))) + return controls, lower_index + + +def route_for(layout: dict, passage: dict) -> list[tuple[tuple[float, float, float], float]]: + controls, lower_index = route_controls(layout, passage) + return controls[:lower_index + 1] + + +def spline_knot_span(a, b): + return max(1.0e-6, math.sqrt(math.sqrt((b[0] - a[0]) ** 2 + + (b[1] - a[1]) ** 2))) + + +def spline_point(controls, span, t): + as_point = lambda index: (*controls[index][0], controls[index][1]) + p0, p1, p2, p3 = (as_point(max(0, span - 1)), as_point(span), + as_point(span + 1), as_point(min(span + 2, len(controls) - 1))) + dt0, dt1, dt2 = (spline_knot_span(p0, p1), spline_knot_span(p1, p2), + spline_knot_span(p2, p3)) + t2, t3 = t * t, t * t * t + result = [0.0] * 4 + for axis in (0, 1, 3): + m1 = dt1 * ((p1[axis] - p0[axis]) / dt0 + - (p2[axis] - p0[axis]) / (dt0 + dt1) + + (p2[axis] - p1[axis]) / dt1) + m2 = dt1 * ((p2[axis] - p1[axis]) / dt1 + - (p3[axis] - p1[axis]) / (dt1 + dt2) + + (p3[axis] - p2[axis]) / dt2) + result[axis] = ((2 * t3 - 3 * t2 + 1) * p1[axis] + + (-2 * t3 + 3 * t2) * p2[axis] + + (t3 - 2 * t2 + t) * m1 + (t3 - t2) * m2) + result[2] = p1[2] + (p2[2] - p1[2]) * t + result[3] = min(max(result[3], min(p1[3], p2[3])), max(p1[3], p2[3])) + return result + + +def smooth_route(layout: dict, passage: dict): + """Mirror the runtime adaptive PassageSpline::BuildSegments sampler.""" + scale = layout["core_voxel_size_um"] / 256.0 / 1_000_000.0 + planned_floor_profile = [ + (row["position_q"][2] - row["radius_q"]) * scale + for row in passage["control_points"]] + controls, route_end = route_controls(layout, passage, adjust_upper_mouth=True) + result = [] + along = 0.0 + arc_steps = 32 + maximum_spacing = 8.0 + maximum_chord_error = 0.025 + for span in range(route_end): + arc = [0.0] + previous = spline_point(controls, span, 0.0) + for step in range(1, arc_steps + 1): + current = spline_point(controls, span, step / arc_steps) + arc.append(arc[-1] + math.hypot(current[0] - previous[0], + current[1] - previous[1])) + previous = current + span_length = arc[-1] + segment_count = max(1, math.ceil(span_length / maximum_spacing)) + + def parameter_at_arc(target): + upper = next(index for index in range(1, len(arc)) if arc[index] >= target) + lower = upper - 1 + width = arc[upper] - arc[lower] + fraction = min(1.0, max(0.0, (target - arc[lower]) / width)) if width > 1e-12 else 0.0 + return (lower + fraction) / arc_steps + + parameters = [0.0] + + def append_adaptive(t_a, t_b, a, b, depth): + maximum_error = 0.0 + polyline_length = 0.0 + previous_point = a + for fraction in (0.25, 0.5, 0.75): + current = spline_point(controls, span, t_a + (t_b - t_a) * fraction) + dx = current[0] - (a[0] + (b[0] - a[0]) * fraction) + dy = current[1] - (a[1] + (b[1] - a[1]) * fraction) + dr = current[3] - (a[3] + (b[3] - a[3]) * fraction) + maximum_error = max(maximum_error, math.sqrt(dx * dx + dy * dy + dr * dr)) + polyline_length += math.hypot(current[0] - previous_point[0], + current[1] - previous_point[1]) + previous_point = current + polyline_length += math.hypot(b[0] - previous_point[0], + b[1] - previous_point[1]) + split = (polyline_length > maximum_spacing * (1.0 + 1.0e-9) + or maximum_error > maximum_chord_error) and depth < 12 + if split: + t_mid = (t_a + t_b) * 0.5 + middle = spline_point(controls, span, t_mid) + append_adaptive(t_a, t_mid, a, middle, depth + 1) + append_adaptive(t_mid, t_b, middle, b, depth + 1) + else: + parameters.append(t_b) + + for segment in range(1, segment_count + 1): + target_a = span_length * (segment - 1) / segment_count + target_b = span_length * segment / segment_count + t_a, t_b = parameter_at_arc(target_a), parameter_at_arc(target_b) + append_adaptive(t_a, t_b, + spline_point(controls, span, t_a), + spline_point(controls, span, t_b), 0) + points = [spline_point(controls, span, t) for t in parameters] + sampled_arc = [0.0] + for a, b in zip(points, points[1:]): + sampled_arc.append(sampled_arc[-1] + math.hypot(b[0] - a[0], b[1] - a[1])) + horizontal_length = sampled_arc[-1] + for index, point in enumerate(points): + progress = sampled_arc[index] / horizontal_length if horizontal_length > 1e-12 else parameters[index] + point[2] = controls[span][0][2] + (controls[span + 1][0][2] + - controls[span][0][2]) * progress + point.append(planned_floor_profile[span] + + (planned_floor_profile[span + 1] + - planned_floor_profile[span]) * progress) + if not result: + result.append((tuple(points[0][:3]), points[0][3], 0.0, points[0][4])) + for a, b in zip(points, points[1:]): + length = math.dist(a[:3], b[:3]) + along += length + result.append((tuple(b[:3]), b[3], along, b[4])) + return result + +def derived_smooth_route(route, passage, layout): + total = route[-1][2] + interior_radii = [radius for _, radius, distance, _ in route + if distance >= 10.0 and total - distance >= 10.0] + body_depth = max(0.5, min(interior_radii or [radius for _, radius, _, _ in route]) - 0.23) + result = [] + for point, radius, distance, planned_floor in route: + local_radius_depth = max(0.0, radius - 0.23) + tube_depth = min(body_depth, local_radius_depth) + center = (point[0], point[1], planned_floor + tube_depth) + result.append((center, radius, distance, planned_floor)) + return result, body_depth + + +def route_lengths(route): + lengths = [((b[2] - a[2]) if len(a) > 2 and len(b) > 2 + else math.dist(a[0], b[0])) for a, b in zip(route, route[1:])] + prefix = [0.0] + for length in lengths: + prefix.append(prefix[-1] + length) + return lengths, prefix + + +def at_distance(route, lengths, prefix, distance): + distance = max(0.0, min(distance, prefix[-1])) + for index, length in enumerate(lengths): + if distance <= prefix[index + 1] or index + 1 == len(lengths): + t = 0.0 if length <= 1.0e-9 else (distance - prefix[index]) / length + a, b = route[index], route[index + 1] + return (tuple(a[0][axis] + (b[0][axis] - a[0][axis]) * t + for axis in range(3)), + a[1] + (b[1] - a[1]) * t) + return route[-1] + + +def tangent_at(route, lengths, prefix, distance): + before = at_distance(route, lengths, prefix, max(0.0, distance - 0.25))[0] + after = at_distance(route, lengths, prefix, min(prefix[-1], distance + 0.25))[0] + return norm(sub(after, before)) + + +def derived_route(route, passage, layout): + """Apply L109's fixed-depth floor offset to raw layout controls.""" + lengths, prefix = route_lengths(route) + total = prefix[-1] + body_radii = [radius for index, (_, radius) in enumerate(route) + if prefix[index] >= 10.0 and total - prefix[index] >= 10.0] + body_depth = max(0.5, min(body_radii or [radius for _, radius in route]) - 0.23) + scale = layout["core_voxel_size_um"] / 256.0 / 1_000_000.0 + upper_z = passage["upper_mouth_q"][2] * scale + lower_z = passage["lower_mouth_q"][2] * scale + upper_target = max(0.0, route[0][0][2] - upper_z + 1.13) + lower_target = max(0.0, route[-1][0][2] - lower_z + 1.13) + transformed = [] + for index, (point, radius) in enumerate(route): + local_radius_depth = max(0.0, radius - 0.23) + mouth_distance = max(0.0, min(prefix[index], total - prefix[index])) + u = max(0.0, min(1.0, mouth_distance / 5.0)) + ramp = u * u * (3.0 - 2.0 * u) + target = upper_target if prefix[index] <= total * 0.5 else lower_target + mouth_depth = max(0.0, min(radius, target)) + route_depth = mouth_depth + (local_radius_depth - mouth_depth) * ramp + tube_depth = min(body_depth, local_radius_depth) + transformed.append(((point[0], point[1], point[2] - route_depth + tube_depth), + radius)) + return transformed, body_depth + + +def make_views(layout: dict, audit_sections: list[dict], *, use_derived_shape: bool, + use_spline: bool, + include_open_air: bool = True) -> list[dict]: + views = [] + passages = sorted(layout["passages"], key=lambda item: item["stable_id"]) + for passage in passages: + raw_route = smooth_route(layout, passage) if use_spline else route_for(layout, passage) + if use_derived_shape: + route, body_depth = (derived_smooth_route(raw_route, passage, layout) + if use_spline else derived_route(raw_route, passage, layout)) + else: + route = raw_route + body_depth = max(point[1] for point in route) + def floor_depth(radius: float) -> float: + if not use_derived_shape: + return radius + return min(body_depth, max(0.0, radius - 0.23)) + lengths, prefix = route_lengths(route) + total = prefix[-1] + passage_id = passage["stable_id"] + safe_id = sanitize(passage_id) + + for end_name, distance, outward_sign in ( + ("upper-mouth", 0.0, -1.0), ("lower-mouth", total, 1.0)): + center, radius = at_distance(route, lengths, prefix, distance) + tangent = tangent_at(route, lengths, prefix, distance) + outward = mul(tangent, outward_sign) + floor_z = center[2] - floor_depth(radius) + eye = (center[0] + outward[0] * 4.5, + center[1] + outward[1] * 4.5, + floor_z + 1.55) + if end_name == "lower-mouth": + eye = add(eye, add(mul(outward, 5.0), (0.0, 0.0, 2.0))) + target = (center[0] - outward[0] * 2.0, + center[1] - outward[1] * 2.0, + floor_z + 1.45) + yaw, pitch = angles(eye, target) + views.append({"name": f"{safe_id}-{end_name}", "passage": passage_id, + "kind": "mouth", "station": end_name, + "camera": eye, "target": target, "yaw": yaw, "pitch": pitch, + "focus": center, "center_z": center[2]}) + + for fraction in (0.25, 0.50, 0.75): + distance = total * fraction + center, radius = at_distance(route, lengths, prefix, distance) + tangent = tangent_at(route, lengths, prefix, distance) + depth = floor_depth(radius) + floor_z = center[2] - depth + horizontal = norm((-tangent[1], tangent[0], 0.0)) + eye = (center[0] + horizontal[0] * 0.75, + center[1] + horizontal[1] * 0.75, floor_z + 1.60) + target_center, target_radius = at_distance(route, lengths, prefix, + min(total, distance + 14.0)) + target_depth = floor_depth(target_radius) + target = (target_center[0] + horizontal[0] * 2.35, + target_center[1] + horizontal[1] * 2.35, + target_center[2] - target_depth + 1.80) + yaw, pitch = angles(eye, target) + views.append({"name": f"{safe_id}-station-{int(fraction * 100)}", + "passage": passage_id, "kind": "station", + "station": f"{int(fraction * 100)}%", "camera": eye, + "target": target, "yaw": yaw, "pitch": pitch, + "focus": center, "center_z": center[2], + "route_distance_m": distance, + "route_length_m": total, + "requested_route_distance_m": distance}) + + if not include_open_air: + continue + for section in (item for item in audit_sections if item["passage"] == passage_id): + distance = 0.5 * (section["start_m"] + section["end_m"]) + center, radius = (section["midpoint"], section["radius_m"]) + tangent = tangent_at(route, lengths, prefix, distance) + side = norm((-tangent[1], tangent[0], 0.0)) + depth = floor_depth(radius) + section_id = section["section"] + interior_eye = (center[0], center[1], center[2] - depth + 1.25) + interior_target = add(interior_eye, mul(tangent, 7.0)) + side_eye = add(center, add(mul(side, radius + 5.0), (0.0, 0.0, 1.2))) + oblique_eye = add(center, add(mul(side, -(radius + 3.5)), (0.0, 0.0, 4.0))) + targets = (add(center, (0.0, 0.0, 0.1)), + add(center, mul(tangent, 2.0)), interior_target) + for view_index, (eye, target) in enumerate(zip( + (side_eye, oblique_eye, interior_eye), targets), start=1): + yaw, pitch = angles(eye, target) + views.append({"name": f"{safe_id}-openair-{section_id}-view-{view_index}", + "passage": passage_id, "kind": "open-air", + "station": f"section-{section_id}/view-{view_index}", + "camera": eye, "target": target, "yaw": yaw, + "pitch": pitch, "focus": center, + "center_z": center[2], "open_air_section": section_id, + "route_distance_m": distance, + "requested_route_distance_m": distance, + "route_length_m": total}) + floor_z = center[2] - depth + outside_target = add(center, add(mul(side, radius), (0.0, 0.0, -depth + 0.5))) + outside_eye = add(outside_target, mul(side, 4.0)) + interior_radius = math.sqrt(max(0.0, radius * radius + - max(0.0, depth - 0.5) ** 2)) + inside_target = add(center, add(mul(side, interior_radius), + (0.0, 0.0, -depth + 0.5))) + inside_eye = add(inside_target, + add(mul(side, -1.0), mul(tangent, math.sqrt(15.0)))) + for closeup, eye, target in (("outside", outside_eye, outside_target), + ("interior-wall", inside_eye, inside_target)): + yaw, pitch = angles(eye, target) + views.append({"name": f"{safe_id}-openair-{section_id}-4m-{closeup}", + "passage": passage_id, "kind": "open-air-close", + "station": f"section-{section_id}/4m-{closeup}", + "camera": eye, "target": target, "yaw": yaw, + "pitch": pitch, "focus": center, "center_z": center[2], + "open_air_section": section_id, "closeup_side": closeup, + "closeup_preferred_normal": side if closeup == "outside" + else mul(side, -1.0), + "camera_target_distance_m": math.dist(eye, target), + "route_distance_m": distance, + "requested_route_distance_m": distance, + "route_length_m": total}) + return views + + +def run_process(name: str, command: list[str], log: Path, *, allow_failure=False) -> str: + wrapped = ["taskset", "-c", "0-11", "prlimit", "--as=6442450944", "--", + "timeout", "1740s", *map(str, command)] + started = time.monotonic() + with log.open("w", encoding="utf-8") as stream: + result = subprocess.run(wrapped, cwd=ROOT, stdout=stream, + stderr=subprocess.STDOUT, check=False, timeout=1740) + if result.returncode and not allow_failure: + raise RuntimeError(f"{name}: exit={result.returncode} log={log}") + print(f"[L113CaptureProcess] name={name} elapsed_s={time.monotonic()-started:.2f} " + f"exit={result.returncode} log={log.relative_to(ROOT)}", flush=True) + return log.read_text(encoding="utf-8", errors="replace") + + +def capture(variant: str, view: dict, layout: dict) -> dict: + variant_saved = SAVED / variant + variant_saved.mkdir(parents=True, exist_ok=True) + variant_capture = CAPTURES / variant + variant_capture.mkdir(parents=True, exist_ok=True) + scene = variant_saved / f"{view['name']}.vfmesh" + image = variant_capture / f"{view['name']}.png" + candidates = [(view["camera"], view["target"], view["focus"], + view.get("route_distance_m"), 0.0, "requested")] + if variant == "before" and view["kind"] not in ("mouth", "open-air-close"): + passage = next(item for item in layout["passages"] + if item["stable_id"] == view["passage"]) + route = route_for(layout, passage) + lengths, prefix = route_lengths(route) + total = prefix[-1] + eye_offset = sub(view["camera"], view["focus"]) + target_offset = sub(view["target"], view["focus"]) + requested = view["route_distance_m"] + for delta in (5, -5, 10, -10, 20, -20, 35, -35, 50, -50, 75, -75, + 100, -100, 150, -150, 200, -200): + distance = max(0.0, min(total, requested + delta)) + if abs(distance - requested) < 0.01: + continue + center, _radius = at_distance(route, lengths, prefix, distance) + candidates.append((add(center, eye_offset), add(center, target_offset), center, + distance, distance - requested, "route-offset")) + + attempt_errors = [] + for attempt_index, (probe_camera, probe_target, probe_focus, route_distance, + route_adjustment, attempt_kind) in enumerate(candidates): + suffix = "" if attempt_index == 0 else f"-attempt-{attempt_index:02d}" + headless_log = variant_saved / f"{view['name']}{suffix}-mesh.log" + render_log = variant_saved / f"{view['name']}{suffix}-render.log" + quality_log = variant_saved / f"{view['name']}{suffix}-quality.log" + yaw, pitch = angles(probe_camera, probe_target) + camera = (*probe_camera, yaw, pitch) + export_command = [ + str(BINARIES[variant]), str(DATA), "--world-assembler-prototype", + "--stream-benchmark", "--stream-pipeline", "--workers=12", + "--clip-radius=3", "--max-clip-level=0", "--max-level=0", "--force-generate", + "--recipe=surface-world", f"--camera={fmt(camera)}", + "--render-distance-chunks=1", f"--mesh-export={scene}", + ] + export_output = run_process(f"{variant}-{view['name']}{suffix}-mesh", export_command, + headless_log) + if "status=PASS" not in export_output or not scene.is_file(): + raise RuntimeError(f"{variant}-{view['name']}: missing successful scene export") + source_triangles = mesh_triangle_count(scene) + if source_triangles <= 0: + attempt_errors.append(f"{attempt_kind}@{route_distance}: empty mesh") + if variant == "after" or view["kind"] == "mouth": + break + continue + + actual_camera, actual_target = probe_camera, probe_target + actual_focus = probe_focus + surface_distance = None + closeup_surface_distance = None + closeup_anchor_offset = None + closeup_normal_alignment = None + closeup_distance = None + if view["kind"] == "open-air-close": + try: + wall_anchor = nearest_surface_anchor(scene, probe_target, margin_m=5.0, + preferred_normal=view["closeup_preferred_normal"], + minimum_alignment=0.25) + closeup_surface_distance = wall_anchor["distance_m"] + closeup_anchor_offset = closeup_surface_distance + closeup_normal_alignment = dot(wall_anchor["normal"], + view["closeup_preferred_normal"]) + if closeup_surface_distance > 5.0: + raise RuntimeError(f"{variant}-{view['name']}: nearest wall surface is " + f"{closeup_surface_distance:.3f} m from the route-local target") + actual_target = wall_anchor["position_m"] + actual_camera = add(actual_target, mul(wall_anchor["normal"], 4.0)) + closeup_distance = math.dist(actual_camera, actual_target) + if abs(closeup_distance - 4.0) > 0.02: + raise RuntimeError(f"{variant}-{view['name']}: camera-to-wall distance is " + f"{closeup_distance:.3f} m, expected 4 m") + except RuntimeError as error: + raise RuntimeError(f"{variant}-{view['name']}: could not verify the 4 m wall " + f"view: {error}") from error + if attempt_kind == "route-offset": + anchor = nearest_surface_anchor(scene, probe_focus) + surface_distance = anchor["distance_m"] + actual_camera = add(anchor["position_m"], mul(anchor["normal"], 12.0)) + actual_target = anchor["position_m"] + actual_focus = anchor["position_m"] + actual_yaw, actual_pitch = angles(actual_camera, actual_target) + render_command = [ + str(RENDERERS[variant]), str(scene), str(image), "--size=1920x1080", + f"--camera-m={fmt(actual_camera)}", f"--yaw-deg={actual_yaw:.6f}", + f"--pitch-deg={actual_pitch:.6f}", "--shade=readable", "--headlamp=on", + "--height-tint=on", f"--height-center-m={actual_focus[2]:.6f}", + "--height-range-m=32", + ] + render_output = run_process(f"{variant}-{view['name']}{suffix}-render", render_command, + render_log) + drawn = DRAWN.search(render_output) + if drawn is None or int(drawn.group(1)) <= 0 or not image.is_file(): + attempt_errors.append(f"{attempt_kind}@{route_distance}: no drawn geometry") + if variant == "after" or view["kind"] == "mouth": + break + continue + quality = run_process(f"{variant}-{view['name']}{suffix}-quality", [ + "python3", "-B", str(ROOT / "Standalone/Tools/verify/capture_quality.py"), + str(image)], quality_log, allow_failure=True) + quality_status = "pass" + if "status=PASS" not in quality: + metrics = QUALITY_METRICS.search(quality) + coverage = float(metrics.group(2)) if metrics else 0.0 + if coverage >= 0.001: + quality_status = "low_contrast_geometry_visible" + else: + attempt_errors.append(f"{attempt_kind}@{route_distance}: no visible pixel coverage") + if variant == "after" or view["kind"] == "mouth": + break + continue + + row = {**view, "variant": variant, "capture": str(image.relative_to(RESEARCH)), + "scene": str(scene.relative_to(ROOT)), "drawn_triangles": int(drawn.group(1)), + "source_triangles": source_triangles, "verified": True, + "pixel_quality_status": quality_status, + "route_distance_actual_m": route_distance, + "route_station_adjustment_m": route_adjustment, + "closeup_camera_target_distance_m": closeup_distance, + "closeup_target_surface_distance_m": closeup_surface_distance, + "closeup_predicted_target_offset_m": closeup_anchor_offset, + "closeup_wall_normal_alignment": closeup_normal_alignment, + "fallback_kind": attempt_kind if attempt_kind != "requested" else None, + "fallback_surface_distance_m": surface_distance, + "camera_actual_m": actual_camera, "target_actual_m": actual_target, + "logs": [str(headless_log.relative_to(ROOT)), + str(render_log.relative_to(ROOT)), + str(quality_log.relative_to(ROOT))]} + print("[L113Capture] " + json.dumps(row, sort_keys=True), flush=True) + return row + raise RuntimeError(f"{variant}-{view['name']}: no verified image; " + + "; ".join(attempt_errors)) + + +def main() -> int: + before_index = ROOT / "Standalone/Research/WorldAssemblerM3/Linux112/captures/capture-index.json" + required = (*BINARIES.values(), *RENDERERS.values(), *LAYOUTS.values(), + *AUDIT_LOGS.values(), before_index) + if any(not path.is_file() for path in required): + raise SystemExit("missing L112 before captures or L113 capture inputs") + (SAVED / "before").mkdir(parents=True, exist_ok=True) + + before_document = json.loads(before_index.read_text(encoding="utf-8")) + before_rows = [] + before_source = ROOT / "Standalone/Research/WorldAssemblerM3/Linux112" + for source_row in before_document.get("captures", []): + if source_row.get("variant") != "after": + continue + source_image = before_source / source_row["capture"] + target_image = CAPTURES / "before" / Path(source_row["capture"]).name + target_image.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(source_image, target_image) + source_hash = hashlib.sha256(source_image.read_bytes()).hexdigest() + target_hash = hashlib.sha256(target_image.read_bytes()).hexdigest() + if source_hash != target_hash: + raise RuntimeError(f"L112 before capture copy changed bytes: {source_image}") + quality_log = SAVED / "before" / f"{target_image.stem}-quality.log" + quality = run_process(f"before-{target_image.stem}-quality", [ + "python3", "-B", str(ROOT / "Standalone/Tools/verify/capture_quality.py"), + str(target_image)], quality_log, allow_failure=True) + quality_status = "pass" + if "status=PASS" not in quality: + metrics = QUALITY_METRICS.search(quality) + coverage = float(metrics.group(2)) if metrics else 0.0 + if coverage < 0.001: + raise RuntimeError(f"L112 before capture failed image quality: {source_image}") + quality_status = "low_contrast_geometry_visible" + row = dict(source_row) + row["variant"] = "before" + row["capture"] = str(target_image.relative_to(RESEARCH)) + row["source_capture"] = str(source_image.relative_to(ROOT)) + row["source_sha256"] = source_hash + row["verified"] = True + row["pixel_quality_status"] = quality_status + row["logs"] = [*row.get("logs", []), str(quality_log.relative_to(ROOT))] + before_rows.append(row) + + sections_by_variant = {} + for variant in ("before", "after"): + sections = [] + for passage, section, start, end, samples, midpoint, radius in SECTION.findall( + AUDIT_LOGS[variant].read_text(encoding="utf-8", errors="replace")): + sections.append({"passage": passage, "section": int(section), + "start_m": float(start), "end_m": float(end), + "samples": int(samples), "midpoint": vector(midpoint), + "radius_m": float(radius)}) + if not sections: + raise SystemExit(f"no open-air sections found in the {variant} passage audit") + sections_by_variant[variant] = sections + + layout = json.loads(LAYOUTS["after"].read_text(encoding="utf-8")) + views = make_views(layout, sections_by_variant["after"], use_derived_shape=True, + use_spline=True, include_open_air=True) + expected = 5 * len(layout["passages"]) + 5 * len(sections_by_variant["after"]) + if len(views) != expected: + raise RuntimeError(f"unexpected L113 camera count: {len(views)} != {expected}") + print(f"[L113CapturePlan] passages={len(layout['passages'])} " + f"open_air_sections={len(sections_by_variant['after'])} " + f"after_views={len(views)} before_copies={len(before_rows)}", flush=True) + + all_rows = before_rows + for view in views: + all_rows.append(capture("after", view, layout)) + if not before_rows: + raise RuntimeError("no L112 captures were copied to the L113 before set") + + CAPTURES.mkdir(parents=True, exist_ok=True) + (CAPTURES / "capture-index.json").write_text( + json.dumps({"open_air_sections_by_variant": sections_by_variant, + "captures": all_rows}, indent=2) + "\n", encoding="utf-8") + lines = ["# L113 passage captures", "", + "Before images are byte-identical copies of the verified L112 captures. " + "After images use L113 meshes. Every image has nonzero visible triangles, " + "a passing pixel coverage check, and the 4 m close-ups are surface-snapped.", ""] + for variant in ("before", "after"): + lines.extend([f"## {variant.title()}", ""]) + for row in all_rows: + if row["variant"] != variant: + continue + flag = " **OPEN AIR**" if row["kind"] == "open-air" else "" + quality_note = (f"; {row['pixel_quality_status']}" + if row["pixel_quality_status"] != "pass" else "") + lines.append(f"- [{row['station']}]({variant}/{Path(row['capture']).name}) — " + f"{row['passage']}{flag}; {row['drawn_triangles']} visible triangles" + f"{quality_note}") + lines.append("") + (CAPTURES / "INDEX.md").write_text("\n".join(lines), encoding="utf-8") + failures = [row for row in all_rows if not row["verified"]] + closeups = [row for row in all_rows if row["kind"] == "open-air-close"] + open_air_views = [row for row in all_rows + if row["kind"] == "open-air" and row["station"].endswith("view-1")] + closeups_ok = (len(closeups) == 2 * len(open_air_views) + and all(row["verified"] and abs(row["closeup_camera_target_distance_m"] - 4.0) <= 0.02 + and row["closeup_target_surface_distance_m"] <= 5.0 + and row["closeup_wall_normal_alignment"] >= 0.25 + and row["drawn_triangles"] > 0 + and row["pixel_quality_status"] in + ("pass", "low_contrast_geometry_visible") for row in closeups)) + print(f"[L113CaptureSummary] captures={len(all_rows)} " + f"verified={len(all_rows)-len(failures)} failed={len(failures)} " + f"4m_closeups={len(closeups)} closeups_verified={str(closeups_ok).lower()}", + flush=True) + return 1 if failures or not closeups_ok else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/RunL113HashMatrix.py b/Standalone/Research/WorldAssemblerM3/Linux113/RunL113HashMatrix.py new file mode 100644 index 0000000..cd255bc --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux113/RunL113HashMatrix.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +"""Check Clang/GCC hash identity at W1/W8/W12 and pin v220 owner hashes.""" +from __future__ import annotations + +import json +import re +import subprocess +import time +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[4] +OUT = ROOT / "Saved/Linux/l113/hashes" +DATASETS = { + "owner4": ROOT / "Standalone/data/owner_world.json", + "owner2": ROOT / "Standalone/data/regression/owner_world_2strate_l61.json", +} +BINARIES = { + "clang": ROOT / "Saved/Linux/l113/bin/VoxelForgeCoreHeadless-l113-clang", + "gcc": ROOT / "Saved/Linux/l113/bin/VoxelForgeCoreHeadless-l113-gcc", +} +HASH = re.compile(r"^\[Pipeline(?:FullDetailHash|WholeViewHash|LODHash|ExactQueryHash)\].*$", re.M) +STAMP = re.compile(r"^\[VoxelForgeSourceStamp\] sha256=(\S+)$", re.M) + + +def run(dataset: str, recipe: str, workers: int, compiler: str) -> dict: + OUT.mkdir(parents=True, exist_ok=True) + label = f"{dataset}-{recipe}-w{workers}-{compiler}" + log = OUT / f"{label}.log" + layout = OUT / f"{label}.layout.json" + command = [ + "taskset", "-c", "0-11", "prlimit", "--as=6442450944", "--", + "timeout", "1740s", str(BINARIES[compiler]), str(DATASETS[dataset]), + f"--workers={workers}", "--world-assembler-prototype", "--stream-benchmark", + "--stream-pipeline", "--force-generate", "--clip-radius=3", + "--max-clip-level=8", "--max-level=8", f"--recipe={recipe}", + "--stream-hash", f"--resolved-layout-output={layout}", + ] + started = time.monotonic() + with log.open("w", encoding="utf-8") as stream: + result = subprocess.run(command, cwd=ROOT, stdout=stream, + stderr=subprocess.STDOUT, check=False, timeout=1740) + output = log.read_text(encoding="utf-8", errors="replace") + hashes = HASH.findall(output) + if result.returncode or len(hashes) != 12: + raise SystemExit(f"hash run failed or incomplete: {label}; exit={result.returncode} " + f"hashes={len(hashes)} log={log}") + row = {"dataset": dataset, "recipe": recipe, "workers": workers, + "compiler": compiler, "exit_code": result.returncode, + "hashes": hashes, "source_stamp": (STAMP.search(output).group(1) + if STAMP.search(output) else None), + "elapsed_s": round(time.monotonic() - started, 3), + "log": str(log.relative_to(ROOT))} + print("[L113HashRun] " + json.dumps(row, sort_keys=True), flush=True) + return row + + +def main() -> int: + if any(not path.is_file() for path in (*DATASETS.values(), *BINARIES.values())): + raise SystemExit("missing L113 hash input") + rows = [] + recipes = {"owner4": ("surface-world",), + "owner2": ("surface-world", "floating-islands")} + for dataset, dataset_recipes in recipes.items(): + for recipe in dataset_recipes: + for workers in (1, 8, 12): + for compiler in ("clang", "gcc"): + rows.append(run(dataset, recipe, workers, compiler)) + (OUT / "runs-partial.json").write_text( + json.dumps(rows, indent=2) + "\n", encoding="utf-8") + groups = {} + for dataset, dataset_recipes in recipes.items(): + for recipe in dataset_recipes: + key = f"{dataset}/{recipe}" + group = [row for row in rows if row["dataset"] == dataset + and row["recipe"] == recipe] + reference = group[0]["hashes"] + groups[key] = {"all_worker_compiler_hashes_match": all( + row["hashes"] == reference for row in group), + "source_stamps": sorted({row["source_stamp"] for row in group}), + "runs": [{"workers": row["workers"], "compiler": row["compiler"], + "log": row["log"]} for row in group]} + if not groups[key]["all_worker_compiler_hashes_match"]: + raise SystemExit(f"determinism mismatch: {key}") + if dataset == "owner2": + canonical = next(row for row in group if row["workers"] == 12 + and row["compiler"] == "clang") + recipe_name = "floating-islands" if recipe == "floating-islands" else "surface-world" + style = 1 if recipe_name == "surface-world" else 2 + baseline = (ROOT / "Standalone/Tools/verify/baselines/owner-hash/canonical" + / f"owner-hash-{recipe_name}-style{style}-v220.baseline") + baseline.write_text("\n".join(canonical["hashes"]) + "\n", + encoding="utf-8") + summary = {"runs": rows, "groups": groups, + "owner4_all_four_strata": "owner4/surface-world", + "owner2_canonical_pins": ["owner2/surface-world", + "owner2/floating-islands"]} + (OUT / "summary.json").write_text(json.dumps(summary, indent=2) + "\n", + encoding="utf-8") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/RunL113Timing.py b/Standalone/Research/WorldAssemblerM3/Linux113/RunL113Timing.py new file mode 100644 index 0000000..735b8e1 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux113/RunL113Timing.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 +"""Five interleaved L80 readiness runs for L109, L112, and L113.""" +from __future__ import annotations + +import json +import re +import statistics +import subprocess +import time +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[4] +OUT = ROOT / "Saved/Linux/l113/timing" +DATA = ROOT / "Standalone/data/owner_world.json" +BINARIES = { + "L109": ROOT / "Saved/Linux/l109/bin-final/VoxelForgeCoreHeadless-l109-clang", + "L112": ROOT / "Saved/Linux/l112/bin-clang/VoxelForgeCoreHeadless-l112-clang", + "L113": ROOT / "Saved/Linux/l113/bin/VoxelForgeCoreHeadless-l113-clang", +} +CAMERAS = { + 0: (8.0, 16.0, -372.2626953125), + 1: (25.8369140625, 3.19921875, -737.0), + 2: (19.166015625, -14.2001953125, -753.3740234375), + 3: (-20.0625, -5.068359375, -900.353515625), +} +PIPELINE = re.compile(r"^\[StreamPipeline\] (.*)$", re.M) +FIELDS = re.compile(r"([a-zA-Z0-9_]+)=([^ ]+)") +NEAR = re.compile( + r"^\[WorldAssemblerNearLODReady\] lods=0-2 tiles=(\d+)/(\d+) cold_ready_s=([0-9.]+)$", + re.M, +) + + +def run(strate: int, workers: int, version: str, phase: str, replicate: int) -> dict: + OUT.mkdir(parents=True, exist_ok=True) + label = f"s{strate}-w{workers}-{version}-{phase}{replicate}" + log = OUT / f"{label}.log" + camera = ",".join(f"{v:.12f}" for v in CAMERAS[strate]) + ",0,0" + command = [ + "taskset", "-c", "0-11", "prlimit", "--as=6442450944", "--", + "timeout", "1740s", str(BINARIES[version]), str(DATA), + "--world-assembler-prototype", "--stream-benchmark", "--stream-pipeline", + f"--workers={workers}", "--clip-radius=3", "--max-clip-level=8", "--max-level=8", + f"--camera={camera}", "--profile-lod-work", "--stream-scheduler-policy=3", + ] + start = time.monotonic() + with log.open("w", encoding="utf-8") as output: + result = subprocess.run(command, cwd=ROOT, stdout=output, + stderr=subprocess.STDOUT, check=False, timeout=1740) + content = log.read_text(encoding="utf-8", errors="replace") + pipeline_match = PIPELINE.search(content) + near_match = NEAR.search(content) + if result.returncode or pipeline_match is None or near_match is None: + raise SystemExit(f"readiness run failed or trace missing: {log}; exit={result.returncode}") + pipeline = dict(FIELDS.findall(pipeline_match.group(1))) + row = { + "strate": strate, "workers": workers, "version": version, + "phase": phase, "replicate": replicate, "exit_code": result.returncode, + "wall_s": round(time.monotonic() - start, 3), + "lod02_ready_s": float(near_match.group(3)), + "whole_view_ready_s": float(pipeline["whole_view_ready"].removesuffix("s")), + "whole_tiles": int(pipeline["whole_tiles"].split("/")[0]), + "log": str(log.relative_to(ROOT)), + } + print("[L113TimingRun] " + json.dumps(row, sort_keys=True), flush=True) + return row + + +def main() -> int: + if not DATA.is_file() or any(not binary.is_file() for binary in BINARIES.values()): + raise SystemExit("missing L109/L112/L113 data or timing binary") + rows = [] + versions = ("L109", "L112", "L113") + for strate in range(4): + for workers in (8, 12): + for version in versions: + run(strate, workers, version, "warmup", 0) + for replicate in range(1, 6): + offset = (replicate - 1) % len(versions) + order = versions[offset:] + versions[:offset] + for version in order: + rows.append(run(strate, workers, version, "measured", replicate)) + (OUT / "runs-partial.json").write_text( + json.dumps(rows, indent=2) + "\n", encoding="utf-8") + summary = [] + for strate in range(4): + for workers in (8, 12): + item = {"strate": strate, "workers": workers, "replicates": 5} + medians = {} + for version in versions: + group = [row for row in rows if row["strate"] == strate + and row["workers"] == workers and row["version"] == version] + medians[version] = {} + for key in ("lod02_ready_s", "whole_view_ready_s"): + values = [row[key] for row in group] + medians[version][key] = statistics.median(values) + item[f"{version}_{key}_values"] = values + item[f"{version}_{key}_median"] = medians[version][key] + for comparison in ("L109", "L112"): + for key in ("lod02_ready_s", "whole_view_ready_s"): + item[f"L113_vs_{comparison}_{key}_delta_pct"] = round( + 100.0 * (medians["L113"][key] / medians[comparison][key] - 1.0), 2) + summary.append(item) + (OUT / "summary.json").write_text( + json.dumps({"runs": rows, "summary": summary}, indent=2) + "\n", + encoding="utf-8") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/INDEX.md b/Standalone/Research/WorldAssemblerM3/Linux113/captures/INDEX.md new file mode 100644 index 0000000..586c643 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux113/captures/INDEX.md @@ -0,0 +1,109 @@ +# L113 passage captures + +Before images are byte-identical copies of the verified L112 captures. After images use L113 meshes. Every image has nonzero visible triangles, a passing pixel coverage check, and the 4 m close-ups are surface-snapped. + +## Before + +- [upper-mouth](before/passage-0-1-0-upper-mouth.png) — passage/0-1/0; 244874 visible triangles +- [lower-mouth](before/passage-0-1-0-lower-mouth.png) — passage/0-1/0; 551596 visible triangles +- [25%](before/passage-0-1-0-station-25.png) — passage/0-1/0; 135136 visible triangles +- [50%](before/passage-0-1-0-station-50.png) — passage/0-1/0; 316508 visible triangles +- [75%](before/passage-0-1-0-station-75.png) — passage/0-1/0; 257040 visible triangles +- [section-1/view-1](before/passage-0-1-0-openair-1-view-1.png) — passage/0-1/0 **OPEN AIR**; 278629 visible triangles +- [section-1/view-2](before/passage-0-1-0-openair-1-view-2.png) — passage/0-1/0 **OPEN AIR**; 287396 visible triangles +- [section-1/view-3](before/passage-0-1-0-openair-1-view-3.png) — passage/0-1/0 **OPEN AIR**; 311780 visible triangles +- [section-1/4m-outside](before/passage-0-1-0-openair-1-4m-outside.png) — passage/0-1/0; 278629 visible triangles +- [section-1/4m-interior-wall](before/passage-0-1-0-openair-1-4m-interior-wall.png) — passage/0-1/0; 311780 visible triangles +- [section-2/view-1](before/passage-0-1-0-openair-2-view-1.png) — passage/0-1/0 **OPEN AIR**; 278629 visible triangles +- [section-2/view-2](before/passage-0-1-0-openair-2-view-2.png) — passage/0-1/0 **OPEN AIR**; 311780 visible triangles +- [section-2/view-3](before/passage-0-1-0-openair-2-view-3.png) — passage/0-1/0 **OPEN AIR**; 311780 visible triangles +- [section-2/4m-outside](before/passage-0-1-0-openair-2-4m-outside.png) — passage/0-1/0; 278629 visible triangles +- [section-2/4m-interior-wall](before/passage-0-1-0-openair-2-4m-interior-wall.png) — passage/0-1/0; 350192 visible triangles +- [section-3/view-1](before/passage-0-1-0-openair-3-view-1.png) — passage/0-1/0 **OPEN AIR**; 210501 visible triangles +- [section-3/view-2](before/passage-0-1-0-openair-3-view-2.png) — passage/0-1/0 **OPEN AIR**; 189354 visible triangles +- [section-3/view-3](before/passage-0-1-0-openair-3-view-3.png) — passage/0-1/0 **OPEN AIR**; 189354 visible triangles +- [section-3/4m-outside](before/passage-0-1-0-openair-3-4m-outside.png) — passage/0-1/0; 156696 visible triangles +- [section-3/4m-interior-wall](before/passage-0-1-0-openair-3-4m-interior-wall.png) — passage/0-1/0; 156658 visible triangles +- [upper-mouth](before/passage-1-2-0-upper-mouth.png) — passage/1-2/0; 595932 visible triangles +- [lower-mouth](before/passage-1-2-0-lower-mouth.png) — passage/1-2/0; 546268 visible triangles +- [25%](before/passage-1-2-0-station-25.png) — passage/1-2/0; 655074 visible triangles +- [50%](before/passage-1-2-0-station-50.png) — passage/1-2/0; 604662 visible triangles +- [75%](before/passage-1-2-0-station-75.png) — passage/1-2/0; 612135 visible triangles +- [section-1/view-1](before/passage-1-2-0-openair-1-view-1.png) — passage/1-2/0 **OPEN AIR**; 623352 visible triangles +- [section-1/view-2](before/passage-1-2-0-openair-1-view-2.png) — passage/1-2/0 **OPEN AIR**; 576164 visible triangles; low_contrast_geometry_visible +- [section-1/view-3](before/passage-1-2-0-openair-1-view-3.png) — passage/1-2/0 **OPEN AIR**; 570605 visible triangles +- [section-1/4m-outside](before/passage-1-2-0-openair-1-4m-outside.png) — passage/1-2/0; 623352 visible triangles +- [section-1/4m-interior-wall](before/passage-1-2-0-openair-1-4m-interior-wall.png) — passage/1-2/0; 612135 visible triangles +- [section-2/view-1](before/passage-1-2-0-openair-2-view-1.png) — passage/1-2/0 **OPEN AIR**; 628316 visible triangles +- [section-2/view-2](before/passage-1-2-0-openair-2-view-2.png) — passage/1-2/0 **OPEN AIR**; 585440 visible triangles +- [section-2/view-3](before/passage-1-2-0-openair-2-view-3.png) — passage/1-2/0 **OPEN AIR**; 613722 visible triangles +- [section-2/4m-outside](before/passage-1-2-0-openair-2-4m-outside.png) — passage/1-2/0; 585802 visible triangles +- [section-2/4m-interior-wall](before/passage-1-2-0-openair-2-4m-interior-wall.png) — passage/1-2/0; 574472 visible triangles +- [upper-mouth](before/passage-2-3-0-upper-mouth.png) — passage/2-3/0; 59568 visible triangles +- [lower-mouth](before/passage-2-3-0-lower-mouth.png) — passage/2-3/0; 294004 visible triangles; low_contrast_geometry_visible +- [25%](before/passage-2-3-0-station-25.png) — passage/2-3/0; 55514 visible triangles; low_contrast_geometry_visible +- [50%](before/passage-2-3-0-station-50.png) — passage/2-3/0; 458230 visible triangles +- [75%](before/passage-2-3-0-station-75.png) — passage/2-3/0; 475838 visible triangles +- [section-1/view-1](before/passage-2-3-0-openair-1-view-1.png) — passage/2-3/0 **OPEN AIR**; 104612 visible triangles +- [section-1/view-2](before/passage-2-3-0-openair-1-view-2.png) — passage/2-3/0 **OPEN AIR**; 76426 visible triangles +- [section-1/view-3](before/passage-2-3-0-openair-1-view-3.png) — passage/2-3/0 **OPEN AIR**; 94962 visible triangles +- [section-1/4m-outside](before/passage-2-3-0-openair-1-4m-outside.png) — passage/2-3/0; 104612 visible triangles; low_contrast_geometry_visible +- [section-1/4m-interior-wall](before/passage-2-3-0-openair-1-4m-interior-wall.png) — passage/2-3/0; 94962 visible triangles; low_contrast_geometry_visible +- [section-2/view-1](before/passage-2-3-0-openair-2-view-1.png) — passage/2-3/0 **OPEN AIR**; 476214 visible triangles +- [section-2/view-2](before/passage-2-3-0-openair-2-view-2.png) — passage/2-3/0 **OPEN AIR**; 479366 visible triangles +- [section-2/view-3](before/passage-2-3-0-openair-2-view-3.png) — passage/2-3/0 **OPEN AIR**; 479366 visible triangles +- [section-2/4m-outside](before/passage-2-3-0-openair-2-4m-outside.png) — passage/2-3/0; 476214 visible triangles +- [section-2/4m-interior-wall](before/passage-2-3-0-openair-2-4m-interior-wall.png) — passage/2-3/0; 486990 visible triangles + +## After + +- [upper-mouth](after/passage-0-1-0-upper-mouth.png) — passage/0-1/0; 245708 visible triangles +- [lower-mouth](after/passage-0-1-0-lower-mouth.png) — passage/0-1/0; 551698 visible triangles +- [25%](after/passage-0-1-0-station-25.png) — passage/0-1/0; 134404 visible triangles +- [50%](after/passage-0-1-0-station-50.png) — passage/0-1/0; 314118 visible triangles +- [75%](after/passage-0-1-0-station-75.png) — passage/0-1/0; 255252 visible triangles +- [section-1/view-1](after/passage-0-1-0-openair-1-view-1.png) — passage/0-1/0 **OPEN AIR**; 279171 visible triangles +- [section-1/view-2](after/passage-0-1-0-openair-1-view-2.png) — passage/0-1/0 **OPEN AIR**; 287908 visible triangles +- [section-1/view-3](after/passage-0-1-0-openair-1-view-3.png) — passage/0-1/0 **OPEN AIR**; 312014 visible triangles +- [section-1/4m-outside](after/passage-0-1-0-openair-1-4m-outside.png) — passage/0-1/0; 279171 visible triangles +- [section-1/4m-interior-wall](after/passage-0-1-0-openair-1-4m-interior-wall.png) — passage/0-1/0; 312014 visible triangles +- [section-2/view-1](after/passage-0-1-0-openair-2-view-1.png) — passage/0-1/0 **OPEN AIR**; 279171 visible triangles +- [section-2/view-2](after/passage-0-1-0-openair-2-view-2.png) — passage/0-1/0 **OPEN AIR**; 312014 visible triangles +- [section-2/view-3](after/passage-0-1-0-openair-2-view-3.png) — passage/0-1/0 **OPEN AIR**; 312014 visible triangles +- [section-2/4m-outside](after/passage-0-1-0-openair-2-4m-outside.png) — passage/0-1/0; 279171 visible triangles +- [section-2/4m-interior-wall](after/passage-0-1-0-openair-2-4m-interior-wall.png) — passage/0-1/0; 350214 visible triangles +- [section-3/view-1](after/passage-0-1-0-openair-3-view-1.png) — passage/0-1/0 **OPEN AIR**; 207429 visible triangles +- [section-3/view-2](after/passage-0-1-0-openair-3-view-2.png) — passage/0-1/0 **OPEN AIR**; 185112 visible triangles +- [section-3/view-3](after/passage-0-1-0-openair-3-view-3.png) — passage/0-1/0 **OPEN AIR**; 185112 visible triangles +- [section-3/4m-outside](after/passage-0-1-0-openair-3-4m-outside.png) — passage/0-1/0; 153860 visible triangles +- [section-3/4m-interior-wall](after/passage-0-1-0-openair-3-4m-interior-wall.png) — passage/0-1/0; 152882 visible triangles +- [upper-mouth](after/passage-1-2-0-upper-mouth.png) — passage/1-2/0; 595672 visible triangles; low_contrast_geometry_visible +- [lower-mouth](after/passage-1-2-0-lower-mouth.png) — passage/1-2/0; 546142 visible triangles +- [25%](after/passage-1-2-0-station-25.png) — passage/1-2/0; 654984 visible triangles +- [50%](after/passage-1-2-0-station-50.png) — passage/1-2/0; 604712 visible triangles +- [75%](after/passage-1-2-0-station-75.png) — passage/1-2/0; 612097 visible triangles +- [section-1/view-1](after/passage-1-2-0-openair-1-view-1.png) — passage/1-2/0 **OPEN AIR**; 623418 visible triangles +- [section-1/view-2](after/passage-1-2-0-openair-1-view-2.png) — passage/1-2/0 **OPEN AIR**; 575936 visible triangles; low_contrast_geometry_visible +- [section-1/view-3](after/passage-1-2-0-openair-1-view-3.png) — passage/1-2/0 **OPEN AIR**; 570541 visible triangles +- [section-1/4m-outside](after/passage-1-2-0-openair-1-4m-outside.png) — passage/1-2/0; 623418 visible triangles +- [section-1/4m-interior-wall](after/passage-1-2-0-openair-1-4m-interior-wall.png) — passage/1-2/0; 612097 visible triangles +- [section-2/view-1](after/passage-1-2-0-openair-2-view-1.png) — passage/1-2/0 **OPEN AIR**; 628096 visible triangles +- [section-2/view-2](after/passage-1-2-0-openair-2-view-2.png) — passage/1-2/0 **OPEN AIR**; 585354 visible triangles +- [section-2/view-3](after/passage-1-2-0-openair-2-view-3.png) — passage/1-2/0 **OPEN AIR**; 613434 visible triangles +- [section-2/4m-outside](after/passage-1-2-0-openair-2-4m-outside.png) — passage/1-2/0; 585844 visible triangles +- [section-2/4m-interior-wall](after/passage-1-2-0-openair-2-4m-interior-wall.png) — passage/1-2/0; 574404 visible triangles +- [upper-mouth](after/passage-2-3-0-upper-mouth.png) — passage/2-3/0; 59570 visible triangles +- [lower-mouth](after/passage-2-3-0-lower-mouth.png) — passage/2-3/0; 293916 visible triangles; low_contrast_geometry_visible +- [25%](after/passage-2-3-0-station-25.png) — passage/2-3/0; 55516 visible triangles; low_contrast_geometry_visible +- [50%](after/passage-2-3-0-station-50.png) — passage/2-3/0; 457922 visible triangles +- [75%](after/passage-2-3-0-station-75.png) — passage/2-3/0; 475608 visible triangles +- [section-1/view-1](after/passage-2-3-0-openair-1-view-1.png) — passage/2-3/0 **OPEN AIR**; 104612 visible triangles +- [section-1/view-2](after/passage-2-3-0-openair-1-view-2.png) — passage/2-3/0 **OPEN AIR**; 76426 visible triangles +- [section-1/view-3](after/passage-2-3-0-openair-1-view-3.png) — passage/2-3/0 **OPEN AIR**; 94962 visible triangles +- [section-1/4m-outside](after/passage-2-3-0-openair-1-4m-outside.png) — passage/2-3/0; 104612 visible triangles; low_contrast_geometry_visible +- [section-1/4m-interior-wall](after/passage-2-3-0-openair-1-4m-interior-wall.png) — passage/2-3/0; 94962 visible triangles; low_contrast_geometry_visible +- [section-2/view-1](after/passage-2-3-0-openair-2-view-1.png) — passage/2-3/0 **OPEN AIR**; 475906 visible triangles +- [section-2/view-2](after/passage-2-3-0-openair-2-view-2.png) — passage/2-3/0 **OPEN AIR**; 479214 visible triangles +- [section-2/view-3](after/passage-2-3-0-openair-2-view-3.png) — passage/2-3/0 **OPEN AIR**; 479214 visible triangles +- [section-2/4m-outside](after/passage-2-3-0-openair-2-4m-outside.png) — passage/2-3/0; 475906 visible triangles +- [section-2/4m-interior-wall](after/passage-2-3-0-openair-2-4m-interior-wall.png) — passage/2-3/0; 486760 visible triangles diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-lower-mouth.png new file mode 100644 index 0000000..b92d456 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-4m-interior-wall.png new file mode 100644 index 0000000..d3dd865 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-4m-outside.png new file mode 100644 index 0000000..6063485 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-view-1.png new file mode 100644 index 0000000..ebc06e2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-view-2.png new file mode 100644 index 0000000..03c8f4c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-view-3.png new file mode 100644 index 0000000..cb3041d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-4m-interior-wall.png new file mode 100644 index 0000000..6b059f0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-4m-outside.png new file mode 100644 index 0000000..fa1c550 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-view-1.png new file mode 100644 index 0000000..0cefe5d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-view-2.png new file mode 100644 index 0000000..39e0e17 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-view-3.png new file mode 100644 index 0000000..85497d2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-4m-interior-wall.png new file mode 100644 index 0000000..8ce668f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-4m-outside.png new file mode 100644 index 0000000..94fa718 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-view-1.png new file mode 100644 index 0000000..c620f79 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-view-2.png new file mode 100644 index 0000000..cafe41f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-view-3.png new file mode 100644 index 0000000..84d143a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-openair-3-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-station-25.png new file mode 100644 index 0000000..2644889 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..acab4a8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-station-75.png new file mode 100644 index 0000000..62b7f2c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-upper-mouth.png new file mode 100644 index 0000000..f90d319 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-0-1-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-lower-mouth.png new file mode 100644 index 0000000..1b7d858 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-4m-interior-wall.png new file mode 100644 index 0000000..b6af8b7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-4m-outside.png new file mode 100644 index 0000000..b43f9a8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-view-1.png new file mode 100644 index 0000000..5bc0a43 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-view-2.png new file mode 100644 index 0000000..fd9adfd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-view-3.png new file mode 100644 index 0000000..f6561bc Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-4m-interior-wall.png new file mode 100644 index 0000000..e78b529 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-4m-outside.png new file mode 100644 index 0000000..2b0f1b4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-view-1.png new file mode 100644 index 0000000..5ebd8cf Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-view-2.png new file mode 100644 index 0000000..9404bde Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-view-3.png new file mode 100644 index 0000000..bf98407 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-station-25.png new file mode 100644 index 0000000..6f16ad3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-station-50.png new file mode 100644 index 0000000..27c7676 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-station-75.png new file mode 100644 index 0000000..0b298b1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-upper-mouth.png new file mode 100644 index 0000000..c630f13 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-1-2-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-lower-mouth.png new file mode 100644 index 0000000..85f9c8d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-4m-interior-wall.png new file mode 100644 index 0000000..df09682 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-4m-outside.png new file mode 100644 index 0000000..64c312b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-view-1.png new file mode 100644 index 0000000..0a51c50 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-view-2.png new file mode 100644 index 0000000..6420b2b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-view-3.png new file mode 100644 index 0000000..288d9b9 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-4m-interior-wall.png new file mode 100644 index 0000000..6796fba Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-4m-outside.png new file mode 100644 index 0000000..90432a5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-view-1.png new file mode 100644 index 0000000..2542602 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-view-2.png new file mode 100644 index 0000000..c14813a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-view-3.png new file mode 100644 index 0000000..fc56edb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-station-25.png new file mode 100644 index 0000000..794aeb3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-station-50.png new file mode 100644 index 0000000..581b53b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-station-75.png new file mode 100644 index 0000000..144c5ce Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-upper-mouth.png new file mode 100644 index 0000000..2c79742 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/after/passage-2-3-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-lower-mouth.png new file mode 100644 index 0000000..eccd3c0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-4m-interior-wall.png new file mode 100644 index 0000000..e10071a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-4m-outside.png new file mode 100644 index 0000000..a25faeb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-view-1.png new file mode 100644 index 0000000..b2f9837 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-view-2.png new file mode 100644 index 0000000..3b394f1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-view-3.png new file mode 100644 index 0000000..7bc7c9f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-4m-interior-wall.png new file mode 100644 index 0000000..e7ac719 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-4m-outside.png new file mode 100644 index 0000000..58e65cb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-view-1.png new file mode 100644 index 0000000..87476c9 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-view-2.png new file mode 100644 index 0000000..c904473 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-view-3.png new file mode 100644 index 0000000..8e8a59f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-4m-interior-wall.png new file mode 100644 index 0000000..b370fe5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-4m-outside.png new file mode 100644 index 0000000..eea6716 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-view-1.png new file mode 100644 index 0000000..20f5ecd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-view-2.png new file mode 100644 index 0000000..2dc7280 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-view-3.png new file mode 100644 index 0000000..6d222d2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-openair-3-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-station-25.png new file mode 100644 index 0000000..6d5b759 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-station-50.png new file mode 100644 index 0000000..44c7050 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-station-75.png new file mode 100644 index 0000000..72f1e02 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-upper-mouth.png new file mode 100644 index 0000000..4a21f52 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-0-1-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-lower-mouth.png new file mode 100644 index 0000000..2ab98a0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-4m-interior-wall.png new file mode 100644 index 0000000..2e156af Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-4m-outside.png new file mode 100644 index 0000000..b4da33f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-view-1.png new file mode 100644 index 0000000..8d8bbd7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-view-2.png new file mode 100644 index 0000000..9dafe3d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-view-3.png new file mode 100644 index 0000000..43909f5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-4m-interior-wall.png new file mode 100644 index 0000000..9d1043a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-4m-outside.png new file mode 100644 index 0000000..e89577e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-view-1.png new file mode 100644 index 0000000..8fc4c66 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-view-2.png new file mode 100644 index 0000000..226da7d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-view-3.png new file mode 100644 index 0000000..f171a9b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-station-25.png new file mode 100644 index 0000000..aeeed93 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-station-50.png new file mode 100644 index 0000000..6422188 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-station-75.png new file mode 100644 index 0000000..5b2f35c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-upper-mouth.png new file mode 100644 index 0000000..a0c4f1a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-1-2-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-lower-mouth.png new file mode 100644 index 0000000..70a3431 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-4m-interior-wall.png new file mode 100644 index 0000000..0829ac3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-4m-outside.png new file mode 100644 index 0000000..23440bc Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-view-1.png new file mode 100644 index 0000000..96e6e48 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-view-2.png new file mode 100644 index 0000000..5b6337f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-view-3.png new file mode 100644 index 0000000..1f19638 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-4m-interior-wall.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-4m-interior-wall.png new file mode 100644 index 0000000..e54a164 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-4m-interior-wall.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-4m-outside.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-4m-outside.png new file mode 100644 index 0000000..69e235d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-4m-outside.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-view-1.png new file mode 100644 index 0000000..b06dba2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-view-2.png new file mode 100644 index 0000000..6ddebea Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-view-3.png new file mode 100644 index 0000000..c76a392 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-station-25.png new file mode 100644 index 0000000..794aeb3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-station-50.png new file mode 100644 index 0000000..897b55b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-station-75.png new file mode 100644 index 0000000..bbf4e47 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-upper-mouth.png new file mode 100644 index 0000000..50b6f6e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux113/captures/before/passage-2-3-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux113/captures/capture-index.json b/Standalone/Research/WorldAssemblerM3/Linux113/captures/capture-index.json new file mode 100644 index 0000000..1b1ca9b --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux113/captures/capture-index.json @@ -0,0 +1,6272 @@ +{ + "open_air_sections_by_variant": { + "before": [ + { + "passage": "passage/0-1/0", + "section": 1, + "start_m": 6.905, + "end_m": 9.618, + "samples": 12, + "midpoint": [ + 7.282, + 7.839, + -373.185 + ], + "radius_m": 1.93 + }, + { + "passage": "passage/0-1/0", + "section": 2, + "start_m": 13.078, + "end_m": 15.794, + "samples": 12, + "midpoint": [ + 6.611, + 1.753, + -374.166 + ], + "radius_m": 2.253 + }, + { + "passage": "passage/0-1/0", + "section": 3, + "start_m": 1041.174, + "end_m": 1489.448, + "samples": 1979, + "midpoint": [ + -22.039, + -12.355, + -599.25 + ], + "radius_m": 3.5 + }, + { + "passage": "passage/1-2/0", + "section": 1, + "start_m": 81.367, + "end_m": 85.596, + "samples": 19, + "midpoint": [ + -9.52, + -9.729, + -745.879 + ], + "radius_m": 3.0 + }, + { + "passage": "passage/1-2/0", + "section": 2, + "start_m": 104.041, + "end_m": 104.778, + "samples": 4, + "midpoint": [ + 9.488, + -11.155, + -749.755 + ], + "radius_m": 3.139 + }, + { + "passage": "passage/2-3/0", + "section": 1, + "start_m": 7.733, + "end_m": 25.281, + "samples": 74, + "midpoint": [ + -7.267, + -11.478, + -813.609 + ], + "radius_m": 3.0 + }, + { + "passage": "passage/2-3/0", + "section": 2, + "start_m": 372.675, + "end_m": 377.341, + "samples": 21, + "midpoint": [ + -9.548, + 9.557, + -877.478 + ], + "radius_m": 3.0 + } + ], + "after": [ + { + "passage": "passage/0-1/0", + "section": 1, + "start_m": 6.994, + "end_m": 9.715, + "samples": 13, + "midpoint": [ + 7.272, + 7.748, + -373.197 + ], + "radius_m": 1.935 + }, + { + "passage": "passage/0-1/0", + "section": 2, + "start_m": 13.106, + "end_m": 15.879, + "samples": 13, + "midpoint": [ + 6.603, + 1.698, + -374.149 + ], + "radius_m": 2.256 + }, + { + "passage": "passage/0-1/0", + "section": 3, + "start_m": 1041.112, + "end_m": 1489.573, + "samples": 1945, + "midpoint": [ + -22.1, + -12.258, + -599.244 + ], + "radius_m": 3.5 + }, + { + "passage": "passage/1-2/0", + "section": 1, + "start_m": 81.397, + "end_m": 85.611, + "samples": 19, + "midpoint": [ + -9.518, + -9.731, + -745.88 + ], + "radius_m": 3.0 + }, + { + "passage": "passage/1-2/0", + "section": 2, + "start_m": 103.901, + "end_m": 104.823, + "samples": 5, + "midpoint": [ + 9.43, + -11.181, + -749.743 + ], + "radius_m": 3.136 + }, + { + "passage": "passage/2-3/0", + "section": 1, + "start_m": 7.72, + "end_m": 25.513, + "samples": 75, + "midpoint": [ + -7.178, + -11.528, + -813.627 + ], + "radius_m": 3.0 + }, + { + "passage": "passage/2-3/0", + "section": 2, + "start_m": 372.601, + "end_m": 377.257, + "samples": 21, + "midpoint": [ + -9.548, + 9.556, + -877.478 + ], + "radius_m": 3.0 + } + ] + }, + "captures": [ + { + "name": "passage-0-1-0-upper-mouth", + "passage": "passage/0-1/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + 8.335073547378155, + 20.44994601927027, + -371.842578125 + ], + "target": [ + 7.851078423387487, + 14.022246213657658, + -371.942578125 + ], + "yaw": -175.69384905314672, + "pitch": -0.8888009211775196, + "focus": [ + 8.0, + 16.0, + -372.1224609375 + ], + "center_z": -372.1224609375, + "variant": "before", + "capture": "captures/before/passage-0-1-0-upper-mouth.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-upper-mouth.vfmesh", + "drawn_triangles": 244874, + "source_triangles": 300692, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 8.335073547378155, + 20.44994601927027, + -371.842578125 + ], + "target_actual_m": [ + 7.851078423387487, + 14.022246213657658, + -371.942578125 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-upper-mouth-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-upper-mouth-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-upper-mouth-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-upper-mouth-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-upper-mouth.png", + "source_sha256": "d4c5e82a66ed3bd9270f599d368f18062b16f514e775303d714e2ff51b4481e1" + }, + { + "name": "passage-0-1-0-lower-mouth", + "passage": "passage/0-1/0", + "kind": "mouth", + "station": "lower-mouth", + "camera": [ + 32.6815683216108, + 9.56067063407582, + -735.4811957974861 + ], + "target": [ + 24.395934218476675, + 1.8599657217735117, + -736.6798828125 + ], + "yaw": -132.9045214795435, + "pitch": -6.049035133760526, + "focus": [ + 25.8369140625, + 3.19921875, + -736.2942543532574 + ], + "center_z": -736.2942543532574, + "variant": "before", + "capture": "captures/before/passage-0-1-0-lower-mouth.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-lower-mouth.vfmesh", + "drawn_triangles": 551596, + "source_triangles": 601134, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 32.6815683216108, + 9.56067063407582, + -735.4811957974861 + ], + "target_actual_m": [ + 24.395934218476675, + 1.8599657217735117, + -736.6798828125 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-lower-mouth-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-lower-mouth-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-lower-mouth-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-lower-mouth-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-lower-mouth.png", + "source_sha256": "5e2fb43a735cb326fb2c90120655710d9933b34baec96a59c7988150f4686a4b" + }, + { + "name": "passage-0-1-0-station-25", + "passage": "passage/0-1/0", + "kind": "station", + "station": "25%", + "camera": [ + -14.773420908313007, + -19.15622259434896, + -462.9505434032349 + ], + "target": [ + -22.332571996402073, + -8.365303107352405, + -465.2710323468326 + ], + "yaw": -35.01164133311156, + "pitch": -9.988838244260211, + "focus": [ + -14.252149448584996, + -18.61698603654429, + -462.71491494399237 + ], + "center_z": -462.71491494399237, + "route_distance_m": 506.6753072603284, + "route_length_m": 2026.7012290413136, + "requested_route_distance_m": 506.6753072603284, + "variant": "before", + "capture": "captures/before/passage-0-1-0-station-25.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-station-25.vfmesh", + "drawn_triangles": 135136, + "source_triangles": 181364, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 506.6753072603284, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -14.773420908313007, + -19.15622259434896, + -462.9505434032349 + ], + "target_actual_m": [ + -22.332571996402073, + -8.365303107352405, + -465.2710323468326 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-station-25-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-station-25-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-station-25-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-station-25-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-station-25.png", + "source_sha256": "e030eee4969551f1f4232cfbe907285bf8a14521ece09a414dd0be443f206787" + }, + { + "name": "passage-0-1-0-station-50", + "passage": "passage/0-1/0", + "kind": "station", + "station": "50%", + "camera": [ + -5.87968914032497, + 21.857993246713395, + -554.13630134032 + ], + "target": [ + 7.315979337237899, + 21.580426280018035, + -556.4572725224375 + ], + "yaw": 91.20502199933122, + "pitch": -9.973491174456086, + "focus": [ + -5.762536970286937, + 21.11719950412685, + -553.9006728810774 + ], + "center_z": -553.9006728810774, + "route_distance_m": 1013.3506145206568, + "route_length_m": 2026.7012290413136, + "requested_route_distance_m": 1013.3506145206568, + "variant": "before", + "capture": "captures/before/passage-0-1-0-station-50.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-station-50.vfmesh", + "drawn_triangles": 316508, + "source_triangles": 404356, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1013.3506145206568, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -5.87968914032497, + 21.857993246713395, + -554.13630134032 + ], + "target_actual_m": [ + 7.315979337237899, + 21.580426280018035, + -556.4572725224375 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-station-50-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-station-50-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-station-50-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-station-50-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-station-50.png", + "source_sha256": "a63888def06ae489f9e0d2224ce307640a34718ba1f37592acfe402afd014ab7" + }, + { + "name": "passage-0-1-0-station-75", + "passage": "passage/0-1/0", + "kind": "station", + "station": "75%", + "camera": [ + 16.79632298277704, + -13.630908634595473, + -645.3200745693888 + ], + "target": [ + 6.584565856030696, + -21.9376366230758, + -647.640607952583 + ], + "yaw": -129.12654304255443, + "pitch": -9.997579084277536, + "focus": [ + 16.22588361858051, + -13.143980578538871, + -645.0844461101462 + ], + "center_z": -645.0844461101462, + "route_distance_m": 1520.0259217809853, + "route_length_m": 2026.7012290413136, + "requested_route_distance_m": 1520.0259217809853, + "variant": "before", + "capture": "captures/before/passage-0-1-0-station-75.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-station-75.vfmesh", + "drawn_triangles": 257040, + "source_triangles": 329218, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1520.0259217809853, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 16.79632298277704, + -13.630908634595473, + -645.3200745693888 + ], + "target_actual_m": [ + 6.584565856030696, + -21.9376366230758, + -647.640607952583 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-station-75-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-station-75-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-station-75-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-station-75-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-station-75.png", + "source_sha256": "fd26c9baf02f4f4bc886a416a49d0857a5e19da8787fa470816dfc5ce324a601" + }, + { + "name": "passage-0-1-0-openair-1-view-1", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-1/view-1", + "camera": [ + 14.177038985763101, + 7.143775299052934, + -371.985 + ], + "target": [ + 7.282, + 7.839, + -373.085 + ], + "yaw": -84.24234320176159, + "pitch": -9.01932243138141, + "focus": [ + 7.282, + 7.839, + -373.185 + ], + "center_z": -373.185, + "open_air_section": 1, + "route_distance_m": 8.2615, + "requested_route_distance_m": 8.2615, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-1-view-1.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-1.vfmesh", + "drawn_triangles": 278629, + "source_triangles": 346431, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.2615, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 14.177038985763101, + 7.143775299052934, + -371.985 + ], + "target_actual_m": [ + 7.282, + 7.839, + -373.085 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-1-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-1-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-1-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-1-view-1-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-1-view-1.png", + "source_sha256": "684e259880454311fd8d91fa06256097cabc96c7d330e35f20b069349f66c6ef" + }, + { + "name": "passage-0-1-0-openair-1-view-2", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-1/view-2", + "camera": [ + 1.8793936951380026, + 8.383743163945537, + -369.185 + ], + "target": [ + 7.083023812394741, + 5.865611297170759, + -373.44218768304876 + ], + "yaw": 115.82318961848594, + "pitch": -36.368805894026266, + "focus": [ + 7.282, + 7.839, + -373.185 + ], + "center_z": -373.185, + "open_air_section": 1, + "route_distance_m": 8.2615, + "requested_route_distance_m": 8.2615, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-1-view-2.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-2.vfmesh", + "drawn_triangles": 287396, + "source_triangles": 358400, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.2615, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 1.8793936951380026, + 8.383743163945537, + -369.185 + ], + "target_actual_m": [ + 7.083023812394741, + 5.865611297170759, + -373.44218768304876 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-2-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-2-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-2-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-1-view-2-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-1-view-2.png", + "source_sha256": "20517ba18981701304f2beeef4847510fb0a02d1c2d5321b31819ea969fbac0f" + }, + { + "name": "passage-0-1-0-openair-1-view-3", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-1/view-3", + "camera": [ + 7.282, + 7.839, + -373.635 + ], + "target": [ + 6.585583343381591, + 0.9321395400976531, + -374.5351568906707 + ], + "yaw": -174.2423432017616, + "pitch": -7.388343353280002, + "focus": [ + 7.282, + 7.839, + -373.185 + ], + "center_z": -373.185, + "open_air_section": 1, + "route_distance_m": 8.2615, + "requested_route_distance_m": 8.2615, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-1-view-3.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-3.vfmesh", + "drawn_triangles": 311780, + "source_triangles": 392506, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.2615, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 7.282, + 7.839, + -373.635 + ], + "target_actual_m": [ + 6.585583343381591, + 0.9321395400976531, + -374.5351568906707 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-3-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-3-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-view-3-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-1-view-3-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-1-view-3.png", + "source_sha256": "9a8d8894ba248e15366494e998a85e1d7ed60cafb07719c6efe424149c7fc21e" + }, + { + "name": "passage-0-1-0-openair-1-4m-outside", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-1/4m-outside", + "camera": [ + 13.182083865162365, + 7.244096323720621, + -374.385 + ], + "target": [ + 9.202263382759421, + 7.645380422391366, + -374.385 + ], + "yaw": -84.24234320176159, + "pitch": 0.0, + "focus": [ + 7.282, + 7.839, + -373.185 + ], + "center_z": -373.185, + "open_air_section": 1, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.9949551206007362, + -0.10032102466768629, + 0.0 + ], + "camera_target_distance_m": 3.9999999999999996, + "route_distance_m": 8.2615, + "requested_route_distance_m": 8.2615, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-1-4m-outside.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-4m-outside.vfmesh", + "drawn_triangles": 278629, + "source_triangles": 346431, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.2615, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.9999999999999996, + "closeup_target_surface_distance_m": 0.7515085626476259, + "closeup_predicted_target_offset_m": 0.7515085626476259, + "closeup_wall_normal_alignment": 0.9914561643267705, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 13.001904038143014, + 8.028532071234862, + -374.0476239046015 + ], + "target_actual_m": [ + 9.013093948364258, + 8.0, + -373.75 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-4m-outside-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-4m-outside-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-4m-outside-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-1-4m-outside-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-1-4m-outside.png", + "source_sha256": "71d1cda2f55cf259f1174e9dde2d7edfbb2a40bc03a2676c6169239f30b65a8c" + }, + { + "name": "passage-0-1-0-openair-1-4m-interior-wall", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-1/4m-interior-wall", + "camera": [ + 7.405691935288184, + 3.966226119787983, + -374.8830418066488 + ], + "target": [ + 8.785962786332426, + 7.687355885946053, + -374.385 + ], + "yaw": 20.351222510561445, + "pitch": 7.1524858702584835, + "focus": [ + 7.282, + 7.839, + -373.185 + ], + "center_z": -373.185, + "open_air_section": 1, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.9949551206007362, + 0.10032102466768629, + -0.0 + ], + "camera_target_distance_m": 4.000000000000003, + "route_distance_m": 8.2615, + "requested_route_distance_m": 8.2615, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-1-4m-interior-wall.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-4m-interior-wall.vfmesh", + "drawn_triangles": 311780, + "source_triangles": 392506, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.2615, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.9999999999999987, + "closeup_target_surface_distance_m": 0.743343733960606, + "closeup_predicted_target_offset_m": 0.743343733960606, + "closeup_wall_normal_alignment": 0.9914561643267705, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 5.024283858585503, + 7.971467928765139, + -373.4523760953985 + ], + "target_actual_m": [ + 9.013093948364258, + 8.0, + -373.75 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-4m-interior-wall-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-4m-interior-wall-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-1-4m-interior-wall-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-1-4m-interior-wall-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-1-4m-interior-wall.png", + "source_sha256": "b264bc37e74fe4b2af36cfcd10bdba02b077f200eea1a3b2b7d31dd67b9836fa" + }, + { + "name": "passage-0-1-0-openair-2-view-1", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-2/view-1", + "camera": [ + 13.81216559375693, + 0.8874232608882145, + -372.966 + ], + "target": [ + 6.611, + 1.753, + -374.066 + ], + "yaw": -83.14595676247222, + "pitch": -8.623838343279465, + "focus": [ + 6.611, + 1.753, + -374.166 + ], + "center_z": -374.166, + "open_air_section": 2, + "route_distance_m": 14.436, + "requested_route_distance_m": 14.436, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-2-view-1.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-1.vfmesh", + "drawn_triangles": 278629, + "source_triangles": 346431, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.436, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 13.81216559375693, + 0.8874232608882145, + -372.966 + ], + "target_actual_m": [ + 6.611, + 1.753, + -374.066 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-1-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-1-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-1-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-2-view-1-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-2-view-1.png", + "source_sha256": "2cc7a56fe1be43d69a51bef9a36c8d297856a5b49f2323dd32d7c065f4107968" + }, + { + "name": "passage-0-1-0-openair-2-view-2", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-2/view-2", + "camera": [ + 0.8991144821613641, + 2.4395659699586516, + -370.166 + ], + "target": [ + 6.3761872034956015, + -0.2005250368401441, + -374.52461243848546 + ], + "yaw": 115.73527173937683, + "pitch": -35.63513396653433, + "focus": [ + 6.611, + 1.753, + -374.166 + ], + "center_z": -374.166, + "open_air_section": 2, + "route_distance_m": 14.436, + "requested_route_distance_m": 14.436, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-2-view-2.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-2.vfmesh", + "drawn_triangles": 311780, + "source_triangles": 392506, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.436, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 0.8991144821613641, + 2.4395659699586516, + -370.166 + ], + "target_actual_m": [ + 6.3761872034956015, + -0.2005250368401441, + -374.52461243848546 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-2-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-2-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-2-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-2-view-2-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-2-view-2.png", + "source_sha256": "ef628add5c8cd85ba1c37da875220be83a18d05e73996dfcbf98aff5dd834585" + }, + { + "name": "passage-0-1-0-openair-2-view-3", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-2/view-3", + "camera": [ + 6.611, + 1.753, + -374.75162845924257 + ], + "target": [ + 5.789155212234605, + -5.084337628940504, + -376.00677199394175 + ], + "yaw": -173.14595676247222, + "pitch": -10.329351655646626, + "focus": [ + 6.611, + 1.753, + -374.166 + ], + "center_z": -374.166, + "open_air_section": 2, + "route_distance_m": 14.436, + "requested_route_distance_m": 14.436, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-2-view-3.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-3.vfmesh", + "drawn_triangles": 311780, + "source_triangles": 392506, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.436, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 6.611, + 1.753, + -374.75162845924257 + ], + "target_actual_m": [ + 5.789155212234605, + -5.084337628940504, + -376.00677199394175 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-3-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-3-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-view-3-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-2-view-3-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-2-view-3.png", + "source_sha256": "ab61f0be9db7e90b8d55032dc5ff2fe0162d6ce76bef28237d4350869ae9a11d" + }, + { + "name": "passage-0-1-0-openair-2-4m-outside", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-2/4m-outside", + "camera": [ + 12.8193122098114, + 1.0067637736569703, + -375.50162845924257 + ], + "target": [ + 8.84789867402928, + 1.4841258247319933, + -375.50162845924257 + ], + "yaw": -83.14595676247222, + "pitch": 0.0, + "focus": [ + 6.611, + 1.753, + -374.166 + ], + "center_z": -374.166, + "open_air_section": 2, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.9928533839455302, + -0.11934051276875574, + 0.0 + ], + "camera_target_distance_m": 4.0, + "route_distance_m": 14.436, + "requested_route_distance_m": 14.436, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-2-4m-outside.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-4m-outside.vfmesh", + "drawn_triangles": 278629, + "source_triangles": 346431, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.436, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.000000000000009, + "closeup_target_surface_distance_m": 1.0954207812570795, + "closeup_predicted_target_offset_m": 1.0954207812570795, + "closeup_wall_normal_alignment": 0.5096506905478002, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 10.316430262687657, + 3.180776532410437, + -378.42551295829554 + ], + "target_actual_m": [ + 8.001025199890137, + 1.0, + -376.0 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-4m-outside-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-4m-outside-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-4m-outside-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-2-4m-outside-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-2-4m-outside.png", + "source_sha256": "a7f4136d1e74b84403ed0c8a666a259e4293d516ea4ed64c279bdc076a09da1b" + }, + { + "name": "passage-0-1-0-openair-2-4m-interior-wall", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-2/4m-interior-wall", + "camera": [ + 6.964882710490212, + -2.1271777965928074, + -376.1960784602411 + ], + "target": [ + 8.412449119604705, + 1.5364666576789914, + -375.50162845924257 + ], + "yaw": 21.55979422592298, + "pitch": 9.997924306647324, + "focus": [ + 6.611, + 1.753, + -374.166 + ], + "center_z": -374.166, + "open_air_section": 2, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.9928533839455302, + 0.11934051276875574, + -0.0 + ], + "camera_target_distance_m": 3.9999999999999987, + "route_distance_m": 14.436, + "requested_route_distance_m": 14.436, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-2-4m-interior-wall.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-4m-interior-wall.vfmesh", + "drawn_triangles": 350192, + "source_triangles": 445232, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.436, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.999999999999987, + "closeup_target_surface_distance_m": 0.8280897194612481, + "closeup_predicted_target_offset_m": 0.8280897194612481, + "closeup_wall_normal_alignment": 0.6621482949540899, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 5.041511761376583, + 1.1856761795197162, + -373.0783207113634 + ], + "target_actual_m": [ + 7.751120738544031, + 1.534688106544318, + -376.0 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-4m-interior-wall-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-4m-interior-wall-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-2-4m-interior-wall-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-2-4m-interior-wall-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-2-4m-interior-wall.png", + "source_sha256": "c662a24dc7de9347bcf8fb1e168bfe28c3e56257c75d97b086c7d25fbad72170" + }, + { + "name": "passage-0-1-0-openair-3-view-1", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-3/view-1", + "camera": [ + -29.016924787180837, + -17.208716685638674, + -598.05 + ], + "target": [ + -22.039, + -12.355, + -599.15 + ], + "yaw": 55.178232541175774, + "pitch": -7.373766361330367, + "focus": [ + -22.039, + -12.355, + -599.25 + ], + "center_z": -599.25, + "open_air_section": 3, + "route_distance_m": 1265.3110000000001, + "requested_route_distance_m": 1265.3110000000001, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-3-view-1.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-1.vfmesh", + "drawn_triangles": 210501, + "source_triangles": 262807, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3110000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -29.016924787180837, + -17.208716685638674, + -598.05 + ], + "target_actual_m": [ + -22.039, + -12.355, + -599.15 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-1-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-1-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-1-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-3-view-1-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-3-view-1.png", + "source_sha256": "36df0b620c8fdb8ef8520eb956f1181d7c32c4664d8b014adcb1d111fac4aec3" + }, + { + "name": "passage-0-1-0-openair-3-view-2", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-3/view-2", + "camera": [ + -16.292473704674606, + -8.357821553003445, + -595.25 + ], + "target": [ + -23.162403628923403, + -10.739943634747398, + -599.6099405834007 + ], + "yaw": -109.12379416410603, + "pitch": -30.947627602730336, + "focus": [ + -22.039, + -12.355, + -599.25 + ], + "center_z": -599.25, + "open_air_section": 3, + "route_distance_m": 1265.3110000000001, + "requested_route_distance_m": 1265.3110000000001, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-3-view-2.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-2.vfmesh", + "drawn_triangles": 189354, + "source_triangles": 238324, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3110000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -16.292473704674606, + -8.357821553003445, + -595.25 + ], + "target_actual_m": [ + -23.162403628923403, + -10.739943634747398, + -599.6099405834007 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-2-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-2-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-2-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-3-view-2-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-3-view-2.png", + "source_sha256": "1166a83fc7d2608c88706d77f08989af34e2f74924eb48526d199f2a7a4a0a17" + }, + { + "name": "passage-0-1-0-openair-3-view-3", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-3/view-3", + "camera": [ + -22.039, + -12.355, + -599.8356284592426 + ], + "target": [ + -25.970912701231907, + -6.70230272161589, + -601.0954205011448 + ], + "yaw": -34.821767458824226, + "pitch": -10.368029386382458, + "focus": [ + -22.039, + -12.355, + -599.25 + ], + "center_z": -599.25, + "open_air_section": 3, + "route_distance_m": 1265.3110000000001, + "requested_route_distance_m": 1265.3110000000001, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-3-view-3.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-3.vfmesh", + "drawn_triangles": 189354, + "source_triangles": 238324, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3110000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -22.039, + -12.355, + -599.8356284592426 + ], + "target_actual_m": [ + -25.970912701231907, + -6.70230272161589, + -601.0954205011448 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-3-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-3-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-view-3-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-3-view-3-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-3-view-3.png", + "source_sha256": "d96da8ee5d8ca7a8ff1051d9085640b14c1e10d4eb23ab6e0a549f9797bf13dc" + }, + { + "name": "passage-0-1-0-openair-3-4m-outside", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-3/4m-outside", + "camera": [ + -28.19599245927721, + -16.637691193210596, + -600.5856284592426 + ], + "target": [ + -24.9122631476627, + -14.353589223498279, + -600.5856284592426 + ], + "yaw": 55.17823254117577, + "pitch": 0.0, + "focus": [ + -22.039, + -12.355, + -599.25 + ], + "center_z": -599.25, + "open_air_section": 3, + "closeup_side": "outside", + "closeup_preferred_normal": [ + -0.8209323279036278, + -0.5710254924280793, + 0.0 + ], + "camera_target_distance_m": 4.0, + "route_distance_m": 1265.3110000000001, + "requested_route_distance_m": 1265.3110000000001, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-3-4m-outside.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-4m-outside.vfmesh", + "drawn_triangles": 156696, + "source_triangles": 196328, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3110000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.999999999999989, + "closeup_target_surface_distance_m": 0.19024061574976878, + "closeup_predicted_target_offset_m": 0.19024061574976878, + "closeup_wall_normal_alignment": 0.8867453188356844, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -27.424064445340754, + -16.658813034913997, + -602.2859722225862 + ], + "target_actual_m": [ + -24.785626505535024, + -14.240353099760217, + -600.5 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-4m-outside-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-4m-outside-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-4m-outside-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-3-4m-outside-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-3-4m-outside.png", + "source_sha256": "14579b76ea8a19d604cb6a47575e249b5d120cbdb7dd4bdc53f73c584ef24635" + }, + { + "name": "passage-0-1-0-openair-3-4m-interior-wall", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-3/4m-interior-wall", + "camera": [ + -26.04935611703069, + -10.503775697900165, + -601.28265040181 + ], + "target": [ + -24.694826671989663, + -14.202344393233052, + -600.5856284592426 + ], + "yaw": 159.88571784104565, + "pitch": 10.035334894495504, + "focus": [ + -22.039, + -12.355, + -599.25 + ], + "center_z": -599.25, + "open_air_section": 3, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + 0.8209323279036278, + 0.5710254924280793, + -0.0 + ], + "camera_target_distance_m": 4.0, + "route_distance_m": 1265.3110000000001, + "requested_route_distance_m": 1265.3110000000001, + "route_length_m": 2026.7012290413136, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-3-4m-interior-wall.png", + "scene": "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-4m-interior-wall.vfmesh", + "drawn_triangles": 156658, + "source_triangles": 198088, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3110000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.999999999999988, + "closeup_target_surface_distance_m": 0.03447160931397061, + "closeup_predicted_target_offset_m": 0.03447160931397061, + "closeup_wall_normal_alignment": 0.8640470577938766, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -22.16608291175724, + -11.835991531939918, + -598.6539123835992 + ], + "target_actual_m": [ + -24.716274302444134, + -14.222318752507483, + -600.6037755242438 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-4m-interior-wall-mesh.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-4m-interior-wall-render.log", + "Saved/Linux/l112/captures/after/passage-0-1-0-openair-3-4m-interior-wall-quality.log", + "Saved/Linux/l113/captures/before/passage-0-1-0-openair-3-4m-interior-wall-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-0-1-0-openair-3-4m-interior-wall.png", + "source_sha256": "4064918eb5e1bcfbfe87261f066409ccc9c9a30b7bef9e53a8de25daf9e20545" + }, + { + "name": "passage-1-2-0-upper-mouth", + "passage": "passage/1-2/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + 23.382701629372992, + -15.537907964013215, + -731.7810546875 + ], + "target": [ + 17.291932956389783, + -13.605656356271904, + -731.8810546875 + ], + "yaw": -72.39875236992931, + "pitch": -0.8965858034836333, + "focus": [ + 19.166015625, + -14.2001953125, + -730.5610546875 + ], + "center_z": -730.5610546875, + "variant": "before", + "capture": "captures/before/passage-1-2-0-upper-mouth.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-upper-mouth.vfmesh", + "drawn_triangles": 595932, + "source_triangles": 664560, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 23.382701629372992, + -15.537907964013215, + -731.7810546875 + ], + "target_actual_m": [ + 17.291932956389783, + -13.605656356271904, + -731.8810546875 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-upper-mouth-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-upper-mouth-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-upper-mouth-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-upper-mouth-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-upper-mouth.png", + "source_sha256": "9d7a25b15dec44d1adbbaee20428e706d206a043a3eac9cab83387af50e30aab" + }, + { + "name": "passage-1-2-0-lower-mouth", + "passage": "passage/1-2/0", + "kind": "mouth", + "station": "lower-mouth", + "camera": [ + 27.171071433601465, + -19.00546282978966, + -751.8773596007359 + ], + "target": [ + 17.480740717926007, + -13.188560045702177, + -753.05390625 + ], + "yaw": -59.02448758369992, + "pitch": -5.943042074548474, + "focus": [ + 19.166015625, + -14.2001953125, + -751.73390625 + ], + "center_z": -751.73390625, + "variant": "before", + "capture": "captures/before/passage-1-2-0-lower-mouth.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-lower-mouth.vfmesh", + "drawn_triangles": 546268, + "source_triangles": 592894, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 27.171071433601465, + -19.00546282978966, + -751.8773596007359 + ], + "target_actual_m": [ + 17.480740717926007, + -13.188560045702177, + -753.05390625 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-lower-mouth-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-lower-mouth-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-lower-mouth-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-lower-mouth-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-lower-mouth.png", + "source_sha256": "b888d91d8c393e44a5728445c50800249be844af4bd8f7ae25d35ace7722fa74" + }, + { + "name": "passage-1-2-0-station-25", + "passage": "passage/1-2/0", + "kind": "station", + "station": "25%", + "camera": [ + 14.113736360885516, + 6.28488001817556, + -736.9318566664899 + ], + "target": [ + 2.8375390569633967, + 14.668469005956942, + -739.318388075095 + ], + "yaw": -53.37006031730614, + "pitch": -9.639411679864782, + "focus": [ + 14.810173613706882, + 6.563223605999366, + -735.76185666649 + ], + "center_z": -735.76185666649, + "route_distance_m": 28.742403046133614, + "route_length_m": 114.96961218453445, + "requested_route_distance_m": 28.742403046133614, + "variant": "before", + "capture": "captures/before/passage-1-2-0-station-25.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-station-25.vfmesh", + "drawn_triangles": 655074, + "source_triangles": 754544, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 28.742403046133614, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 14.113736360885516, + 6.28488001817556, + -736.9318566664899 + ], + "target_actual_m": [ + 2.8375390569633967, + 14.668469005956942, + -739.318388075095 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-station-25-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-station-25-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-station-25-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-station-25-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-station-25.png", + "source_sha256": "5c92ab07e15225f800764f0eaf9f5c83ef7d190dc3da251533f20e142a184e75" + }, + { + "name": "passage-1-2-0-station-50", + "passage": "passage/1-2/0", + "kind": "station", + "station": "50%", + "camera": [ + -8.167639189328659, + 12.234449393806269, + -742.2421769171431 + ], + "target": [ + -12.719097109722199, + -1.058412445588001, + -744.6306758761227 + ], + "yaw": -161.09886549116882, + "pitch": -9.647718818107231, + "focus": [ + -8.641894120979037, + 12.815467689391955, + -741.0721769171431 + ], + "center_z": -741.0721769171431, + "route_distance_m": 57.48480609226723, + "route_length_m": 114.96961218453445, + "requested_route_distance_m": 57.48480609226723, + "variant": "before", + "capture": "captures/before/passage-1-2-0-station-50.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-station-50.vfmesh", + "drawn_triangles": 604662, + "source_triangles": 685224, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 57.48480609226723, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -8.167639189328659, + 12.234449393806269, + -742.2421769171431 + ], + "target_actual_m": [ + -12.719097109722199, + -1.058412445588001, + -744.6306758761227 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-station-50-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-station-50-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-station-50-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-station-50-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-station-50.png", + "source_sha256": "e5c000134f71b9f2b4eae8ecfe4d9a979dbeb8aaca16eccdf452219caa8ebf0e" + }, + { + "name": "passage-1-2-0-station-75", + "passage": "passage/1-2/0", + "kind": "station", + "station": "75%", + "camera": [ + -6.988640302303379, + -10.765776249210223, + -747.5570701728814 + ], + "target": [ + 7.082949158733629, + -11.036833196961979, + -749.9491196202687 + ], + "yaw": 91.10353551175237, + "pitch": -9.645811664959123, + "focus": [ + -7.4007113577862444, + -11.392432012156066, + -746.3870701728814 + ], + "center_z": -746.3870701728814, + "route_distance_m": 86.22720913840084, + "route_length_m": 114.96961218453445, + "requested_route_distance_m": 86.22720913840084, + "variant": "before", + "capture": "captures/before/passage-1-2-0-station-75.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-station-75.vfmesh", + "drawn_triangles": 612135, + "source_triangles": 691923, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 86.22720913840084, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -6.988640302303379, + -10.765776249210223, + -747.5570701728814 + ], + "target_actual_m": [ + 7.082949158733629, + -11.036833196961979, + -749.9491196202687 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-station-75-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-station-75-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-station-75-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-station-75-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-station-75.png", + "source_sha256": "1fec685863efd0eff15a964689690c1b9082815bdc91197692ab25624cd16c01" + }, + { + "name": "passage-1-2-0-openair-1-view-1", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-1/view-1", + "camera": [ + -4.012736377201166, + -3.9264102860018895, + -744.679 + ], + "target": [ + -9.52, + -9.729, + -745.779 + ], + "yaw": -136.49578370469135, + "pitch": -7.829076510059767, + "focus": [ + -9.52, + -9.729, + -745.879 + ], + "center_z": -745.879, + "open_air_section": 1, + "route_distance_m": 83.48150000000001, + "requested_route_distance_m": 83.48150000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-1-view-1.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-1.vfmesh", + "drawn_triangles": 623352, + "source_triangles": 711724, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 83.48150000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -4.012736377201166, + -3.9264102860018895, + -744.679 + ], + "target_actual_m": [ + -9.52, + -9.729, + -745.779 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-1-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-1-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-1-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-1-view-1-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-1-view-1.png", + "source_sha256": "fdd558299b1b2102c7dae6b6fd169080781f6bf7aa3d07f128f6ea82ccc8000b" + }, + { + "name": "passage-1-2-0-openair-1-view-2", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-1/view-2", + "camera": [ + -13.994651693524052, + -14.443604142623464, + -741.879 + ], + "target": [ + -8.094413332043812, + -11.082030626763467, + -746.2491496659267 + ], + "yaw": 60.32831225573483, + "pitch": -32.76344960660182, + "focus": [ + -9.52, + -9.729, + -745.879 + ], + "center_z": -745.879, + "open_air_section": 1, + "route_distance_m": 83.48150000000001, + "requested_route_distance_m": 83.48150000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-1-view-2.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-2.vfmesh", + "drawn_triangles": 576164, + "source_triangles": 644692, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 83.48150000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -13.994651693524052, + -14.443604142623464, + -741.879 + ], + "target_actual_m": [ + -8.094413332043812, + -11.082030626763467, + -746.2491496659267 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-2-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-2-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-2-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-1-view-2-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-1-view-2.png", + "source_sha256": "1e57e6948e635f3b32f5d3d802704d03e37a38af770b817e750575a3d206389b" + }, + { + "name": "passage-1-2-0-openair-1-view-3", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-1/view-3", + "camera": [ + -9.52, + -9.729, + -747.399 + ], + "target": [ + -4.5304466621533415, + -14.464607193672137, + -748.6945238307434 + ], + "yaw": 133.50421629530865, + "pitch": -10.665495352457787, + "focus": [ + -9.52, + -9.729, + -745.879 + ], + "center_z": -745.879, + "open_air_section": 1, + "route_distance_m": 83.48150000000001, + "requested_route_distance_m": 83.48150000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-1-view-3.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-3.vfmesh", + "drawn_triangles": 570605, + "source_triangles": 638189, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 83.48150000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -9.52, + -9.729, + -747.399 + ], + "target_actual_m": [ + -4.5304466621533415, + -14.464607193672137, + -748.6945238307434 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-3-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-3-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-view-3-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-1-view-3-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-1-view-3.png", + "source_sha256": "6dbd8eae6338d6dea67c2043ee718232672611c6bce231bf60531e026724f7be" + }, + { + "name": "passage-1-2-0-openair-1-4m-outside", + "passage": "passage/1-2/0", + "kind": "open-air-close", + "station": "section-1/4m-outside", + "camera": [ + -4.7011443300510205, + -4.651734000251653, + -748.149 + ], + "target": [ + -7.454776141450437, + -7.553028857250708, + -748.149 + ], + "yaw": -136.49578370469135, + "pitch": 0.0, + "focus": [ + -9.52, + -9.729, + -745.879 + ], + "center_z": -745.879, + "open_air_section": 1, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.6884079528498542, + 0.7253237142497637, + 0.0 + ], + "camera_target_distance_m": 3.9999999999999996, + "route_distance_m": 83.48150000000001, + "requested_route_distance_m": 83.48150000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-1-4m-outside.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-4m-outside.vfmesh", + "drawn_triangles": 623352, + "source_triangles": 711724, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 83.48150000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.000000000000037, + "closeup_target_surface_distance_m": 0.5979370452655519, + "closeup_predicted_target_offset_m": 0.5979370452655519, + "closeup_wall_normal_alignment": 0.42190567041017063, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -5.2402003673605835, + -7.419699358529216, + -744.2592769877698 + ], + "target_actual_m": [ + -7.5, + -7.601630046981916, + -747.5547597816745 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-4m-outside-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-4m-outside-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-4m-outside-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-1-4m-outside-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-1-4m-outside.png", + "source_sha256": "3672a5d7e1429d61dd6ca4f9e47eb7b426bf5a1d2bd89928ce2d19e631aadb98" + }, + { + "name": "passage-1-2-0-openair-1-4m-interior-wall", + "passage": "passage/1-2/0", + "kind": "open-air-close", + "station": "section-1/4m-interior-wall", + "camera": [ + -6.097526120437678, + -11.651804466912369, + -748.8657917458692 + ], + "target": [ + -8.169754879372643, + -8.306348210480857, + -748.149 + ], + "yaw": -31.774732032092412, + "pitch": 10.323045367792538, + "focus": [ + -9.52, + -9.729, + -745.879 + ], + "center_z": -745.879, + "open_air_section": 1, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.6884079528498542, + -0.7253237142497637, + -0.0 + ], + "camera_target_distance_m": 4.000000000000005, + "route_distance_m": 83.48150000000001, + "requested_route_distance_m": 83.48150000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-1-4m-interior-wall.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-4m-interior-wall.vfmesh", + "drawn_triangles": 612135, + "source_triangles": 691923, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 83.48150000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.000000000000001, + "closeup_target_surface_distance_m": 0.6529446089467095, + "closeup_predicted_target_offset_m": 0.6529446089467095, + "closeup_wall_normal_alignment": 0.781464055310911, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -8.531084729501915, + -12.940973897704662, + -748.3218199263141 + ], + "target_actual_m": [ + -8.186284222607911, + -8.958624012538072, + -748.1734892060998 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-4m-interior-wall-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-4m-interior-wall-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-1-4m-interior-wall-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-1-4m-interior-wall-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-1-4m-interior-wall.png", + "source_sha256": "1dca4111776fe6c77b46efc8752eb183ff61022888bf4565a1e6dc200cf4e8cc" + }, + { + "name": "passage-1-2-0-openair-2-view-1", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-2/view-1", + "camera": [ + 6.37266079290948, + -3.635825668681128, + -748.555 + ], + "target": [ + 9.488, + -11.155, + -749.655 + ], + "yaw": 157.49482804323503, + "pitch": -7.696985964433935, + "focus": [ + 9.488, + -11.155, + -749.755 + ], + "center_z": -749.755, + "open_air_section": 2, + "route_distance_m": 104.40950000000001, + "requested_route_distance_m": 104.40950000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-2-view-1.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-1.vfmesh", + "drawn_triangles": 628316, + "source_triangles": 719702, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.40950000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 6.37266079290948, + -3.635825668681128, + -748.555 + ], + "target_actual_m": [ + 9.488, + -11.155, + -749.655 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-1-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-1-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-1-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-2-view-1-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-2-view-1.png", + "source_sha256": "ffa18a5c8863af55a3e0b2d47dfed477deef6e002345b70d9fa613e31a1048aa" + }, + { + "name": "passage-1-2-0-openair-2-view-2", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-2/view-2", + "camera": [ + 12.029188966196578, + -17.288406854113035, + -745.755 + ], + "target": [ + 11.303971870631361, + -10.402607766721497, + -750.1239879298538 + ], + "yaw": -6.01226603270804, + "pitch": -32.25202716463738, + "focus": [ + 9.488, + -11.155, + -749.755 + ], + "center_z": -749.755, + "open_air_section": 2, + "route_distance_m": 104.40950000000001, + "requested_route_distance_m": 104.40950000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-2-view-2.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-2.vfmesh", + "drawn_triangles": 585440, + "source_triangles": 649826, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.40950000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 12.029188966196578, + -17.288406854113035, + -745.755 + ], + "target_actual_m": [ + 11.303971870631361, + -10.402607766721497, + -750.1239879298538 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-2-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-2-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-2-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-2-view-2-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-2-view-2.png", + "source_sha256": "45e264923bd744472129ed4d4af4599abd78c87ec4ff6b198b80bd9372fec748" + }, + { + "name": "passage-1-2-0-openair-2-view-3", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-2/view-3", + "camera": [ + 9.488, + -11.155, + -751.275 + ], + "target": [ + 15.843901547209768, + -8.52162718352524, + -752.5664577544884 + ], + "yaw": 67.49482804323503, + "pitch": -10.63163088784527, + "focus": [ + 9.488, + -11.155, + -749.755 + ], + "center_z": -749.755, + "open_air_section": 2, + "route_distance_m": 104.40950000000001, + "requested_route_distance_m": 104.40950000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-2-view-3.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-3.vfmesh", + "drawn_triangles": 613722, + "source_triangles": 693804, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.40950000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 9.488, + -11.155, + -751.275 + ], + "target_actual_m": [ + 15.843901547209768, + -8.52162718352524, + -752.5664577544884 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-3-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-3-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-view-3-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-2-view-3-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-2-view-3.png", + "source_sha256": "8822364bec7709ed4a2f4d7ad9391fddb7e4d4fd5f2901639765e0ef6bbbbbd3" + }, + { + "name": "passage-1-2-0-openair-2-4m-outside", + "passage": "passage/1-2/0", + "kind": "open-air-close", + "station": "section-2/4m-outside", + "camera": [ + 6.755427620172105, + -4.559670653485019, + -752.025 + ], + "target": [ + 8.286494929222613, + -8.255050592700584, + -752.025 + ], + "yaw": 157.49482804323503, + "pitch": 0.0, + "focus": [ + 9.488, + -11.155, + -749.755 + ], + "center_z": -749.755, + "open_air_section": 2, + "closeup_side": "outside", + "closeup_preferred_normal": [ + -0.3827668272626269, + 0.9238449848038914, + 0.0 + ], + "camera_target_distance_m": 4.0, + "route_distance_m": 104.40950000000001, + "requested_route_distance_m": 104.40950000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-2-4m-outside.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-4m-outside.vfmesh", + "drawn_triangles": 585802, + "source_triangles": 657076, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.40950000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.0, + "closeup_target_surface_distance_m": 0.5569723033142947, + "closeup_predicted_target_offset_m": 0.5569723033142947, + "closeup_wall_normal_alignment": 0.8300132989203148, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 5.456826350119467, + -6.285898707784279, + -752.1262448423768 + ], + "target_actual_m": [ + 8.786704307765559, + -8.5, + -752.027917557296 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-4m-outside-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-4m-outside-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-4m-outside-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-2-4m-outside-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-2-4m-outside.png", + "source_sha256": "ac635381a0fad1e45ebe4ad2ba840ee7baa36386807843a260d747df8f555d11" + }, + { + "name": "passage-1-2-0-openair-2-4m-interior-wall", + "passage": "passage/1-2/0", + "kind": "open-air-close", + "station": "section-2/4m-interior-wall", + "camera": [ + 12.557525361540653, + -8.61890578995272, + -752.7395420536377 + ], + "target": [ + 8.658144128209829, + -9.15206209980055, + -752.025 + ], + "yaw": -97.78568510593111, + "pitch": 10.290292405231583, + "focus": [ + 9.488, + -11.155, + -749.755 + ], + "center_z": -749.755, + "open_air_section": 2, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + 0.3827668272626269, + -0.9238449848038914, + -0.0 + ], + "camera_target_distance_m": 4.000000000000001, + "route_distance_m": 104.40950000000001, + "requested_route_distance_m": 104.40950000000001, + "route_length_m": 114.96961218453445, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-2-4m-interior-wall.png", + "scene": "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-4m-interior-wall.vfmesh", + "drawn_triangles": 574472, + "source_triangles": 635712, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.40950000000001, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.000000000000001, + "closeup_target_surface_distance_m": 0.3789200867234511, + "closeup_predicted_target_offset_m": 0.3789200867234511, + "closeup_wall_normal_alignment": 0.9970173084578355, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 10.235234629238544, + -12.420762087601563, + -752.017966381381 + ], + "target_actual_m": [ + 8.423532662676926, + -8.854568760433747, + -752.0190329743256 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-4m-interior-wall-mesh.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-4m-interior-wall-render.log", + "Saved/Linux/l112/captures/after/passage-1-2-0-openair-2-4m-interior-wall-quality.log", + "Saved/Linux/l113/captures/before/passage-1-2-0-openair-2-4m-interior-wall-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-1-2-0-openair-2-4m-interior-wall.png", + "source_sha256": "20a0332cf4120a07631172161a6f995386b7077c40cfd227f969a7c3500e4724" + }, + { + "name": "passage-2-3-0-upper-mouth", + "passage": "passage/2-3/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + -24.46109203696401, + -5.5818896409784315, + -811.975390625 + ], + "target": [ + -18.107570205793774, + -4.840123701231809, + -812.075390625 + ], + "yaw": 83.34093327385727, + "pitch": -0.8956388887564393, + "focus": [ + -20.0625, + -5.068359375, + -810.755390625 + ], + "center_z": -810.755390625, + "variant": "before", + "capture": "captures/before/passage-2-3-0-upper-mouth.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-upper-mouth.vfmesh", + "drawn_triangles": 59568, + "source_triangles": 71508, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -24.46109203696401, + -5.5818896409784315, + -811.975390625 + ], + "target_actual_m": [ + -18.107570205793774, + -4.840123701231809, + -812.075390625 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-upper-mouth-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-upper-mouth-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-upper-mouth-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-upper-mouth-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-upper-mouth.png", + "source_sha256": "137f34e7137b7c77d5bf013e187e27c32927641d1df4f9b8e6df9c72854ab83b" + }, + { + "name": "passage-2-3-0-lower-mouth", + "passage": "passage/2-3/0", + "kind": "mouth", + "station": "lower-mouth", + "camera": [ + -28.636475339787903, + -1.3354368899879738, + -898.8144448742513 + ], + "target": [ + -18.25745256004465, + -5.854237792897269, + -900.0333984375 + ], + "yaw": 113.5272620393567, + "pitch": -6.145978083088789, + "focus": [ + -20.0625, + -5.068359375, + -898.7133984375 + ], + "center_z": -898.7133984375, + "variant": "before", + "capture": "captures/before/passage-2-3-0-lower-mouth.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-lower-mouth.vfmesh", + "drawn_triangles": 294004, + "source_triangles": 314734, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -28.636475339787903, + -1.3354368899879738, + -898.8144448742513 + ], + "target_actual_m": [ + -18.25745256004465, + -5.854237792897269, + -900.0333984375 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-lower-mouth-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-lower-mouth-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-lower-mouth-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-lower-mouth-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-lower-mouth.png", + "source_sha256": "d3b5b02bea541e0454cbebf351765cfd8c3871cbac5bada269cf071e3c63e19c" + }, + { + "name": "passage-2-3-0-station-25", + "passage": "passage/2-3/0", + "kind": "station", + "station": "25%", + "camera": [ + 3.019701774592388, + -13.591453110374651, + -833.8488531811187 + ], + "target": [ + 14.00155446639769, + -4.75985656647419, + -836.142478466213 + ], + "yaw": 51.19378873289192, + "pitch": -9.244130451366324, + "focus": [ + 3.0967290150193443, + -14.33748716069153, + -832.6788531811187 + ], + "center_z": -832.6788531811187, + "route_distance_m": 123.53373286582855, + "route_length_m": 494.1349314633142, + "requested_route_distance_m": 123.53373286582855, + "variant": "before", + "capture": "captures/before/passage-2-3-0-station-25.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-station-25.vfmesh", + "drawn_triangles": 55514, + "source_triangles": 66412, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 123.53373286582855, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 3.019701774592388, + -13.591453110374651, + -833.8488531811187 + ], + "target_actual_m": [ + 14.00155446639769, + -4.75985656647419, + -836.142478466213 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-station-25-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-station-25-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-station-25-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-station-25-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-station-25.png", + "source_sha256": "6dc7352c58848cb48410097af30e682ae077ee02e05c4e610b54fff470347bf7" + }, + { + "name": "passage-2-3-0-station-50", + "passage": "passage/2-3/0", + "kind": "station", + "station": "50%", + "camera": [ + 15.037366176324477, + 4.106782632885063, + -855.8546237305741 + ], + "target": [ + 4.302090316791295, + 13.21257795312749, + -858.1474627779044 + ], + "yaw": -49.69497333173356, + "pitch": -9.251013429114066, + "focus": [ + 15.752039052912956, + 4.334252805586342, + -854.6846237305741 + ], + "center_z": -854.6846237305741, + "route_distance_m": 247.0674657316571, + "route_length_m": 494.1349314633142, + "requested_route_distance_m": 247.0674657316571, + "variant": "before", + "capture": "captures/before/passage-2-3-0-station-50.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-station-50.vfmesh", + "drawn_triangles": 458230, + "source_triangles": 479098, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 247.0674657316571, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 15.037366176324477, + 4.106782632885063, + -855.8546237305741 + ], + "target_actual_m": [ + 4.302090316791295, + 13.21257795312749, + -858.1474627779044 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-station-50-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-station-50-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-station-50-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-station-50-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-station-50.png", + "source_sha256": "d19a8e11ca25401d1bdac86951e92a960ab73fa1c99c520c5e9f90bbcacabde4" + }, + { + "name": "passage-2-3-0-station-75", + "passage": "passage/2-3/0", + "kind": "station", + "station": "75%", + "camera": [ + -5.729592517417305, + 11.518390950074156, + -877.8627102922013 + ], + "target": [ + -12.468742929423927, + -0.8048224106496764, + -880.1601105631271 + ], + "yaw": -151.3272360910958, + "pitch": -9.289478775200905, + "focus": [ + -6.104061615549714, + 12.168216230087099, + -876.6927102922014 + ], + "center_z": -876.6927102922014, + "route_distance_m": 370.6011985974857, + "route_length_m": 494.1349314633142, + "requested_route_distance_m": 370.6011985974857, + "variant": "before", + "capture": "captures/before/passage-2-3-0-station-75.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-station-75.vfmesh", + "drawn_triangles": 475838, + "source_triangles": 506104, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 370.6011985974857, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -5.729592517417305, + 11.518390950074156, + -877.8627102922013 + ], + "target_actual_m": [ + -12.468742929423927, + -0.8048224106496764, + -880.1601105631271 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-station-75-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-station-75-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-station-75-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-station-75-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-station-75.png", + "source_sha256": "64c817d4fcfa4fda09f6b81532da413610fd843a9c40e7da71268b58a1a0d79d" + }, + { + "name": "passage-2-3-0-openair-1-view-1", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-1/view-1", + "camera": [ + -2.9979042861664693, + -4.712290740348933, + -812.409 + ], + "target": [ + -7.267, + -11.478, + -813.509 + ], + "yaw": -147.74847917454895, + "pitch": -7.829076510059765, + "focus": [ + -7.267, + -11.478, + -813.609 + ], + "center_z": -813.609, + "open_air_section": 1, + "route_distance_m": 16.506999999999998, + "requested_route_distance_m": 16.506999999999998, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-1-view-1.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-1.vfmesh", + "drawn_triangles": 104612, + "source_triangles": 129352, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 16.506999999999998, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -2.9979042861664693, + -4.712290740348933, + -812.409 + ], + "target_actual_m": [ + -7.267, + -11.478, + -813.509 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-1-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-1-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-1-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-1-view-1-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-1-view-1.png", + "source_sha256": "fa111e521ff09b52095798cb3a3597f206a01f3f133fdd3c6d986556d2d32787" + }, + { + "name": "passage-2-3-0-openair-1-view-2", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-1/view-2", + "camera": [ + -10.735640267489744, + -16.97513877346649, + -809.609 + ], + "target": [ + -5.6026931633198105, + -12.528161174579008, + -813.9657131351471 + ], + "yaw": 49.09566798491317, + "pitch": -32.68045244303501, + "focus": [ + -7.267, + -11.478, + -813.609 + ], + "center_z": -813.609, + "open_air_section": 1, + "route_distance_m": 16.506999999999998, + "requested_route_distance_m": 16.506999999999998, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-1-view-2.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-2.vfmesh", + "drawn_triangles": 76426, + "source_triangles": 93942, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 16.506999999999998, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -10.735640267489744, + -16.97513877346649, + -809.609 + ], + "target_actual_m": [ + -5.6026931633198105, + -12.528161174579008, + -813.9657131351471 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-2-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-2-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-2-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-1-view-2-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-1-view-2.png", + "source_sha256": "33da1fe5fa5744bb9a1f530d0407797c5e9cce6627aa1ca2e20c2594b59244b6" + }, + { + "name": "passage-2-3-0-openair-1-view-3", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-1/view-3", + "camera": [ + -7.267, + -11.478, + -815.129 + ], + "target": [ + -1.441926071619335, + -15.153564111026531, + -816.3774959730146 + ], + "yaw": 122.25152082545104, + "pitch": -10.27404912928437, + "focus": [ + -7.267, + -11.478, + -813.609 + ], + "center_z": -813.609, + "open_air_section": 1, + "route_distance_m": 16.506999999999998, + "requested_route_distance_m": 16.506999999999998, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-1-view-3.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-3.vfmesh", + "drawn_triangles": 94962, + "source_triangles": 118054, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 16.506999999999998, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -7.267, + -11.478, + -815.129 + ], + "target_actual_m": [ + -1.441926071619335, + -15.153564111026531, + -816.3774959730146 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-3-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-3-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-view-3-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-1-view-3-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-1-view-3.png", + "source_sha256": "bca84ec94352c8a6dc9c0b81a4f99c5a53947d0421d6e68a803e14911b6331c7" + }, + { + "name": "passage-2-3-0-openair-1-4m-outside", + "passage": "passage/2-3/0", + "kind": "open-air-close", + "station": "section-1/4m-outside", + "camera": [ + -3.5315412503956605, + -5.558004397805316, + -815.879 + ], + "target": [ + -5.666089107312426, + -8.94085902763085, + -815.879 + ], + "yaw": -147.74847917454895, + "pitch": 0.0, + "focus": [ + -7.267, + -11.478, + -813.609 + ], + "center_z": -813.609, + "open_air_section": 1, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.5336369642291914, + 0.8457136574563834, + 0.0 + ], + "camera_target_distance_m": 4.000000000000001, + "route_distance_m": 16.506999999999998, + "requested_route_distance_m": 16.506999999999998, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-1-4m-outside.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-4m-outside.vfmesh", + "drawn_triangles": 104612, + "source_triangles": 129352, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 16.506999999999998, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.999999999999996, + "closeup_target_surface_distance_m": 0.29683911895713316, + "closeup_predicted_target_offset_m": 0.29683911895713316, + "closeup_wall_normal_alignment": 0.67494340532841, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -3.8308683215077686, + -7.14211062127575, + -813.2125534154507 + ], + "target_actual_m": [ + -5.8142006488753735, + -9.08294977482132, + -816.0934449891276 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-4m-outside-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-4m-outside-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-4m-outside-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-1-4m-outside-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-1-4m-outside.png", + "source_sha256": "47aedc9199b4b218be36536e2e6371fb82038f5f9931ae99286f3d36ecd982de" + }, + { + "name": "passage-2-3-0-openair-1-4m-interior-wall", + "passage": "passage/2-3/0", + "kind": "open-air-close", + "station": "section-1/4m-interior-wall", + "camera": [ + -3.5310437260816867, + -12.698557095195458, + -816.5697720158989 + ], + "target": [ + -6.220323092573257, + -9.819215067750013, + -815.879 + ], + "yaw": -43.04519612653523, + "pitch": 9.944433062490045, + "focus": [ + -7.267, + -11.478, + -813.609 + ], + "center_z": -813.609, + "open_air_section": 1, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.5336369642291914, + -0.8457136574563834, + -0.0 + ], + "camera_target_distance_m": 3.9999999999999996, + "route_distance_m": 16.506999999999998, + "requested_route_distance_m": 16.506999999999998, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-1-4m-interior-wall.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-4m-interior-wall.vfmesh", + "drawn_triangles": 94962, + "source_triangles": 118054, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 16.506999999999998, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.9999999999999925, + "closeup_target_surface_distance_m": 0.41884655036552404, + "closeup_predicted_target_offset_m": 0.41884655036552404, + "closeup_wall_normal_alignment": 0.7463542809089274, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -8.06908339833993, + -11.810743463701222, + -818.2117291711875 + ], + "target_actual_m": [ + -6.01271131624994, + -9.578237281759943, + -815.6064940555799 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-4m-interior-wall-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-4m-interior-wall-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-1-4m-interior-wall-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-1-4m-interior-wall-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-1-4m-interior-wall.png", + "source_sha256": "9911a7e628325e7ab7c1cf5c55a08b3bf8e5b0966f18b6e08adf758f93115bbb" + }, + { + "name": "passage-2-3-0-openair-2-view-1", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-2/view-1", + "camera": [ + -3.8431494955986567, + 3.9485527351653085, + -876.2779999999999 + ], + "target": [ + -9.548, + 9.557, + -877.3779999999999 + ], + "yaw": -45.48821883657469, + "pitch": -7.829076510059767, + "focus": [ + -9.548, + 9.557, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "route_distance_m": 375.00800000000004, + "requested_route_distance_m": 375.00800000000004, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-2-view-1.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-1.vfmesh", + "drawn_triangles": 476214, + "source_triangles": 507486, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 375.00800000000004, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -3.8431494955986567, + 3.9485527351653085, + -876.2779999999999 + ], + "target_actual_m": [ + -9.548, + 9.557, + -877.3779999999999 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-1-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-1-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-1-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-2-view-1-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-2-view-1.png", + "source_sha256": "08b7b455da21dfd8549eedc0c4bc2d217d19709b6e8a6e298a828b00279fa1ef" + }, + { + "name": "passage-2-3-0-openair-2-view-2", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-2/view-2", + "camera": [ + -14.183191034826091, + 14.113863402678188, + -873.478 + ], + "target": [ + -10.927615416535147, + 8.153670462741282, + -877.8348298086144 + ], + "yaw": 151.35575752769614, + "pitch": -32.6811732818988, + "focus": [ + -9.548, + 9.557, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "route_distance_m": 375.00800000000004, + "requested_route_distance_m": 375.00800000000004, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-2-view-2.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-2.vfmesh", + "drawn_triangles": 479366, + "source_triangles": 505714, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 375.00800000000004, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -14.183191034826091, + 14.113863402678188, + -873.478 + ], + "target_actual_m": [ + -10.927615416535147, + 8.153670462741282, + -877.8348298086144 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-2-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-2-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-2-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-2-view-2-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-2-view-2.png", + "source_sha256": "22936fbc200b0e30fe834b97c62135b12b9affa4d1f2a3667e527379b10e23a0" + }, + { + "name": "passage-2-3-0-openair-2-view-3", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-2/view-3", + "camera": [ + -9.548, + 9.557, + -878.9979999999999 + ], + "target": [ + -14.376653957873012, + 4.645346619594482, + -880.2469043301503 + ], + "yaw": -135.4882188365747, + "pitch": -10.277446062572244, + "focus": [ + -9.548, + 9.557, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "route_distance_m": 375.00800000000004, + "requested_route_distance_m": 375.00800000000004, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-2-view-3.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-3.vfmesh", + "drawn_triangles": 479366, + "source_triangles": 505714, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 375.00800000000004, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -9.548, + 9.557, + -878.9979999999999 + ], + "target_actual_m": [ + -14.376653957873012, + 4.645346619594482, + -880.2469043301503 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-3-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-3-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-view-3-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-2-view-3-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-2-view-3.png", + "source_sha256": "d36e2494bf1082ac878af2d811026ab60ed985f037af90439b22da4f27ac3f70" + }, + { + "name": "passage-2-3-0-openair-2-4m-outside", + "passage": "passage/2-3/0", + "kind": "open-air-close", + "station": "section-2/4m-outside", + "camera": [ + -4.5562558086488245, + 4.649608643269644, + -879.7479999999999 + ], + "target": [ + -7.408681060849496, + 7.453832275686991, + -879.7479999999999 + ], + "yaw": -45.48821883657468, + "pitch": 0.0, + "focus": [ + -9.548, + 9.557, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.7131063130501679, + -0.7010559081043365, + 0.0 + ], + "camera_target_distance_m": 4.0, + "route_distance_m": 375.00800000000004, + "requested_route_distance_m": 375.00800000000004, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-2-4m-outside.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-4m-outside.vfmesh", + "drawn_triangles": 476214, + "source_triangles": 507486, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 375.00800000000004, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.000000000000001, + "closeup_target_surface_distance_m": 1.7270706511220406, + "closeup_predicted_target_offset_m": 1.7270706511220406, + "closeup_wall_normal_alignment": 0.6707823544913467, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -7.471987180266219, + 5.182171434598743, + -879.6783661883575 + ], + "target_actual_m": [ + -7.306491283931798, + 9.177780848974395, + -879.7662098907449 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-4m-outside-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-4m-outside-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-4m-outside-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-2-4m-outside-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-2-4m-outside.png", + "source_sha256": "0c21eed2003099629a6394420a11a93d2e300dbeb9374d830f9afcbc74a6c463" + }, + { + "name": "passage-2-3-0-openair-2-4m-interior-wall", + "passage": "passage/2-3/0", + "kind": "open-air-close", + "station": "section-2/4m-interior-wall", + "camera": [ + -11.53403153171888, + 6.16546709214774, + -880.4389979530969 + ], + "target": [ + -8.149311452462896, + 8.181947147565394, + -879.7479999999999 + ], + "yaw": 59.21521540250373, + "pitch": 9.947718755981942, + "focus": [ + -9.548, + 9.557, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.7131063130501679, + 0.7010559081043365, + -0.0 + ], + "camera_target_distance_m": 3.9999999999999964, + "route_distance_m": 375.00800000000004, + "requested_route_distance_m": 375.00800000000004, + "route_length_m": 494.1349314633142, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-2-4m-interior-wall.png", + "scene": "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-4m-interior-wall.vfmesh", + "drawn_triangles": 486990, + "source_triangles": 515888, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 375.00800000000004, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.9999999999999996, + "closeup_target_surface_distance_m": 1.0276132856323636, + "closeup_predicted_target_offset_m": 1.0276132856323636, + "closeup_wall_normal_alignment": 0.7200130865712391, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -8.257090453232413, + 13.208090455668112, + -879.7612152592583 + ], + "target_actual_m": [ + -8.149311452462896, + 9.209558486938477, + -879.75 + ], + "logs": [ + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-4m-interior-wall-mesh.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-4m-interior-wall-render.log", + "Saved/Linux/l112/captures/after/passage-2-3-0-openair-2-4m-interior-wall-quality.log", + "Saved/Linux/l113/captures/before/passage-2-3-0-openair-2-4m-interior-wall-quality.log" + ], + "source_capture": "Standalone/Research/WorldAssemblerM3/Linux112/captures/after/passage-2-3-0-openair-2-4m-interior-wall.png", + "source_sha256": "63962ed7fd2758a78ce907f9ed89b55ee0b986be260ba4f11f8d1f9b9ca7d04e" + }, + { + "name": "passage-0-1-0-upper-mouth", + "passage": "passage/0-1/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + 8.324777182667596, + 20.450707805615995, + -371.842578125 + ], + "target": [ + 7.855654585481068, + 14.021907641948447, + -371.942578125 + ], + "yaw": -175.82640818958697, + "pitch": -0.8888012261216656, + "focus": [ + 8.0, + 16.0, + -372.1224609375 + ], + "center_z": -372.1224609375, + "variant": "after", + "capture": "captures/after/passage-0-1-0-upper-mouth.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-upper-mouth.vfmesh", + "drawn_triangles": 245708, + "source_triangles": 301620, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 8.324777182667596, + 20.450707805615995, + -371.842578125 + ], + "target_actual_m": [ + 7.855654585481068, + 14.021907641948447, + -371.942578125 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-upper-mouth-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-upper-mouth-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-upper-mouth-quality.log" + ] + }, + { + "name": "passage-0-1-0-lower-mouth", + "passage": "passage/0-1/0", + "kind": "mouth", + "station": "lower-mouth", + "camera": [ + 32.68834531966199, + 9.553722879000034, + -735.4805084803569 + ], + "target": [ + 24.394507482044844, + 1.8614284070526241, + -736.6798828125 + ], + "yaw": -132.84502956130385, + "pitch": -6.05232406255234, + "focus": [ + 25.8369140625, + 3.19921875, + -736.2672500132622 + ], + "center_z": -736.2672500132622, + "variant": "after", + "capture": "captures/after/passage-0-1-0-lower-mouth.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-lower-mouth.vfmesh", + "drawn_triangles": 551698, + "source_triangles": 602158, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 32.68834531966199, + 9.553722879000034, + -735.4805084803569 + ], + "target_actual_m": [ + 24.394507482044844, + 1.8614284070526241, + -736.6798828125 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-lower-mouth-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-lower-mouth-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-lower-mouth-quality.log" + ] + }, + { + "name": "passage-0-1-0-station-25", + "passage": "passage/0-1/0", + "kind": "station", + "station": "25%", + "camera": [ + -14.78808365101151, + -19.14058791856569, + -462.9516351755408 + ], + "target": [ + -22.365365057702377, + -8.32444898094667, + -465.2722094791618 + ], + "yaw": -35.01328952398061, + "pitch": -9.966177674774675, + "focus": [ + -14.255772720724048, + -18.612246103547704, + -462.68900237630305 + ], + "center_z": -462.68900237630305, + "route_distance_m": 506.6559510038529, + "route_length_m": 2026.6238040154117, + "requested_route_distance_m": 506.6559510038529, + "variant": "after", + "capture": "captures/after/passage-0-1-0-station-25.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-station-25.vfmesh", + "drawn_triangles": 134404, + "source_triangles": 181048, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 506.6559510038529, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -14.78808365101151, + -19.14058791856569, + -462.9516351755408 + ], + "target_actual_m": [ + -22.365365057702377, + -8.32444898094667, + -465.2722094791618 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-station-25-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-station-25-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-station-25-quality.log" + ] + }, + { + "name": "passage-0-1-0-station-50", + "passage": "passage/0-1/0", + "kind": "station", + "station": "50%", + "camera": [ + -5.842575724534995, + 21.863949924887685, + -554.1407724137848 + ], + "target": [ + 7.380291766383868, + 21.57573157504241, + -556.4619792527176 + ], + "yaw": 91.24867624366509, + "pitch": -9.954217908601981, + "focus": [ + -5.738491686463744, + 21.12120736314857, + -553.8781396145471 + ], + "center_z": -553.8781396145471, + "route_distance_m": 1013.3119020077058, + "route_length_m": 2026.6238040154117, + "requested_route_distance_m": 1013.3119020077058, + "variant": "after", + "capture": "captures/after/passage-0-1-0-station-50.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-station-50.vfmesh", + "drawn_triangles": 314118, + "source_triangles": 400638, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1013.3119020077058, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -5.842575724534995, + 21.863949924887685, + -554.1407724137848 + ], + "target_actual_m": [ + 7.380291766383868, + 21.57573157504241, + -556.4619792527176 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-station-50-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-station-50-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-station-50-quality.log" + ] + }, + { + "name": "passage-0-1-0-station-75", + "passage": "passage/0-1/0", + "kind": "station", + "station": "75%", + "camera": [ + 16.763485216854995, + -13.640943979476505, + -645.3279593243624 + ], + "target": [ + 6.569824394878262, + -21.9100022794575, + -647.6488325282868 + ], + "yaw": -129.04883094075703, + "pitch": -10.027223169087986, + "focus": [ + 16.183682248926296, + -13.165204010185432, + -645.0653265251246 + ], + "center_z": -645.0653265251246, + "route_distance_m": 1519.9678530115589, + "route_length_m": 2026.6238040154117, + "requested_route_distance_m": 1519.9678530115589, + "variant": "after", + "capture": "captures/after/passage-0-1-0-station-75.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-station-75.vfmesh", + "drawn_triangles": 255252, + "source_triangles": 326582, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1519.9678530115589, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 16.763485216854995, + -13.640943979476505, + -645.3279593243624 + ], + "target_actual_m": [ + 6.569824394878262, + -21.9100022794575, + -647.6488325282868 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-station-75-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-station-75-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-station-75-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-1-view-1", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-1/view-1", + "camera": [ + 14.171597054271547, + 7.048153239139165, + -371.997 + ], + "target": [ + 7.272, + 7.748, + -373.097 + ], + "yaw": -84.20812706837869, + "pitch": -9.012926456869502, + "focus": [ + 7.272, + 7.748, + -373.197 + ], + "center_z": -373.197, + "open_air_section": 1, + "route_distance_m": 8.3545, + "requested_route_distance_m": 8.3545, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-1-view-1.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-1.vfmesh", + "drawn_triangles": 279171, + "source_triangles": 346937, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.3545, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 14.171597054271547, + 7.048153239139165, + -371.997 + ], + "target_actual_m": [ + 7.272, + 7.748, + -373.097 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-1-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-1-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-1-view-2", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-1/view-2", + "camera": [ + 1.8647454953185498, + 8.296473993551354, + -369.197 + ], + "target": [ + 7.071844918470327, + 5.7747260089609505, + -373.4541530665317 + ], + "yaw": 115.84045885980866, + "pitch": -36.34636101909703, + "focus": [ + 7.272, + 7.748, + -373.197 + ], + "center_z": -373.197, + "open_air_section": 1, + "route_distance_m": 8.3545, + "requested_route_distance_m": 8.3545, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-1-view-2.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-2.vfmesh", + "drawn_triangles": 287908, + "source_triangles": 358976, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.3545, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 1.8647454953185498, + 8.296473993551354, + -369.197 + ], + "target_actual_m": [ + 7.071844918470327, + 5.7747260089609505, + -373.4541530665317 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-2-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-2-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-2-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-1-view-3", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-1/view-3", + "camera": [ + 7.272, + 7.748, + -373.652 + ], + "target": [ + 6.571457214646145, + 0.8415410313633265, + -374.55203573286104 + ], + "yaw": -174.2081270683787, + "pitch": -7.3873433616526025, + "focus": [ + 7.272, + 7.748, + -373.197 + ], + "center_z": -373.197, + "open_air_section": 1, + "route_distance_m": 8.3545, + "requested_route_distance_m": 8.3545, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-1-view-3.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-3.vfmesh", + "drawn_triangles": 312014, + "source_triangles": 392572, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.3545, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 7.272, + 7.748, + -373.652 + ], + "target_actual_m": [ + 6.571457214646145, + 0.8415410313633265, + -374.55203573286104 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-3-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-3-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-1-4m-outside", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-1/4m-outside", + "camera": [ + 13.176702021211483, + 7.149068417345486, + -374.402 + ], + "target": [ + 9.197121888971225, + 7.5527291301707695, + -374.402 + ], + "yaw": -84.20812706837869, + "pitch": 0.0, + "focus": [ + 7.272, + 7.748, + -373.197 + ], + "center_z": -373.197, + "open_air_section": 1, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.9948950330600643, + -0.1009151782063209, + 0.0 + ], + "camera_target_distance_m": 4.000000000000001, + "route_distance_m": 8.3545, + "requested_route_distance_m": 8.3545, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-1-4m-outside.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-4m-outside.vfmesh", + "drawn_triangles": 279171, + "source_triangles": 346937, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.3545, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.9999999999999982, + "closeup_target_surface_distance_m": 0.8115739125132071, + "closeup_predicted_target_offset_m": 0.8115739125132071, + "closeup_wall_normal_alignment": 0.9909370337827299, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 13.001310859531525, + 8.030798839669227, + -374.0681219724272 + ], + "target_actual_m": [ + 9.014100074768066, + 8.0, + -373.75 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-4m-outside-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-4m-outside-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-4m-outside-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-1-4m-interior-wall", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-1/4m-interior-wall", + "camera": [ + 7.395778712540976, + 3.8749008126934172, + -374.89997477205173 + ], + "target": [ + 8.778272394312646, + 7.595214286886338, + -374.402 + ], + "yaw": 20.38540702862518, + "pitch": 7.1515181408188955, + "focus": [ + 7.272, + 7.748, + -373.197 + ], + "center_z": -373.197, + "open_air_section": 1, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.9948950330600643, + 0.1009151782063209, + -0.0 + ], + "camera_target_distance_m": 3.9999999999999973, + "route_distance_m": 8.3545, + "requested_route_distance_m": 8.3545, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-1-4m-interior-wall.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-4m-interior-wall.vfmesh", + "drawn_triangles": 312014, + "source_triangles": 392572, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.3545, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.999999999999999, + "closeup_target_surface_distance_m": 0.8028512741535025, + "closeup_predicted_target_offset_m": 0.8028512741535025, + "closeup_wall_normal_alignment": 0.9909370337827299, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 5.026889290004607, + 7.969201160330773, + -373.4318780275728 + ], + "target_actual_m": [ + 9.014100074768066, + 8.0, + -373.75 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-4m-interior-wall-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-4m-interior-wall-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-1-4m-interior-wall-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-2-view-1", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-2/view-1", + "camera": [ + 13.806920171614387, + 0.8302038482412197, + -372.949 + ], + "target": [ + 6.603, + 1.698, + -374.049 + ], + "yaw": -83.1311525734364, + "pitch": -8.620326383568274, + "focus": [ + 6.603, + 1.698, + -374.149 + ], + "center_z": -374.149, + "open_air_section": 2, + "route_distance_m": 14.4925, + "requested_route_distance_m": 14.4925, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-2-view-1.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-1.vfmesh", + "drawn_triangles": 279171, + "source_triangles": 346937, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.4925, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 13.806920171614387, + 0.8302038482412197, + -372.949 + ], + "target_actual_m": [ + 6.603, + 1.698, + -374.049 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-1-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-1-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-2-view-2", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-2/view-2", + "camera": [ + 0.8883136014591493, + 2.3864005856564967, + -370.149 + ], + "target": [ + 6.367681865010997, + -0.25546920582469834, + -374.5075853276975 + ], + "yaw": 115.74097579560643, + "pitch": -35.62229543250913, + "focus": [ + 6.603, + 1.698, + -374.149 + ], + "center_z": -374.149, + "open_air_section": 2, + "route_distance_m": 14.4925, + "requested_route_distance_m": 14.4925, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-2-view-2.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-2.vfmesh", + "drawn_triangles": 312014, + "source_triangles": 392572, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.4925, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 0.8883136014591493, + 2.3864005856564967, + -370.149 + ], + "target_actual_m": [ + 6.367681865010997, + -0.25546920582469834, + -374.5075853276975 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-2-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-2-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-2-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-2-view-3", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-2/view-3", + "camera": [ + 6.603, + 1.698, + -374.76163279923776 + ], + "target": [ + 5.77938652753849, + -5.139142220386445, + -376.016681446179 + ], + "yaw": -173.1311525734364, + "pitch": -10.32856219521722, + "focus": [ + 6.603, + 1.698, + -374.149 + ], + "center_z": -374.149, + "open_air_section": 2, + "route_distance_m": 14.4925, + "requested_route_distance_m": 14.4925, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-2-view-3.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-3.vfmesh", + "drawn_triangles": 312014, + "source_triangles": 392572, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.4925, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 6.603, + 1.698, + -374.76163279923776 + ], + "target_actual_m": [ + 5.77938652753849, + -5.139142220386445, + -376.016681446179 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-3-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-3-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-2-4m-outside", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-2/4m-outside", + "camera": [ + 12.814097656232029, + 0.949800892309409, + -375.51163279923776 + ], + "target": [ + 8.842807594702599, + 1.4281890685821654, + -375.51163279923776 + ], + "yaw": -83.1311525734364, + "pitch": 0.0, + "focus": [ + 6.603, + 1.698, + -374.149 + ], + "center_z": -374.149, + "open_air_section": 2, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.9928225153823576, + -0.1195970440681891, + 0.0 + ], + "camera_target_distance_m": 4.0, + "route_distance_m": 14.4925, + "requested_route_distance_m": 14.4925, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-2-4m-outside.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-4m-outside.vfmesh", + "drawn_triangles": 279171, + "source_triangles": 346937, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.4925, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.999999999999999, + "closeup_target_surface_distance_m": 1.0636849811376077, + "closeup_predicted_target_offset_m": 1.0636849811376077, + "closeup_wall_normal_alignment": 0.5076869493421745, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 10.308092134198723, + 3.1767909686139304, + -378.43646027440843 + ], + "target_actual_m": [ + 8.000443458557129, + 1.0, + -376.0 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-4m-outside-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-4m-outside-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-4m-outside-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-2-4m-interior-wall", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-2/4m-interior-wall", + "camera": [ + 6.939570778854576, + -2.1803140897652855, + -376.2060303004211 + ], + "target": [ + 8.388084903173432, + 1.4829657169105679, + -375.51163279923776 + ], + "yaw": 21.574563086437188, + "pitch": 9.997160707081923, + "focus": [ + 6.603, + 1.698, + -374.149 + ], + "center_z": -374.149, + "open_air_section": 2, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.9928225153823576, + 0.1195970440681891, + -0.0 + ], + "camera_target_distance_m": 3.999999999999997, + "route_distance_m": 14.4925, + "requested_route_distance_m": 14.4925, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-2-4m-interior-wall.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-4m-interior-wall.vfmesh", + "drawn_triangles": 350214, + "source_triangles": 445390, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 14.4925, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.999999999999994, + "closeup_target_surface_distance_m": 0.7853095224094995, + "closeup_predicted_target_offset_m": 0.7853095224094995, + "closeup_wall_normal_alignment": 0.5553784184471084, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 5.4959837119606645, + -0.739874885164667, + -373.39806557553993 + ], + "target_actual_m": [ + 7.949404625801623, + 1.0519574368837428, + -376.0 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-4m-interior-wall-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-4m-interior-wall-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-2-4m-interior-wall-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-3-view-1", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-3/view-1", + "camera": [ + -29.152636206395663, + -17.00250445676227, + -598.044 + ], + "target": [ + -22.1, + -12.258, + -599.144 + ], + "yaw": 56.07018168236041, + "pitch": -7.373766361330365, + "focus": [ + -22.1, + -12.258, + -599.244 + ], + "center_z": -599.244, + "open_air_section": 3, + "route_distance_m": 1265.3425000000002, + "requested_route_distance_m": 1265.3425000000002, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-3-view-1.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-1.vfmesh", + "drawn_triangles": 207429, + "source_triangles": 257263, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3425000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -29.152636206395663, + -17.00250445676227, + -598.044 + ], + "target_actual_m": [ + -22.1, + -12.258, + -599.144 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-1-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-1-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-3-view-2", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-3/view-2", + "camera": [ + -16.29194665355652, + -8.35076103560754, + -595.244 + ], + "target": [ + -23.198124843266566, + -10.625653545413794, + -599.6039539981729 + ], + "yaw": -108.23186364164575, + "pitch": -30.947707661773293, + "focus": [ + -22.1, + -12.258, + -599.244 + ], + "center_z": -599.244, + "open_air_section": 3, + "route_distance_m": 1265.3425000000002, + "requested_route_distance_m": 1265.3425000000002, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-3-view-2.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-2.vfmesh", + "drawn_triangles": 185112, + "source_triangles": 230374, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3425000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -16.29194665355652, + -8.35076103560754, + -595.244 + ], + "target_actual_m": [ + -23.198124843266566, + -10.625653545413794, + -599.6039539981729 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-2-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-2-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-2-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-3-view-3", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-3/view-3", + "camera": [ + -22.1, + -12.258, + -599.8566327992378 + ], + "target": [ + -25.943436951432982, + -6.544787408948284, + -601.1164717928428 + ], + "yaw": -33.9298183176396, + "pitch": -10.368420070612796, + "focus": [ + -22.1, + -12.258, + -599.244 + ], + "center_z": -599.244, + "open_air_section": 3, + "route_distance_m": 1265.3425000000002, + "requested_route_distance_m": 1265.3425000000002, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-3-view-3.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-3.vfmesh", + "drawn_triangles": 185112, + "source_triangles": 230374, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3425000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -22.1, + -12.258, + -599.8566327992378 + ], + "target_actual_m": [ + -25.943436951432982, + -6.544787408948284, + -601.1164717928428 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-3-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-3-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-3-4m-outside", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-3/4m-outside", + "camera": [ + -28.32291429976088, + -16.444327461849063, + -600.6066327992378 + ], + "target": [ + -25.004026673221745, + -14.211619482196229, + -600.6066327992378 + ], + "yaw": 56.07018168236039, + "pitch": 0.0, + "focus": [ + -22.1, + -12.258, + -599.244 + ], + "center_z": -599.244, + "open_air_section": 3, + "closeup_side": "outside", + "closeup_preferred_normal": [ + -0.8297219066347834, + -0.5581769949132084, + 0.0 + ], + "camera_target_distance_m": 4.000000000000001, + "route_distance_m": 1265.3425000000002, + "requested_route_distance_m": 1265.3425000000002, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-3-4m-outside.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-4m-outside.vfmesh", + "drawn_triangles": 153860, + "source_triangles": 191080, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3425000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.9999999999999876, + "closeup_target_surface_distance_m": 0.2075870788097849, + "closeup_predicted_target_offset_m": 0.2075870788097849, + "closeup_wall_normal_alignment": 0.904243137935264, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -27.651340681601248, + -16.413326726394757, + -602.2036214218188 + ], + "target_actual_m": [ + -24.8358770618729, + -14.118497808699297, + -600.5282334534679 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-4m-outside-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-4m-outside-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-4m-outside-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-3-4m-interior-wall", + "passage": "passage/0-1/0", + "kind": "open-air-close", + "station": "section-3/4m-interior-wall", + "camera": [ + -26.071689640946218, + -10.338278587083852, + -601.3036807194 + ], + "target": [ + -24.774901932566983, + -14.057480898923608, + -600.6066327992378 + ], + "yaw": 160.77768453528284, + "pitch": 10.035712777782798, + "focus": [ + -22.1, + -12.258, + -599.244 + ], + "center_z": -599.244, + "open_air_section": 3, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + 0.8297219066347834, + 0.5581769949132084, + -0.0 + ], + "camera_target_distance_m": 4.000000000000005, + "route_distance_m": 1265.3425000000002, + "requested_route_distance_m": 1265.3425000000002, + "route_length_m": 2026.6238040154117, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-3-4m-interior-wall.png", + "scene": "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-4m-interior-wall.vfmesh", + "drawn_triangles": 152882, + "source_triangles": 191476, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 1265.3425000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.999999999999989, + "closeup_target_surface_distance_m": 0.04715362672685941, + "closeup_predicted_target_offset_m": 0.04715362672685941, + "closeup_wall_normal_alignment": 0.8914972029009958, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -22.090001742014795, + -11.737840633493331, + -598.8622157263953 + ], + "target_actual_m": [ + -24.81309729642714, + -14.078633586544772, + -600.6244412943872 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-4m-interior-wall-mesh.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-4m-interior-wall-render.log", + "Saved/Linux/l113/captures/after/passage-0-1-0-openair-3-4m-interior-wall-quality.log" + ] + }, + { + "name": "passage-1-2-0-upper-mouth", + "passage": "passage/1-2/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + 23.39180762797774, + -15.509524798921928, + -731.7810546875 + ], + "target": [ + 17.28788584589878, + -13.618271096312476, + -731.8810546875 + ], + "yaw": -72.7848029211395, + "pitch": -0.8965458221544697, + "focus": [ + 19.166015625, + -14.2001953125, + -730.5610546875 + ], + "center_z": -730.5610546875, + "variant": "after", + "capture": "captures/after/passage-1-2-0-upper-mouth.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-upper-mouth.vfmesh", + "drawn_triangles": 595672, + "source_triangles": 665178, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 23.39180762797774, + -15.509524798921928, + -731.7810546875 + ], + "target_actual_m": [ + 17.28788584589878, + -13.618271096312476, + -731.8810546875 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-upper-mouth-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-upper-mouth-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-upper-mouth-quality.log" + ] + }, + { + "name": "passage-1-2-0-lower-mouth", + "passage": "passage/1-2/0", + "kind": "mouth", + "station": "lower-mouth", + "camera": [ + 27.129937681588373, + -19.073450175278364, + -751.8771866414096 + ], + "target": [ + 17.48940045519192, + -13.174246920336135, + -753.05390625 + ], + "yaw": -58.53685078395012, + "pitch": -5.943870452561027, + "focus": [ + 19.166015625, + -14.2001953125, + -751.73390625 + ], + "center_z": -751.73390625, + "variant": "after", + "capture": "captures/after/passage-1-2-0-lower-mouth.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-lower-mouth.vfmesh", + "drawn_triangles": 546142, + "source_triangles": 593592, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 27.129937681588373, + -19.073450175278364, + -751.8771866414096 + ], + "target_actual_m": [ + 17.48940045519192, + -13.174246920336135, + -753.05390625 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-lower-mouth-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-lower-mouth-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-lower-mouth-quality.log" + ] + }, + { + "name": "passage-1-2-0-station-25", + "passage": "passage/1-2/0", + "kind": "station", + "station": "25%", + "camera": [ + 14.123536467456244, + 6.240983804873839, + -736.9266568574585 + ], + "target": [ + 2.8803137791411038, + 14.614332686305787, + -739.3139366342602 + ], + "yaw": -53.32323690581729, + "pitch": -9.66435626972965, + "focus": [ + 14.813654134436735, + 6.534646205806277, + -735.7566568574586 + ], + "center_z": -735.7566568574586, + "route_distance_m": 28.747657939523272, + "route_length_m": 114.99063175809309, + "requested_route_distance_m": 28.747657939523272, + "variant": "after", + "capture": "captures/after/passage-1-2-0-station-25.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-station-25.vfmesh", + "drawn_triangles": 654984, + "source_triangles": 755070, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 28.747657939523272, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 14.123536467456244, + 6.240983804873839, + -736.9266568574585 + ], + "target_actual_m": [ + 2.8803137791411038, + 14.614332686305787, + -739.3139366342602 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-station-25-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-station-25-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-station-25-quality.log" + ] + }, + { + "name": "passage-1-2-0-station-50", + "passage": "passage/1-2/0", + "kind": "station", + "station": "50%", + "camera": [ + -8.14430619211178, + 12.235240826338718, + -742.2394815085395 + ], + "target": [ + -12.700487024811965, + -1.038727127296823, + -744.628569343647 + ], + "yaw": -161.05563621352672, + "pitch": -9.661077464733383, + "focus": [ + -8.621845503855653, + 12.813562713992287, + -741.0694815085395 + ], + "center_z": -741.0694815085395, + "route_distance_m": 57.495315879046544, + "route_length_m": 114.99063175809309, + "requested_route_distance_m": 57.495315879046544, + "variant": "after", + "capture": "captures/after/passage-1-2-0-station-50.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-station-50.vfmesh", + "drawn_triangles": 604712, + "source_triangles": 685166, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 57.495315879046544, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -8.14430619211178, + 12.235240826338718, + -742.2394815085395 + ], + "target_actual_m": [ + -12.700487024811965, + -1.038727127296823, + -744.628569343647 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-station-50-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-station-50-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-station-50-quality.log" + ] + }, + { + "name": "passage-1-2-0-station-75", + "passage": "passage/1-2/0", + "kind": "station", + "station": "75%", + "camera": [ + -6.987446947881857, + -10.765115248422655, + -747.5564684387438 + ], + "target": [ + 7.091762142236872, + -11.042713876861228, + -749.9489555153405 + ], + "yaw": 91.12954989855486, + "pitch": -9.642336322206393, + "focus": [ + -7.402667393484897, + -11.38968868810226, + -746.3864684387438 + ], + "center_z": -746.3864684387438, + "route_distance_m": 86.24297381856982, + "route_length_m": 114.99063175809309, + "requested_route_distance_m": 86.24297381856982, + "variant": "after", + "capture": "captures/after/passage-1-2-0-station-75.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-station-75.vfmesh", + "drawn_triangles": 612097, + "source_triangles": 692301, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 86.24297381856982, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -6.987446947881857, + -10.765115248422655, + -747.5564684387438 + ], + "target_actual_m": [ + 7.091762142236872, + -11.042713876861228, + -749.9489555153405 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-station-75-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-station-75-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-station-75-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-1-view-1", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-1/view-1", + "camera": [ + -4.010662222207793, + -3.928480667735541, + -744.68 + ], + "target": [ + -9.518, + -9.731, + -745.78 + ], + "yaw": -136.49505148095557, + "pitch": -7.829076510059767, + "focus": [ + -9.518, + -9.731, + -745.88 + ], + "center_z": -745.88, + "open_air_section": 1, + "route_distance_m": 83.504, + "requested_route_distance_m": 83.504, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-1-view-1.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-1.vfmesh", + "drawn_triangles": 623418, + "source_triangles": 711740, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 83.504, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -4.010662222207793, + -3.928480667735541, + -744.68 + ], + "target_actual_m": [ + -9.518, + -9.731, + -745.78 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-1-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-1-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-1-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-1-view-2", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-1/view-2", + "camera": [ + -13.99271194445617, + -14.445546957464874, + -741.88 + ], + "target": [ + -8.092470510849907, + -11.08401098702058, + -746.2504415535075 + ], + "yaw": 60.328600337066774, + "pitch": -32.76525220659009, + "focus": [ + -9.518, + -9.731, + -745.88 + ], + "center_z": -745.88, + "open_air_section": 1, + "route_distance_m": 83.504, + "requested_route_distance_m": 83.504, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-1-view-2.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-2.vfmesh", + "drawn_triangles": 575936, + "source_triangles": 644954, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 83.504, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -13.99271194445617, + -14.445546957464874, + -741.88 + ], + "target_actual_m": [ + -8.092470510849907, + -11.08401098702058, + -746.2504415535075 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-2-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-2-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-2-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-1-view-3", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-1/view-3", + "camera": [ + -9.518, + -9.731, + -747.4 + ], + "target": [ + -4.528646787974676, + -14.466538454572031, + -748.6965454372763 + ], + "yaw": 133.50494851904446, + "pitch": -10.674004431858014, + "focus": [ + -9.518, + -9.731, + -745.88 + ], + "center_z": -745.88, + "open_air_section": 1, + "route_distance_m": 83.504, + "requested_route_distance_m": 83.504, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-1-view-3.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-3.vfmesh", + "drawn_triangles": 570541, + "source_triangles": 638615, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 83.504, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -9.518, + -9.731, + -747.4 + ], + "target_actual_m": [ + -4.528646787974676, + -14.466538454572031, + -748.6965454372763 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-3-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-3-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-view-3-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-1-4m-outside", + "passage": "passage/1-2/0", + "kind": "open-air-close", + "station": "section-1/4m-outside", + "camera": [ + -4.699079444431819, + -4.6537955842685985, + -748.15 + ], + "target": [ + -7.452748333327923, + -7.555055250400828, + -748.15 + ], + "yaw": -136.49505148095557, + "pitch": 0.0, + "focus": [ + -9.518, + -9.731, + -745.88 + ], + "center_z": -745.88, + "open_air_section": 1, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.688417222224026, + 0.7253149165330574, + 0.0 + ], + "camera_target_distance_m": 4.000000000000001, + "route_distance_m": 83.504, + "requested_route_distance_m": 83.504, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-1-4m-outside.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-4m-outside.vfmesh", + "drawn_triangles": 623418, + "source_triangles": 711740, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 83.504, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.99999999999999, + "closeup_target_surface_distance_m": 0.694202433854289, + "closeup_predicted_target_offset_m": 0.694202433854289, + "closeup_wall_normal_alignment": 0.6320955190222977, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -4.078884776303333, + -7.574630837765809, + -745.9346460853614 + ], + "target_actual_m": [ + -7.75, + -7.576179311817557, + -747.523013365486 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-4m-outside-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-4m-outside-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-4m-outside-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-1-4m-interior-wall", + "passage": "passage/1-2/0", + "kind": "open-air-close", + "station": "section-1/4m-interior-wall", + "camera": [ + -6.0956279351195075, + -11.653774892861163, + -748.8673569837389 + ], + "target": [ + -8.16773669839842, + -8.308365466344922, + -748.15 + ], + "yaw": -31.773605793127505, + "pitch": 10.331275124559749, + "focus": [ + -9.518, + -9.731, + -745.88 + ], + "center_z": -745.88, + "open_air_section": 1, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.688417222224026, + -0.7253149165330574, + -0.0 + ], + "camera_target_distance_m": 3.999999999999997, + "route_distance_m": 83.504, + "requested_route_distance_m": 83.504, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-1-4m-interior-wall.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-4m-interior-wall.vfmesh", + "drawn_triangles": 612097, + "source_triangles": 692301, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 83.504, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 3.999999999999999, + "closeup_target_surface_distance_m": 0.6509430039577998, + "closeup_predicted_target_offset_m": 0.6509430039577998, + "closeup_wall_normal_alignment": 0.7808473937095911, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -8.525095579521167, + -12.94135557024142, + -748.3220319510015 + ], + "target_actual_m": [ + -8.18421537084871, + -8.958641713644115, + -748.1744141343152 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-4m-interior-wall-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-4m-interior-wall-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-1-4m-interior-wall-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-2-view-1", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-2/view-1", + "camera": [ + 6.13292788028755, + -3.743002188934521, + -748.543 + ], + "target": [ + 9.43, + -11.181, + -749.643 + ], + "yaw": 156.09352823535562, + "pitch": -7.6997900448953684, + "focus": [ + 9.43, + -11.181, + -749.743 + ], + "center_z": -749.743, + "open_air_section": 2, + "route_distance_m": 104.362, + "requested_route_distance_m": 104.362, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-2-view-1.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-1.vfmesh", + "drawn_triangles": 628096, + "source_triangles": 720280, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.362, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 6.13292788028755, + -3.743002188934521, + -748.543 + ], + "target_actual_m": [ + 9.43, + -11.181, + -749.643 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-1-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-1-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-1-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-2-view-2", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-2/view-2", + "camera": [ + 12.119204841004402, + -17.24768553026432, + -745.743 + ], + "target": [ + 11.227153830879562, + -10.384368172304068, + -750.111260558921 + ], + "yaw": -7.405432412441471, + "pitch": -32.25832231519941, + "focus": [ + 9.43, + -11.181, + -749.743 + ], + "center_z": -749.743, + "open_air_section": 2, + "route_distance_m": 104.362, + "requested_route_distance_m": 104.362, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-2-view-2.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-2.vfmesh", + "drawn_triangles": 585354, + "source_triangles": 650680, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.362, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 12.119204841004402, + -17.24768553026432, + -745.743 + ], + "target_actual_m": [ + 11.227153830879562, + -10.384368172304068, + -750.111260558921 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-2-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-2-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-2-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-2-view-3", + "passage": "passage/1-2/0", + "kind": "open-air", + "station": "section-2/view-3", + "camera": [ + 9.43, + -11.181, + -751.263 + ], + "target": [ + 15.72003840807847, + -8.392788603064238, + -752.5519119562233 + ], + "yaw": 66.09352823535562, + "pitch": -10.61043002727037, + "focus": [ + 9.43, + -11.181, + -749.743 + ], + "center_z": -749.743, + "open_air_section": 2, + "route_distance_m": 104.362, + "requested_route_distance_m": 104.362, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-2-view-3.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-3.vfmesh", + "drawn_triangles": 613434, + "source_triangles": 694694, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.362, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 9.43, + -11.181, + -751.263 + ], + "target_actual_m": [ + 15.72003840807847, + -8.392788603064238, + -752.5519119562233 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-3-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-3-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-view-3-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-2-4m-outside", + "passage": "passage/1-2/0", + "kind": "open-air-close", + "station": "section-2/4m-outside", + "camera": [ + 6.53817273275958, + -4.657210376135293, + -752.013 + ], + "target": [ + 8.159152142647708, + -8.31404312493838, + -752.013 + ], + "yaw": 156.09352823535562, + "pitch": 0.0, + "focus": [ + 9.43, + -11.181, + -749.743 + ], + "center_z": -749.743, + "open_air_section": 2, + "closeup_side": "outside", + "closeup_preferred_normal": [ + -0.40524485247203174, + 0.9142081872007717, + 0.0 + ], + "camera_target_distance_m": 4.0, + "route_distance_m": 104.362, + "requested_route_distance_m": 104.362, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-2-4m-outside.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-4m-outside.vfmesh", + "drawn_triangles": 585844, + "source_triangles": 657940, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.362, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.000000000000001, + "closeup_target_surface_distance_m": 0.5914642210657065, + "closeup_predicted_target_offset_m": 0.5914642210657065, + "closeup_wall_normal_alignment": 0.9891491270971497, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 6.36017623097692, + -5.41779354635724, + -752.0611111978326 + ], + "target_actual_m": [ + 8.5, + -8.797159410771899, + -752.028852990306 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-4m-outside-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-4m-outside-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-4m-outside-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-2-4m-interior-wall", + "passage": "passage/1-2/0", + "kind": "open-air-close", + "station": "section-2/4m-interior-wall", + "camera": [ + 12.438590152225206, + -8.574465388721983, + -752.7261335058829 + ], + "target": [ + 8.55317187096847, + -9.20292810238377, + -752.013 + ], + "yaw": -99.18796190221158, + "pitch": 10.269787281460902, + "focus": [ + 9.43, + -11.181, + -749.743 + ], + "center_z": -749.743, + "open_air_section": 2, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + 0.40524485247203174, + -0.9142081872007717, + -0.0 + ], + "camera_target_distance_m": 3.9999999999999973, + "route_distance_m": 104.362, + "requested_route_distance_m": 104.362, + "route_length_m": 114.99063175809309, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-2-4m-interior-wall.png", + "scene": "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-4m-interior-wall.vfmesh", + "drawn_triangles": 574404, + "source_triangles": 636814, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 104.362, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.000000000000001, + "closeup_target_surface_distance_m": 0.3527379880998657, + "closeup_predicted_target_offset_m": 0.3527379880998657, + "closeup_wall_normal_alignment": 0.9984886840143513, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 9.755455381073956, + -12.664189280507138, + -752.0262323451956 + ], + "target_actual_m": [ + 8.337158675455406, + -8.924125097427853, + -752.0074078590392 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-4m-interior-wall-mesh.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-4m-interior-wall-render.log", + "Saved/Linux/l113/captures/after/passage-1-2-0-openair-2-4m-interior-wall-quality.log" + ] + }, + { + "name": "passage-2-3-0-upper-mouth", + "passage": "passage/2-3/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + -24.455025526892644, + -5.631774473341657, + -811.975390625 + ], + "target": [ + -18.110266432492157, + -4.81795266462593, + -812.075390625 + ], + "yaw": 82.6907653180847, + "pitch": -0.8956299428824654, + "focus": [ + -20.0625, + -5.068359375, + -810.755390625 + ], + "center_z": -810.755390625, + "variant": "after", + "capture": "captures/after/passage-2-3-0-upper-mouth.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-upper-mouth.vfmesh", + "drawn_triangles": 59570, + "source_triangles": 71526, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -24.455025526892644, + -5.631774473341657, + -811.975390625 + ], + "target_actual_m": [ + -18.110266432492157, + -4.81795266462593, + -812.075390625 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-upper-mouth-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-upper-mouth-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-upper-mouth-quality.log" + ] + }, + { + "name": "passage-2-3-0-lower-mouth", + "passage": "passage/2-3/0", + "kind": "mouth", + "station": "lower-mouth", + "camera": [ + -28.589162628136368, + -1.22631300593053, + -898.8116843726575 + ], + "target": [ + -18.26741313091866, + -5.87721124217252, + -900.0333984375 + ], + "yaw": 114.25594846721253, + "pitch": -6.159177031829821, + "focus": [ + -20.0625, + -5.068359375, + -898.7133984375 + ], + "center_z": -898.7133984375, + "variant": "after", + "capture": "captures/after/passage-2-3-0-lower-mouth.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-lower-mouth.vfmesh", + "drawn_triangles": 293916, + "source_triangles": 314604, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -28.589162628136368, + -1.22631300593053, + -898.8116843726575 + ], + "target_actual_m": [ + -18.26741313091866, + -5.87721124217252, + -900.0333984375 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-lower-mouth-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-lower-mouth-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-lower-mouth-quality.log" + ] + }, + { + "name": "passage-2-3-0-station-25", + "passage": "passage/2-3/0", + "kind": "station", + "station": "25%", + "camera": [ + 3.0350580952420283, + -13.585936374426327, + -833.849533408815 + ], + "target": [ + 14.040702086603828, + -4.749438141216605, + -836.1437426190545 + ], + "yaw": 51.23880821825549, + "pitch": -9.232526164241397, + "focus": [ + 3.1001161186550945, + -14.333109348770009, + -832.679533408815 + ], + "center_z": -832.679533408815, + "route_distance_m": 123.51806997076407, + "route_length_m": 494.0722798830563, + "requested_route_distance_m": 123.51806997076407, + "variant": "after", + "capture": "captures/after/passage-2-3-0-station-25.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-station-25.vfmesh", + "drawn_triangles": 55516, + "source_triangles": 66438, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 123.51806997076407, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 3.0350580952420283, + -13.585936374426327, + -833.849533408815 + ], + "target_actual_m": [ + 14.040702086603828, + -4.749438141216605, + -836.1437426190545 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-station-25-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-station-25-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-station-25-quality.log" + ] + }, + { + "name": "passage-2-3-0-station-50", + "passage": "passage/2-3/0", + "kind": "station", + "station": "50%", + "camera": [ + 15.024881952863643, + 4.138528031226888, + -855.8579689863811 + ], + "target": [ + 4.265454865375826, + 13.262758845877656, + -858.1515199387543 + ], + "yaw": -49.7013223912607, + "pitch": -9.234275431607175, + "focus": [ + 15.744063464118932, + 4.35131420058138, + -854.6879689863812 + ], + "center_z": -854.6879689863812, + "route_distance_m": 247.03613994152815, + "route_length_m": 494.0722798830563, + "requested_route_distance_m": 247.03613994152815, + "variant": "after", + "capture": "captures/after/passage-2-3-0-station-50.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-station-50.vfmesh", + "drawn_triangles": 457922, + "source_triangles": 479266, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 247.03613994152815, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + 15.024881952863643, + 4.138528031226888, + -855.8579689863811 + ], + "target_actual_m": [ + 4.265454865375826, + 13.262758845877656, + -858.1515199387543 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-station-50-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-station-50-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-station-50-quality.log" + ] + }, + { + "name": "passage-2-3-0-station-75", + "passage": "passage/2-3/0", + "kind": "station", + "station": "75%", + "camera": [ + -5.777481767767348, + 11.490580551682557, + -877.8684535937286 + ], + "target": [ + -12.53706916373674, + -0.8746235008587264, + -880.1662981297399 + ], + "yaw": -151.3362479718382, + "pitch": -9.261022024213226, + "focus": [ + -6.131454547793997, + 12.15179403536253, + -876.6984535937287 + ], + "center_z": -876.6984535937287, + "route_distance_m": 370.5542099122922, + "route_length_m": 494.0722798830563, + "requested_route_distance_m": 370.5542099122922, + "variant": "after", + "capture": "captures/after/passage-2-3-0-station-75.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-station-75.vfmesh", + "drawn_triangles": 475608, + "source_triangles": 506238, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 370.5542099122922, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -5.777481767767348, + 11.490580551682557, + -877.8684535937286 + ], + "target_actual_m": [ + -12.53706916373674, + -0.8746235008587264, + -880.1662981297399 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-station-75-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-station-75-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-station-75-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-1-view-1", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-1/view-1", + "camera": [ + -3.0706198599960333, + -4.662912354128245, + -812.4269999999999 + ], + "target": [ + -7.178, + -11.528, + -813.5269999999999 + ], + "yaw": -149.10792796365394, + "pitch": -7.829076510059767, + "focus": [ + -7.178, + -11.528, + -813.627 + ], + "center_z": -813.627, + "open_air_section": 1, + "route_distance_m": 16.616500000000002, + "requested_route_distance_m": 16.616500000000002, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-1-view-1.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-1.vfmesh", + "drawn_triangles": 104612, + "source_triangles": 129378, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 16.616500000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -3.0706198599960333, + -4.662912354128245, + -812.4269999999999 + ], + "target_actual_m": [ + -7.178, + -11.528, + -813.5269999999999 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-1-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-1-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-1-view-2", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-1/view-2", + "camera": [ + -10.515246363753223, + -17.105883712270803, + -809.627 + ], + "target": [ + -5.489258555660191, + -12.538373563730685, + -813.9837878864021 + ], + "yaw": 47.73610977610635, + "pitch": -32.68091427592879, + "focus": [ + -7.178, + -11.528, + -813.627 + ], + "center_z": -813.627, + "open_air_section": 1, + "route_distance_m": 16.616500000000002, + "requested_route_distance_m": 16.616500000000002, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-1-view-2.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-2.vfmesh", + "drawn_triangles": 76426, + "source_triangles": 93968, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 16.616500000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -10.515246363753223, + -17.105883712270803, + -809.627 + ], + "target_actual_m": [ + -5.489258555660191, + -12.538373563730685, + -813.9837878864021 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-2-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-2-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-2-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-1-view-3", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-1/view-3", + "camera": [ + -7.178, + -11.528, + -815.1469999999999 + ], + "target": [ + -1.2674049448106697, + -15.064307473057397, + -816.3957576024071 + ], + "yaw": 120.89207203634606, + "pitch": -10.276225498444528, + "focus": [ + -7.178, + -11.528, + -813.627 + ], + "center_z": -813.627, + "open_air_section": 1, + "route_distance_m": 16.616500000000002, + "requested_route_distance_m": 16.616500000000002, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-1-view-3.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-3.vfmesh", + "drawn_triangles": 94962, + "source_triangles": 118080, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 16.616500000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -7.178, + -11.528, + -815.1469999999999 + ], + "target_actual_m": [ + -1.2674049448106697, + -15.064307473057397, + -816.3957576024071 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-3-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-3-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-1-4m-outside", + "passage": "passage/2-3/0", + "kind": "open-air-close", + "station": "section-1/4m-outside", + "camera": [ + -3.5840423774965293, + -5.521048309862215, + -815.8969999999999 + ], + "target": [ + -5.637732447498513, + -8.953592132798093, + -815.8969999999999 + ], + "yaw": -149.10792796365394, + "pitch": 0.0, + "focus": [ + -7.178, + -11.528, + -813.627 + ], + "center_z": -813.627, + "open_air_section": 1, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.5134225175004958, + 0.8581359557339694, + 0.0 + ], + "camera_target_distance_m": 4.0, + "route_distance_m": 16.616500000000002, + "requested_route_distance_m": 16.616500000000002, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-1-4m-outside.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-4m-outside.vfmesh", + "drawn_triangles": 104612, + "source_triangles": 129378, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 16.616500000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.0000000000000036, + "closeup_target_surface_distance_m": 0.29188924025474844, + "closeup_predicted_target_offset_m": 0.29188924025474844, + "closeup_wall_normal_alignment": 0.6703275045296155, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -3.7918253987505834, + -7.16028175130118, + -813.227396563761 + ], + "target_actual_m": [ + -5.7833741859987065, + -9.093313475424294, + -816.1078690565205 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-4m-outside-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-4m-outside-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-4m-outside-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-1-4m-interior-wall", + "passage": "passage/2-3/0", + "kind": "open-air-close", + "station": "section-1/4m-interior-wall", + "camera": [ + -3.4141605326349946, + -12.659565888737353, + -816.5879167710818 + ], + "target": [ + -6.170971760123668, + -9.844849940114793, + -815.8969999999999 + ], + "yaw": -44.40454805561343, + "pitch": 9.946538162082001, + "focus": [ + -7.178, + -11.528, + -813.627 + ], + "center_z": -813.627, + "open_air_section": 1, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.5134225175004958, + -0.8581359557339694, + -0.0 + ], + "camera_target_distance_m": 4.000000000000005, + "route_distance_m": 16.616500000000002, + "requested_route_distance_m": 16.616500000000002, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-1-4m-interior-wall.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-4m-interior-wall.vfmesh", + "drawn_triangles": 94962, + "source_triangles": 118080, + "verified": true, + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 16.616500000000002, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.0, + "closeup_target_surface_distance_m": 0.41920390486225767, + "closeup_predicted_target_offset_m": 0.41920390486225767, + "closeup_wall_normal_alignment": 0.740744136337711, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -7.998432705401559, + -11.833936581758076, + -818.2481168532394 + ], + "target_actual_m": [ + -5.94757062165508, + -9.608161331921629, + -815.6327986602337 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-4m-interior-wall-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-4m-interior-wall-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-1-4m-interior-wall-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-2-view-1", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-2/view-1", + "camera": [ + -3.8431875049675464, + 3.947514072717878, + -876.2779999999999 + ], + "target": [ + -9.548, + 9.556, + -877.3779999999999 + ], + "yaw": -45.48783053499849, + "pitch": -7.829076510059767, + "focus": [ + -9.548, + 9.556, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "route_distance_m": 374.929, + "requested_route_distance_m": 374.929, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-2-view-1.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-1.vfmesh", + "drawn_triangles": 475906, + "source_triangles": 507626, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 374.929, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -3.8431875049675464, + 3.947514072717878, + -876.2779999999999 + ], + "target_actual_m": [ + -9.548, + 9.556, + -877.3779999999999 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-1-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-1-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-2-view-2", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-2/view-2", + "camera": [ + -14.183160152213869, + 14.112894815916722, + -873.478 + ], + "target": [ + -10.927589606907347, + 8.152715739408853, + -877.8351075475125 + ], + "yaw": 151.35573902130292, + "pitch": -32.682889214087794, + "focus": [ + -9.548, + 9.556, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "route_distance_m": 374.929, + "requested_route_distance_m": 374.929, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-2-view-2.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-2.vfmesh", + "drawn_triangles": 479214, + "source_triangles": 505646, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 374.929, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -14.183160152213869, + 14.112894815916722, + -873.478 + ], + "target_actual_m": [ + -10.927589606907347, + 8.152715739408853, + -877.8351075475125 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-2-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-2-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-2-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-2-view-3", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-2/view-3", + "camera": [ + -9.548, + 9.556, + -878.9979999999999 + ], + "target": [ + -14.376563624175711, + 4.644505087930988, + -880.2478764162937 + ], + "yaw": -135.4878305349985, + "pitch": -10.285532542521631, + "focus": [ + -9.548, + 9.556, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "route_distance_m": 374.929, + "requested_route_distance_m": 374.929, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-2-view-3.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-3.vfmesh", + "drawn_triangles": 479214, + "source_triangles": 505646, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 374.929, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": null, + "closeup_target_surface_distance_m": null, + "closeup_predicted_target_offset_m": null, + "closeup_wall_normal_alignment": null, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -9.548, + 9.556, + -878.9979999999999 + ], + "target_actual_m": [ + -14.376563624175711, + 4.644505087930988, + -880.2478764162937 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-3-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-3-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-2-4m-outside", + "passage": "passage/2-3/0", + "kind": "open-air-close", + "station": "section-2/4m-outside", + "camera": [ + -4.5562890668466025, + 4.648574813628143, + -879.7479999999999 + ], + "target": [ + -7.40869531436283, + 7.452817777269203, + -879.7479999999999 + ], + "yaw": -45.487830534998494, + "pitch": 0.0, + "focus": [ + -9.548, + 9.556, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "closeup_side": "outside", + "closeup_preferred_normal": [ + 0.7131015618790567, + -0.7010607409102652, + 0.0 + ], + "camera_target_distance_m": 4.000000000000001, + "route_distance_m": 374.929, + "requested_route_distance_m": 374.929, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-2-4m-outside.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-4m-outside.vfmesh", + "drawn_triangles": 475906, + "source_triangles": 507626, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 374.929, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.0, + "closeup_target_surface_distance_m": 1.7280841589725482, + "closeup_predicted_target_offset_m": 1.7280841589725482, + "closeup_wall_normal_alignment": 0.6707889779439669, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -7.47193274788199, + 5.182168353356822, + -879.6783722112204 + ], + "target_actual_m": [ + -7.306445568768645, + 9.17777802625833, + -879.7662205769708 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-4m-outside-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-4m-outside-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-4m-outside-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-2-4m-interior-wall", + "passage": "passage/2-3/0", + "kind": "open-air-close", + "station": "section-2/4m-interior-wall", + "camera": [ + -11.533986119377625, + 6.164550123765492, + -880.4395357921604 + ], + "target": [ + -8.149320771422074, + 8.180937668487475, + -879.7479999999999 + ], + "yaw": 59.215963829172296, + "pitch": 9.955540417812847, + "focus": [ + -9.548, + 9.556, + -877.478 + ], + "center_z": -877.478, + "open_air_section": 2, + "closeup_side": "interior-wall", + "closeup_preferred_normal": [ + -0.7131015618790567, + 0.7010607409102652, + -0.0 + ], + "camera_target_distance_m": 4.000000000000007, + "route_distance_m": 374.929, + "requested_route_distance_m": 374.929, + "route_length_m": 494.0722798830563, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-2-4m-interior-wall.png", + "scene": "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-4m-interior-wall.vfmesh", + "drawn_triangles": 486760, + "source_triangles": 515826, + "verified": true, + "pixel_quality_status": "pass", + "route_distance_actual_m": 374.929, + "route_station_adjustment_m": 0.0, + "closeup_camera_target_distance_m": 4.0, + "closeup_target_surface_distance_m": 1.0286227628002445, + "closeup_predicted_target_offset_m": 1.0286227628002445, + "closeup_wall_normal_alignment": 0.720019406420326, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "camera_actual_m": [ + -8.257109087497915, + 13.208090205453457, + -879.7612149430302 + ], + "target_actual_m": [ + -8.149320771422074, + 9.209558486938477, + -879.75 + ], + "logs": [ + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-4m-interior-wall-mesh.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-4m-interior-wall-render.log", + "Saved/Linux/l113/captures/after/passage-2-3-0-openair-2-4m-interior-wall-quality.log" + ] + } + ] +} diff --git a/Standalone/Source/StreamBenchmarkPipeline.h b/Standalone/Source/StreamBenchmarkPipeline.h index 8453638..f07e24c 100644 --- a/Standalone/Source/StreamBenchmarkPipeline.h +++ b/Standalone/Source/StreamBenchmarkPipeline.h @@ -3035,7 +3035,7 @@ namespace StandaloneStreamBenchmark const auto controls=passageSplineControls(passage); const auto floorProfile=passageSplineFloorProfile(passage); const auto segments=VoxelForgeCore::PassageSpline::BuildSegments( - controls,routeEnd,1.0,1.0,floorProfile); + controls,routeEnd,8.0,1.0,floorProfile,0.025); const auto consider=[&](double distance,double radius) { minimumRadius=std::min(minimumRadius,radius); @@ -3070,7 +3070,7 @@ namespace StandaloneStreamBenchmark const auto controls=passageSplineControls(passage); const auto floorProfile=passageSplineFloorProfile(passage); const auto segments=VoxelForgeCore::PassageSpline::BuildSegments( - controls,routeEnd,1.0,1.0,floorProfile); + controls,routeEnd,8.0,1.0,floorProfile,0.025); const auto effectiveCenterZ=[&](const auto& point,double plannedFloor) { return plannedFloor+passageTubeDepthAt(point[3],bodyDepth); @@ -3125,7 +3125,7 @@ namespace StandaloneStreamBenchmark const std::size_t routeEnd=std::clamp( passage.lowerMouthControlIndex,1,passage.controlPoints.size()-1); const auto segments=VoxelForgeCore::PassageSpline::BuildSegments( - controls,routeEnd,1.0,1.0,floorProfile); + controls,routeEnd,8.0,1.0,floorProfile,0.025); if(!segments.empty()) { blend.mouthX=segments.front().a[0]; @@ -3232,16 +3232,6 @@ namespace StandaloneStreamBenchmark bestRoundDistance+radius); const double verticalWallAlignment=std::clamp( -(zMetres-centerZ)/distanceToCenter,0.0,1.0); - const double wallReliefWeight=0.05+0.95 - *(1.0-verticalWallAlignment); - const float relief=VF_FieldPassageWallRelief( - static_cast(xMetres/coreMetres), - static_cast(yMetres/coreMetres), - static_cast(zMetres/coreMetres), - static_cast(World.Seed)); - const double roughRoundDistance=bestRoundDistance - +static_cast(std::clamp(relief,-1.0f,1.0f)) - *WallReliefMetres*wallReliefWeight; const auto& aFloor=route[bestSegment-1]; const auto& bFloor=route[bestSegment]; const double floorDx=bFloor.x-aFloor.x; @@ -3252,6 +3242,21 @@ namespace StandaloneStreamBenchmark +(yMetres-aFloor.y)*floorDy)/horizontalSquared,0.0,1.0):t; const double floorCenterZ=passageFloorAtXY(passageIndex, xMetres,yMetres,std::lerp(aFloor.floorZ,bFloor.floorZ,floorT)); + const double wallElevationMetres=zMetres-floorCenterZ; + const double crestFade=std::clamp((1.0-wallElevationMetres)/0.25, + 0.0,1.0); + const double smoothCrestFade=crestFade*crestFade + *(3.0-2.0*crestFade); + const double wallReliefWeight=(0.05+0.95 + *(1.0-verticalWallAlignment))*smoothCrestFade; + const float relief=VF_FieldPassageWallRelief( + static_cast(xMetres/coreMetres), + static_cast(yMetres/coreMetres), + static_cast(zMetres/coreMetres), + static_cast(World.Seed)); + const double roughRoundDistance=bestRoundDistance + +static_cast(std::clamp(relief,-1.0f,1.0f)) + *WallReliefMetres*wallReliefWeight; const double floorDistance=floorCenterZ-zMetres; const double blend=std::max(CornerBlendMetres- std::abs(roughRoundDistance-floorDistance),0.0)/CornerBlendMetres; @@ -4033,6 +4038,7 @@ namespace StandaloneStreamBenchmark }; constexpr double PassageShellAuditSpacingMetres=0.25; constexpr std::array PassageShellAuditDepthsMetres{{0.125,0.375}}; + constexpr float PassageShellDensityTolerance=1.0e-6f; const auto expectedPassageShellAt=[&](double xMetres,double yMetres, double zMetres) { @@ -4170,8 +4176,8 @@ namespace StandaloneStreamBenchmark const bool shellExpected=depth+0.011 =0.0f) - ||(!shellExpected&&density<0.0f)) + if((shellExpected&&density>=PassageShellDensityTolerance) + ||(!shellExpected&&density<-PassageShellDensityTolerance)) { ++audit.floorViolations; if(audit.firstViolationCount=0 - &&((shellExpected==1&&density>=0.0f) - ||(shellExpected==0&&density<0.0f))) + &&((shellExpected==1 + &&density>=PassageShellDensityTolerance) + ||(shellExpected==0 + &&density<-PassageShellDensityTolerance))) { ++audit.wallViolations; if(audit.firstWallViolationCount diff --git a/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v220.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v220.baseline new file mode 100644 index 0000000..6e8c6c7 --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v220.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0x91931a57a067fd92 mesh=0xa818654be89790ac payload=0x370ff80451105a39 topology=0x06e507557aa70173 +[PipelineWholeViewHash] tiles=2370 density=0xbfae1fa5dba170d6 mesh=0xe7b37fa7a2a0c251 payload=0x0cc21cc96a70ad5a topology=0xe930ccebdfe78935 +[PipelineLODHash] lod=0 tiles=512 density=0x2fd4c78685a43cfe mesh=0x50478cff1c1f8ca0 payload=0x54e48e57e0af26de topology=0x860c011cfdb9833a +[PipelineLODHash] lod=1 tiles=448 density=0x4b8d9a6dcd2942ad mesh=0x17e89b7087bfe711 payload=0x2389c109eb780db6 topology=0x7eccd4cf560d0630 +[PipelineLODHash] lod=2 tiles=320 density=0x944d0d019ab80d3a mesh=0x0c2f9d65fc90702e payload=0x78868bc6c75a66a0 topology=0x51bc901cc030f64b +[PipelineLODHash] lod=3 tiles=208 density=0xeff7152574a49e31 mesh=0x855d44b1e644ab5b payload=0xe8631aa2adb95228 topology=0xe4770e9c1a880ef8 +[PipelineLODHash] lod=4 tiles=240 density=0xfb11591772a3d18e mesh=0xebf2baee8764591b payload=0xe491d7ac9c0061ad topology=0xd618ac33b95ce494 +[PipelineLODHash] lod=5 tiles=144 density=0x2f8b7b7fb1e67258 mesh=0x4cd508cbe97344fd payload=0x2b6e96a6050458c9 topology=0x4ff6d0eda8988573 +[PipelineLODHash] lod=6 tiles=96 density=0x0114a34c8b8d6113 mesh=0xb1fec4d01ae1fa44 payload=0x3e50cfd429b8e950 topology=0x08090c96d15c1618 +[PipelineLODHash] lod=7 tiles=96 density=0x3836ed8cfce73418 mesh=0x40bc6589c5fc1aac payload=0x677349bcae16790f topology=0x36e3aa53192e6a6b +[PipelineLODHash] lod=8 tiles=306 density=0x144f3c1fd722708b mesh=0xef77b28bf7fd9453 payload=0xe3f47b37fcd61489 topology=0x5a3c73e295494e04 +[PipelineExactQueryHash] probes=9 density=0x7b7c50ac24ccadcc unclamped=0x7b7c50ac24ccadcc detail=0xefcba20c0c70c415 collision=0xe604823a249029bf path=direct-Core-queries diff --git a/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v220.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v220.baseline new file mode 100644 index 0000000..8f760eb --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v220.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0xace56c8f205238ad mesh=0xa9c603a1248de6b8 payload=0xea55f1f4fcc6a894 topology=0x5ea7bc78a1b678ae +[PipelineWholeViewHash] tiles=2370 density=0xd90f371b71f0c87b mesh=0x547bf0776cba5998 payload=0x160a59a73597bf71 topology=0xd87c11128214e4d7 +[PipelineLODHash] lod=0 tiles=512 density=0xcd6ab28cfa504aca mesh=0xf03dc80a669fca31 payload=0x397aded1c3d2d297 topology=0xb4a1dc84fabc1fe3 +[PipelineLODHash] lod=1 tiles=448 density=0xce6e713828b2a20a mesh=0x1cf408c25d67d18c payload=0x8a2b5d20571c997e topology=0x51cd985fe8e7d100 +[PipelineLODHash] lod=2 tiles=320 density=0xd810d83e56b91fa2 mesh=0xb15854f2a64b81bf payload=0x32683ea168ba19fd topology=0xe8e5b770fa830d13 +[PipelineLODHash] lod=3 tiles=208 density=0x466c1d3bd7f69d9d mesh=0x54407050bff65fdf payload=0xfe2f7ff9e3e7e97d topology=0x2663680e42a4dcdd +[PipelineLODHash] lod=4 tiles=240 density=0x0be8798407724eaf mesh=0x131c303cbbe51434 payload=0x2a90ecf0a2411ca0 topology=0xe3e054a371152e08 +[PipelineLODHash] lod=5 tiles=144 density=0xf20897ad272103a9 mesh=0x13d00b6253ae1f72 payload=0x0db3880693a962fa topology=0x462bd87a80f15e89 +[PipelineLODHash] lod=6 tiles=96 density=0xc040fcac457d6313 mesh=0x1ed132eeb718fb62 payload=0xcd0214e35577c6e3 topology=0x2c56c69e6fdcfd64 +[PipelineLODHash] lod=7 tiles=96 density=0xc2d419446355fdb8 mesh=0x4ea44452574fc84b payload=0xfd9779bedfc9ae0f topology=0x8948546e770c9b72 +[PipelineLODHash] lod=8 tiles=306 density=0x62db31696f2da831 mesh=0xd373f9e9481532fe payload=0x540a60526e0e3e46 topology=0xc725cb901e6dc335 +[PipelineExactQueryHash] probes=9 density=0xc949c4df2ce6f9d9 unclamped=0xc949c4df2ce6f9d9 detail=0x114c501e2d830d94 collision=0xe6011d3a248d4849 path=direct-Core-queries diff --git a/Standalone/Tools/verify/verify.py b/Standalone/Tools/verify/verify.py index a3da90a..89bc566 100644 --- a/Standalone/Tools/verify/verify.py +++ b/Standalone/Tools/verify/verify.py @@ -122,11 +122,11 @@ RECIPE_RE = re.compile( def owner_hash_baseline(recipe: str, style: int) -> tuple[Path, str]: if recipe == "surface-world" and style == 1: - return (BASELINES / "owner-hash/canonical/owner-hash-surface-world-style1-v219.baseline", - "L112-v219-horizontal-spline-planned-grade-half-pipe") + return (BASELINES / "owner-hash/canonical/owner-hash-surface-world-style1-v220.baseline", + "L113-v220-adaptive-spline-rounded-half-pipe") if recipe == "floating-islands" and style == 2: - return (BASELINES / "owner-hash/canonical/owner-hash-floating-islands-style2-v219.baseline", - "L112-v219-horizontal-spline-planned-grade-half-pipe") + return (BASELINES / "owner-hash/canonical/owner-hash-floating-islands-style2-v220.baseline", + "L113-v220-adaptive-spline-rounded-half-pipe") raise VerificationFailure(f"no pinned owner hash baseline for {recipe} style {style}")