diff --git a/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h b/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h index e546f79..c2344ed 100644 --- a/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h +++ b/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h @@ -469,7 +469,10 @@ namespace VoxelForgeCore // Version 211 makes coordinate biasing in the shared cell hash unsigned, removing signed-overflow UB. // Version 212 balances generated entry routes against existing walk lanes and preserves their shared treads. // Version 217 replaces passage supports with flat-floor hollow-shell geometry. - inline constexpr std::uint32_t WorldAssemblyEvaluatorVersion = 217; + // Version 256 widens the smooth union across neighboring shell spans to + // remove their regularly spaced end-profile bands. + // Version 257 reuses passage chord distances for the shell to avoid duplicate curve work. + inline constexpr std::uint32_t WorldAssemblyEvaluatorVersion = 257; enum class FieldChannel : std::uint32_t { diff --git a/Standalone/Core/src/ShapeWorldInternal.h b/Standalone/Core/src/ShapeWorldInternal.h index f6c049d..cd474cf 100644 --- a/Standalone/Core/src/ShapeWorldInternal.h +++ b/Standalone/Core/src/ShapeWorldInternal.h @@ -261,14 +261,17 @@ public: struct FPassageSweepSample { double signedDistance=std::numeric_limits::infinity(); - double shellSignedDistance=std::numeric_limits::infinity(); double roundSignedDistance=std::numeric_limits::infinity(); double centerZSubvoxels=0.0,floorCenterZSubvoxels=0.0; double radiusSubvoxels=0.0,floorDepthSubvoxels=0.0; double t=0.0; std::uint32_t segmentIndex=std::numeric_limits::max(); + double shellSignedDistance=std::numeric_limits::infinity(); + std::uint32_t shellSegmentIndex=std::numeric_limits::max(); + double previousShellDistance=std::numeric_limits::infinity(); + double previousShellBlendWeight=0.0; float wallRelief=0.0f; - bool valid=false,hasWallRelief=false; + bool valid=false,shellValid=false,hasWallRelief=false; }; struct FPassageTileSweepData { @@ -1195,13 +1198,16 @@ public: ||!std::isfinite(Y)||!std::isfinite(Z))return density; constexpr double Q=static_cast(VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel); constexpr double FloorShellThicknessMetres=0.75; + constexpr double WallShellThicknessMetres=0.75; + constexpr double ShellClearanceMetres=0.60; constexpr double WallReliefMetres=0.21; constexpr double MouthShellBlendMetres=5.0; const double qPerMetre=Q*1000000.0/ std::max(1,ResolvedLayout->coreVoxelSizeMicrometres); const double qx=static_cast(X)*Q,qy=static_cast(Y)*Q, qz=static_cast(Z)*Q; - const double shellThickness=FloorShellThicknessMetres*qPerMetre; + const double floorShellThicknessBase=FloorShellThicknessMetres*qPerMetre; + const double wallShellThickness=WallShellThicknessMetres*qPerMetre; const auto* passageTileQueries=ActivePassageTileQueries; const bool passageTileScopeMatches=passageTileQueries &&passageTileQueries->matches(*this); @@ -1212,7 +1218,6 @@ public: struct FNearestTubeSample { double signedDistance=std::numeric_limits::infinity(); - double shellSignedDistance=std::numeric_limits::infinity(); double roundSignedDistance=std::numeric_limits::infinity(); double centerZ=0.0,floorCenterZ=0.0,radius=0.0,floorDepth=0.0,t=0.0; std::size_t segmentIndex=0; @@ -1232,7 +1237,7 @@ public: continue; const auto& constants=PassageComposerConstants[passageIndex]; - FNearestTubeSample nearest; + FNearestTubeSample nearest,nearestShell; const bool usePreparedSweep=passageTileScopeMatches &&passageTileQueries->hasSweptTubeBase(); const auto* swept=usePreparedSweep @@ -1240,7 +1245,6 @@ public: if(swept) { nearest.signedDistance=swept->signedDistance; - nearest.shellSignedDistance=swept->shellSignedDistance; nearest.roundSignedDistance=swept->roundSignedDistance; nearest.segmentIndex=swept->segmentIndex; nearest.t=swept->t; @@ -1250,6 +1254,10 @@ public: nearest.floorDepth=swept->floorDepthSubvoxels; nearest.valid=true; nearest.swept=swept; + nearestShell.signedDistance=swept->shellSignedDistance; + nearestShell.segmentIndex=swept->shellSegmentIndex; + nearestShell.valid=swept->shellValid; + nearestShell.swept=swept; } else { @@ -1265,7 +1273,17 @@ public: const std::ptrdiff_t lastIndex=static_cast( passage.controlPoints.size())-1; + constexpr double ShellJoinBlendMetres=6.00; double bestDistance=std::numeric_limits::infinity(); + double bestShellSearchBound=std::numeric_limits::infinity(); + struct FShellCandidate + { + double distance=std::numeric_limits::infinity(); + std::size_t segmentIndex=0; + double blendWeight=1.0; + }; + std::array shellCandidates{}; + std::size_t shellCandidateCount=0; const auto visitSegment=[&](std::size_t segmentIndex,int) { if(passageProfile)++passageProfile->passageCarveSegmentVisits; @@ -1275,13 +1293,12 @@ public: +(qy-segment.a[1])*segment.delta[1] +(qz-segment.a[2])*segment.delta[2]; const double t=std::clamp(projection/segment.lengthSq,0.0,1.0); - double cx=segment.a[0]+t*segment.delta[0]; - double cy=segment.a[1]+t*segment.delta[1]; - double cz=segment.a[2]+t*segment.delta[2]; + const double cx=segment.a[0]+t*segment.delta[0]; + const double cy=segment.a[1]+t*segment.delta[1]; + const double cz=segment.a[2]+t*segment.delta[2]; const double radius=segment.radiusA+t*segment.radiusDelta; const double ex=qx-cx,ey=qy-cy,ez=qz-cz; - const double roundDistance=DeterministicSqrt( - ex*ex+ey*ey+ez*ez)-radius; + const double roundDistance=DeterministicSqrt(ex*ex+ey*ey+ez*ez)-radius; const double floorT=segment.horizontalLengthSq>1.0e-12 ?std::clamp(((qx-segment.a[0])*segment.delta[0] +(qy-segment.a[1])*segment.delta[1]) @@ -1308,15 +1325,11 @@ public: nearest.floorDepth=floorDepth; nearest.valid=true; } + }; VisitNearestPassageSegmentRange(passageIndex,0,lastIndex-1, qx,qy,qz,0,bestDistance,visitSegment); - // Shells form a union over nearby route segments, even when another - // segment supplies the nearest interior distance. The hierarchy bound - // is deliberately wider than the shell so its radius and corner blend - // cannot prune a segment that contributes a boundary shell. - double shellSearchBound=2.0*qPerMetre; const auto visitShellSegment=[&](std::size_t segmentIndex,int) { const auto& segment=PassageSegmentData[passageIndex][segmentIndex]; @@ -1329,8 +1342,9 @@ public: const double cy=segment.a[1]+t*segment.delta[1]; const double cz=segment.a[2]+t*segment.delta[2]; const double radius=segment.radiusA+t*segment.radiusDelta; - const double ex=qx-cx,ey=qy-cy,ez=qz-cz; - const double roundDistance=DeterministicSqrt(ex*ex+ey*ey+ez*ez)-radius; + const double dx=qx-cx,dy=qy-cy,dz=qz-cz; + const double roundDistance=DeterministicSqrt(dx*dx+dy*dy+dz*dz) + -radius; const double floorT=segment.horizontalLengthSq>1.0e-12 ?std::clamp(((qx-segment.a[0])*segment.delta[0] +(qy-segment.a[1])*segment.delta[1]) @@ -1341,13 +1355,14 @@ public: const double floorCenterZ=PassageFlatFloorCenterZSubvoxels( constants,segmentIndex,floorT,segment,floorDepth,qPerMetre); const double flatDistance=PassageFlatBottomDistance( - static_cast(roundDistance),floorCenterZ,qz,floorDepth,qPerMetre); + static_cast(roundDistance),floorCenterZ,qz,floorDepth, + qPerMetre); const double alongMetres=segment.authoredAlongMetres +t*segment.authoredLengthMetres; const double mouthDistanceMetres=std::max(0.0,std::min(alongMetres, constants.totalPathLengthMetres-alongMetres)); - const double shellFade=std::clamp(mouthDistanceMetres/ - MouthShellBlendMetres,0.0,1.0); + const double shellFade=std::clamp(mouthDistanceMetres + /MouthShellBlendMetres,0.0,1.0); const double smoothShellFade=shellFade*shellFade *(3.0-2.0*shellFade); const double floorDistanceMetres=(floorCenterZ-floorDepth-qz) @@ -1355,32 +1370,91 @@ 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 floorAlongMetres=segment.authoredAlongMetres + +floorT*segment.authoredLengthMetres; + const double floorMouthDistanceMetres=std::max(0.0, + std::min(floorAlongMetres,constants.totalPathLengthMetres + -floorAlongMetres)); + const double floorShellFade=std::clamp(floorMouthDistanceMetres + /MouthShellBlendMetres,0.0,1.0); + const double smoothFloorShellFade=floorShellFade*floorShellFade + *(3.0-2.0*floorShellFade); const double mouthWallThickness=segmentIndex =constants.routeEndControlIndex) { - const double pastMouthMetres=std::max(0.0,alongMetres + const double pastMouthMetres=std::max(0.0,floorAlongMetres -constants.totalPathLengthMetres); const double extensionFade=std::clamp(1.0 -pastMouthMetres/MouthShellBlendMetres,0.0,1.0); floorExtensionFade=extensionFade*extensionFade *(3.0-2.0*extensionFade); } - const double floorShellThickness=smoothFloorBlend*shellThickness - *floorExtensionFade*smoothShellFade; + const double floorShellThickness=smoothFloorBlend + *floorShellThicknessBase*floorExtensionFade + *smoothFloorShellFade; + const double shellClearanceT=std::clamp( + (mouthDistanceMetres-5.0)/15.0,0.0,1.0); + const double shellClearanceFade=shellClearanceT*shellClearanceT + *(3.0-2.0*shellClearanceT); const double localThickness=std::max(mouthWallThickness, - floorShellThickness); - const double localShellDistance=std::max(-static_cast(flatDistance), - static_cast(flatDistance)-localThickness); - nearest.shellSignedDistance=std::min(nearest.shellSignedDistance, - localShellDistance); + floorShellThickness)+ShellClearanceMetres*qPerMetre + *shellClearanceFade; + const double joinBlendT=std::clamp(mouthDistanceMetres/15.0, + 0.0,1.0); + const double joinBlendWeight=joinBlendT*joinBlendT + *(3.0-2.0*joinBlendT); + const double localOuterDistance=flatDistance-localThickness; + FShellCandidate candidate{localOuterDistance,segmentIndex, + joinBlendWeight}; + std::size_t insertAt=0; + while(insertAtinsertAt;--move) + shellCandidates[move]=shellCandidates[move-1]; + shellCandidates[insertAt]=candidate; + shellCandidateCount=newCount; + } + bestShellSearchBound=std::min(bestShellSearchBound, + localOuterDistance+wallShellThickness + +ShellClearanceMetres*qPerMetre + +(0.25+ShellJoinBlendMetres)*qPerMetre); }; VisitNearestPassageSegmentRange(passageIndex,0,lastIndex-1, - qx,qy,qz,0,shellSearchBound,visitShellSegment); + qx,qy,qz,0,bestShellSearchBound,visitShellSegment); + if(shellCandidateCount>0) + { + nearestShell.signedDistance=shellCandidates[0].distance; + nearestShell.segmentIndex=shellCandidates[0].segmentIndex; + for(std::size_t left=0;left1.0e-9 @@ -1402,43 +1476,9 @@ public: const double shapedDistance=PassageFlatBottomDistance( static_cast(roughRoundDistance),nearest.floorCenterZ,qz, nearest.floorDepth,qPerMetre); - const auto& segment=PassageSegmentData[passageIndex][nearest.segmentIndex]; - const double alongMetres=segment.authoredAlongMetres - +nearest.t*segment.authoredLengthMetres; - const double mouthDistanceMetres=std::max(0.0,std::min(alongMetres, - constants.totalPathLengthMetres-alongMetres)); - const double shellFade=std::clamp(mouthDistanceMetres/ - MouthShellBlendMetres,0.0,1.0); - const double smoothShellFade=shellFade*shellFade*(3.0-2.0*shellFade); - // Ease both wall and floor shell into the host ground over five metres. - // The floor shell remains below the floor plane throughout that blend. - const double floorDistanceMetres=(nearest.floorCenterZ - -nearest.floorDepth-qz)/qPerMetre; - const double floorBlend=std::clamp(floorDistanceMetres/0.25,0.0,1.0); - const double smoothFloorBlend=floorBlend*floorBlend - *(3.0-2.0*floorBlend); - const double mouthWallThickness=nearest.segmentIndex - =constants.routeEndControlIndex) - { - const double pastMouthMetres=std::max(0.0,alongMetres - -constants.totalPathLengthMetres); - const double extensionFade=std::clamp(1.0 - -pastMouthMetres/MouthShellBlendMetres,0.0,1.0); - floorExtensionFade=extensionFade*extensionFade - *(3.0-2.0*extensionFade); - } - const double floorShellThickness=smoothFloorBlend*shellThickness - *floorExtensionFade*smoothShellFade; - const double localShellThickness=std::max(mouthWallThickness, - floorShellThickness); unionDistance=std::min(unionDistance,static_cast(shapedDistance)); - const double localShellDistance=std::max(-static_cast(shapedDistance), - static_cast(shapedDistance)-localShellThickness); unionShellDistance=std::min(unionShellDistance, - std::min(localShellDistance,nearest.shellSignedDistance)); + nearestShell.signedDistance); } if(!std::isfinite(unionDistance))return density; @@ -1592,7 +1632,7 @@ public: const auto& p3=passage.controlPoints[ std::min(segment+2,passage.controlPoints.size()-1)]; const double radius=std::max(static_cast(a.radiusSubvoxels), - static_cast(b.radiusSubvoxels))/Q+1.0; + static_cast(b.radiusSubvoxels))/Q+2.36; double low[3]{},high[3]{}; for(int axis=0;axis<3;++axis) { @@ -3371,6 +3411,8 @@ private: struct FPassageSegmentData { std::array a{},b{},delta{}; + std::array,3> shellCurveCoefficients{}; + std::array shellCurveMinimum{},shellCurveMaximum{}; std::array sweepMinimumSubvoxels{},sweepMaximumSubvoxels{}; double authoredCenterZA=0.0,authoredCenterZDelta=0.0; double authoredAlongMetres=0.0,authoredLengthMetres=0.0; @@ -3432,6 +3474,128 @@ private: return SmoothMaxDistance(roundDistanceSubvoxels,floorDistance, static_cast(CornerBlendMetres*qPerMetre)); } + static double PassageSmoothMinDistance(double a,double b,double width) + { + if(!(width>0.0))return std::min(a,b); + const double h=std::max(width-std::abs(a-b),0.0)/width; + return std::min(a,b)-(h*h*h)*(width/6.0); + } + static double PassageCurveCoordinate( + const std::array& coefficients,double t) + { + return ((coefficients[3]*t+coefficients[2])*t+coefficients[1])*t + +coefficients[0]; + } + static double PassageCurveCoordinateExtended( + const std::array& coefficients,double t) + { + if(t<0.0)return coefficients[0]+coefficients[1]*t; + if(t>1.0) + { + const double end=PassageCurveCoordinate(coefficients,1.0); + const double tangent=3.0*coefficients[3]+2.0*coefficients[2] + +coefficients[1]; + return end+(t-1.0)*tangent; + } + return PassageCurveCoordinate(coefficients,t); + } + static void PassageCurveEvaluateExtended( + const std::array& coefficients,double t, + double& coordinate,double& tangent,double& curvature) + { + if(t<0.0) + { + coordinate=coefficients[0]+coefficients[1]*t; + tangent=coefficients[1]; + curvature=0.0; + } + else if(t>1.0) + { + const double end=PassageCurveCoordinate(coefficients,1.0); + tangent=3.0*coefficients[3]+2.0*coefficients[2]+coefficients[1]; + coordinate=end+(t-1.0)*tangent; + curvature=0.0; + } + else + { + coordinate=PassageCurveCoordinate(coefficients,t); + tangent=(3.0*coefficients[3]*t+2.0*coefficients[2])*t + +coefficients[1]; + curvature=6.0*coefficients[3]*t+2.0*coefficients[2]; + } + } + static void PassageCurveAxisBounds(const std::array& coefficients, + double& minimum,double& maximum,double tMinimum=0.0,double tMaximum=1.0) + { + minimum=std::min(PassageCurveCoordinate(coefficients,tMinimum), + PassageCurveCoordinate(coefficients,tMaximum)); + maximum=std::max(PassageCurveCoordinate(coefficients,tMinimum), + PassageCurveCoordinate(coefficients,tMaximum)); + const double a=3.0*coefficients[3],b=2.0*coefficients[2],c=coefficients[1]; + const auto include=[&](double t) + { + if(t<=tMinimum||t>=tMaximum)return; + const double value=PassageCurveCoordinate(coefficients,t); + minimum=std::min(minimum,value); + maximum=std::max(maximum,value); + }; + if(std::abs(a)<=1.0e-18) + { + if(std::abs(b)>1.0e-18)include(-c/b); + return; + } + const double discriminant=b*b-4.0*a*c; + if(discriminant<0.0)return; + const double root=DeterministicSqrt(discriminant); + include((-b-root)/(2.0*a)); + include((-b+root)/(2.0*a)); + } + static double PassageCatmullRoundDistanceSubvoxels( + const std::vector& segments,std::size_t segmentIndex, + double qx,double qy,double qz,double extensionSubvoxels=0.0, + double* outT=nullptr) + { + if(segmentIndex>=segments.size())return std::numeric_limits::infinity(); + const auto& segment=segments[segmentIndex]; + if(segment.lengthSq<=0.0)return std::numeric_limits::infinity(); + const double projection=(qx-segment.a[0])*segment.delta[0] + +(qy-segment.a[1])*segment.delta[1] + +(qz-segment.a[2])*segment.delta[2]; + const double tExtension=std::max(0.0,extensionSubvoxels) + /std::max(1.0,segment.lengthSubvoxels); + const double tMinimum=-tExtension,tMaximum=1.0+tExtension; + double t=std::clamp(projection/segment.lengthSq,tMinimum,tMaximum); + for(int iteration=0;iteration<4;++iteration) + { + double firstDerivative=0.0,secondDerivative=0.0; + const double query[3]={qx,qy,qz}; + for(std::size_t axis=0;axis<3;++axis) + { + const auto& c=segment.shellCurveCoefficients[axis]; + double center=0.0,tangent=0.0,curvature=0.0; + PassageCurveEvaluateExtended(c,t,center,tangent,curvature); + const double difference=center-query[axis]; + firstDerivative+=difference*tangent; + secondDerivative+=tangent*tangent+difference*curvature; + } + if(std::abs(secondDerivative)<=1.0e-12)break; + const double next=std::clamp(t-firstDerivative/secondDerivative, + tMinimum,tMaximum); + if(std::abs(next-t)<=1.0e-9){t=next;break;} + t=next; + } + double distanceSq=0.0; + const double query[3]={qx,qy,qz}; + for(std::size_t axis=0;axis<3;++axis) + { + const auto& c=segment.shellCurveCoefficients[axis]; + const double center=PassageCurveCoordinateExtended(c,t); + const double difference=query[axis]-center; + distanceSq+=difference*difference; + } + if(outT)*outT=t; + return DeterministicSqrt(distanceSq)-(segment.radiusA+t*segment.radiusDelta); + } struct FPassageNearestNode { std::array minimum{},maximum{}; @@ -4232,10 +4396,10 @@ private: const auto& prepared=PassageSegmentData[passageIndex][segment]; for(std::size_t axis=0;axis<3;++axis) { - node.minimum[axis]=std::min({node.minimum[axis], - prepared.a[axis],prepared.b[axis]}); - node.maximum[axis]=std::max({node.maximum[axis], - prepared.a[axis],prepared.b[axis]}); + node.minimum[axis]=std::min(node.minimum[axis], + prepared.shellCurveMinimum[axis]); + node.maximum[axis]=std::max(node.maximum[axis], + prepared.shellCurveMaximum[axis]); } node.maximumRadius=std::max({node.maximumRadius, static_cast(a.radiusSubvoxels),static_cast(b.radiusSubvoxels)}); @@ -4617,6 +4781,78 @@ private: static_cast(passage.controlPoints[pointIndex].positionSubvoxels[2]) +(-routeDepth+localTubeDepth)*qPerMetre; } + std::vector> shellControlPoints( + segmentData.size()+1); + for(std::size_t pointIndex=0;pointIndex(passage.controlPoints[pointIndex] + .positionSubvoxels[axis]); + } + const auto authoredShellControlPoints=shellControlPoints; + for(std::size_t pointIndex=1;pointIndex+120.0||nextSpan>20.0)continue; + const double alongMetres=authoredPathDistanceMetres[pointIndex]; + const double mouthDistance=std::max(0.0,std::min(alongMetres, + authoredTotalPathLengthMetres-alongMetres)); + const double fadeT=std::clamp((mouthDistance-80.0)/40.0,0.0,1.0); + const double fade=fadeT*fadeT*(3.0-2.0*fadeT); + const double neighborWeight=0.10*fade; + for(std::size_t axis=0;axis<2;++axis) + shellControlPoints[pointIndex][axis]= + (1.0-2.0*neighborWeight) + *authoredShellControlPoints[pointIndex][axis] + +neighborWeight*authoredShellControlPoints[pointIndex-1][axis] + +neighborWeight*authoredShellControlPoints[pointIndex+1][axis]; + } + std::vector> shellSecondDerivatives( + shellControlPoints.size()); + const std::size_t interiorPointCount=shellControlPoints.size()-2; + for(std::size_t axis=0;axis<3;++axis) + { + std::vector diagonal(interiorPointCount); + std::vector upper(interiorPointCount); + std::vector lower(interiorPointCount); + std::vector rhs(interiorPointCount); + for(std::size_t row=0;row0) + { + shellSecondDerivatives[interiorPointCount][axis]= + rhs[interiorPointCount-1]/diagonal[interiorPointCount-1]; + for(std::size_t row=interiorPointCount-1;row>0;--row) + shellSecondDerivatives[row][axis]=(rhs[row-1] + -upper[row-1]*shellSecondDerivatives[row+1][axis]) + /diagonal[row-1]; + } + } for(std::size_t segmentIndex=0;segmentIndex0 + &&segmentData[segmentIndex-1].authoredLengthMetres>20.0) + ||(segmentIndex+120.0); + const bool useCurvedSpan=data.authoredLengthMetres<=20.0 + &&!hasLongNeighbor; + for(std::size_t axis=0;axis<3;++axis) + { + if(!useCurvedSpan) + { + data.shellCurveCoefficients[axis]={data.a[axis], + data.delta[axis],0.0,0.0}; + } + else + { + const double span=data.authoredLengthMetres; + const double p0=shellControlPoints[segmentIndex][axis]; + const double p1=shellControlPoints[segmentIndex+1][axis]; + const double m0=shellSecondDerivatives[segmentIndex][axis]; + const double m1=shellSecondDerivatives[segmentIndex+1][axis]; + data.shellCurveCoefficients[axis]={ + p0,p1-p0-span*span*(2.0*m0+m1)/6.0, + span*span*m0/2.0,span*span*(m1-m0)/6.0}; + } + PassageCurveAxisBounds(data.shellCurveCoefficients[axis], + data.shellCurveMinimum[axis],data.shellCurveMaximum[axis]); + // This tree also culls chord-based interior queries. Keep + // the authored chord inside broad-phase bounds after the + // shell-only centerline is smoothed. + data.shellCurveMinimum[axis]=std::min(data.shellCurveMinimum[axis], + std::min(data.a[axis],data.b[axis])); + data.shellCurveMaximum[axis]=std::max(data.shellCurveMaximum[axis], + std::max(data.a[axis],data.b[axis])); + } + } constants.totalPathLengthMetres=authoredTotalPathLengthMetres; PassageSegmentOffsets[passageIndex+1]=preparedSegments; } @@ -4675,7 +4949,7 @@ private: PassageNearestNodes.resize(ResolvedLayout?ResolvedLayout->passages.size():0); if(!ResolvedLayout||ResolvedLayout->passages.empty())return; constexpr double Q=static_cast(VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel); - constexpr double PassageShellMetres=0.75; + constexpr double PassageShellMetres=2.35; constexpr double ReliefMetres=0.21; constexpr double SweepReachMetres=4.0; for(std::size_t passageIndex=0;passageIndexpassages.size(); @@ -4698,8 +4972,8 @@ private: std::array routeMinimum{},routeMaximum{}; for(std::size_t axis=0;axis<3;++axis) { - routeMinimum[axis]=std::min(prepared.a[axis],prepared.b[axis])/Q; - routeMaximum[axis]=std::max(prepared.a[axis],prepared.b[axis])/Q; + routeMinimum[axis]=prepared.shellCurveMinimum[axis]/Q; + routeMaximum[axis]=prepared.shellCurveMaximum[axis]/Q; } const double routeExtent=maximumRadius+PassageShellMetres +ReliefMetres+0.01; @@ -11286,6 +11560,11 @@ inline void FStandaloneShapeWorld::FScopedPassageTileQueries::prepareSweptTubeBa { constexpr std::int64_t Q=VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel; constexpr double InfluenceMetres=4.0; + constexpr double FloorShellThicknessMetres=0.75; + constexpr double WallShellThicknessMetres=0.75; + constexpr double ShellClearanceMetres=0.60; + constexpr double MouthShellBlendMetres=5.0; + constexpr double ShellJoinBlendMetres=6.00; if(!shape_||step<=0||cells<=0||!std::isfinite(passageCarveReachMetres_) ||std::abs(passageCarveReachMetres_-InfluenceMetres)>1.0e-9)return; @@ -11306,8 +11585,6 @@ inline void FStandaloneShapeWorld::FScopedPassageTileQueries::prepareSweptTubeBa const double qPerMetre=static_cast(Q)*1000000.0/ std::max(1,shape_->ResolvedLayout ?shape_->ResolvedLayout->coreVoxelSizeMicrometres:250000); - const double shellThickness=0.75*qPerMetre; - constexpr double MouthShellBlendMetres=5.0; const double wallReliefShell=0.41*qPerMetre; const double floorDetailShell=1.0*qPerMetre; const bool profile=profileStats_!=nullptr; @@ -11363,17 +11640,16 @@ inline void FStandaloneShapeWorld::FScopedPassageTileQueries::prepareSweptTubeBa +static_cast(gz)*sweep->stepSubvoxels); const double projectionXY=(qx-segment.a[0])*segment.delta[0] +(qy-segment.a[1])*segment.delta[1]; - const double t=std::clamp((projectionXY + const double chordT=std::clamp((projectionXY +(qz-segment.a[2])*segment.delta[2])/segment.lengthSq,0.0,1.0); - double cx=segment.a[0]+t*segment.delta[0]; - double cy=segment.a[1]+t*segment.delta[1]; - double cz=segment.a[2]+t*segment.delta[2]; - const double radius=segment.radiusA+t*segment.radiusDelta; - const double ex=qx-cx,ey=qy-cy,ez=qz-cz; - const double signedDistance=FStandaloneShapeWorld::DeterministicSqrt( - ex*ex+ey*ey+ez*ez)-radius; + const double cx=segment.a[0]+chordT*segment.delta[0]; + const double cy=segment.a[1]+chordT*segment.delta[1]; + const double cz=segment.a[2]+chordT*segment.delta[2]; + const double radius=segment.radiusA+chordT*segment.radiusDelta; + const double dx=qx-cx,dy=qy-cy,dz=qz-cz; + const double signedDistance=DeterministicSqrt(dx*dx+dy*dy+dz*dz)-radius; const double floorT=segment.horizontalLengthSq>1.0e-12 - ?std::clamp(projectionXY/segment.horizontalLengthSq,0.0,1.0):t; + ?std::clamp(projectionXY/segment.horizontalLengthSq,0.0,1.0):chordT; const double floorRadius=segment.radiusA+floorT*segment.radiusDelta; const double floorDepth=FStandaloneShapeWorld::PassageFlatFloorDepthSubvoxels( constants,candidate.segmentIndex,floorT,floorRadius,qPerMetre); @@ -11382,6 +11658,54 @@ inline void FStandaloneShapeWorld::FScopedPassageTileQueries::prepareSweptTubeBa constants,candidate.segmentIndex,floorT,segment,floorDepth,qPerMetre); const double flatDistance=FStandaloneShapeWorld::PassageFlatBottomDistance( static_cast(signedDistance),floorCenterZ,qz,floorDepth,qPerMetre); + const double shellAlongMetres=segment.authoredAlongMetres + +chordT*segment.authoredLengthMetres; + const double mouthDistanceMetres=std::max(0.0,std::min(shellAlongMetres, + constants.totalPathLengthMetres-shellAlongMetres)); + const double shellFade=std::clamp(mouthDistanceMetres/ + MouthShellBlendMetres,0.0,1.0); + const double smoothShellFade=shellFade*shellFade*(3.0-2.0*shellFade); + const double floorDistanceMetres=(floorCenterZ-floorDepth-qz) + /qPerMetre; + const double floorBlend=std::clamp(floorDistanceMetres/0.25,0.0,1.0); + const double smoothFloorBlend=floorBlend*floorBlend + *(3.0-2.0*floorBlend); + const double floorAlongMetres=segment.authoredAlongMetres + +floorT*segment.authoredLengthMetres; + const double floorMouthDistanceMetres=std::max(0.0, + std::min(floorAlongMetres,constants.totalPathLengthMetres + -floorAlongMetres)); + const double floorShellFade=std::clamp(floorMouthDistanceMetres + /MouthShellBlendMetres,0.0,1.0); + const double smoothFloorShellFade=floorShellFade*floorShellFade + *(3.0-2.0*floorShellFade); + const double mouthWallThickness=candidate.segmentIndex + =constants.routeEndControlIndex) + { + const double pastMouthMetres=std::max(0.0,floorAlongMetres + -constants.totalPathLengthMetres); + const double extensionFade=std::clamp(1.0 + -pastMouthMetres/MouthShellBlendMetres,0.0,1.0); + floorExtensionFade=extensionFade*extensionFade + *(3.0-2.0*extensionFade); + } + const double floorShellThickness=smoothFloorBlend + *FloorShellThicknessMetres*qPerMetre*floorExtensionFade + *smoothFloorShellFade; + const double shellClearanceT=std::clamp( + (mouthDistanceMetres-5.0)/15.0,0.0,1.0); + const double shellClearanceFade=shellClearanceT*shellClearanceT + *(3.0-2.0*shellClearanceT); + const double shellThickness=std::max(mouthWallThickness, + floorShellThickness)+(ShellClearanceMetres*qPerMetre) + *shellClearanceFade; + const double joinBlendT=std::clamp(mouthDistanceMetres/15.0,0.0,1.0); + const double joinBlendWeight=joinBlendT*joinBlendT + *(3.0-2.0*joinBlendT); + const double localShellDistance=flatDistance-shellThickness; if(profile)++profileStats_->passageSweepSegmentSamplePairs; if(signedDistance>sweep->influenceSubvoxels) { @@ -11391,39 +11715,6 @@ inline void FStandaloneShapeWorld::FScopedPassageTileQueries::prepareSweptTubeBa *static_cast(sweep->dimension)+static_cast(gy)) *static_cast(sweep->dimension)+static_cast(gx); auto& sample=passageSamples.samples[sampleIndex]; - const double alongMetres=segment.authoredAlongMetres - +t*segment.authoredLengthMetres; - const double mouthDistanceMetres=std::max(0.0,std::min(alongMetres, - constants.totalPathLengthMetres-alongMetres)); - const double shellFade=std::clamp(mouthDistanceMetres/ - MouthShellBlendMetres,0.0,1.0); - const double smoothShellFade=shellFade*shellFade - *(3.0-2.0*shellFade); - const double floorDistanceMetres=(floorCenterZ-floorDepth-qz)/qPerMetre; - const double floorBlend=std::clamp(floorDistanceMetres/0.25,0.0,1.0); - const double smoothFloorBlend=floorBlend*floorBlend - *(3.0-2.0*floorBlend); - const double mouthWallThickness=candidate.segmentIndex - =constants.routeEndControlIndex) - { - const double pastMouthMetres=std::max(0.0,alongMetres - -constants.totalPathLengthMetres); - const double extensionFade=std::clamp(1.0 - -pastMouthMetres/MouthShellBlendMetres,0.0,1.0); - floorExtensionFade=extensionFade*extensionFade - *(3.0-2.0*extensionFade); - } - 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); - sample.shellSignedDistance=std::min(sample.shellSignedDistance, - localShellDistance); if(!sample.valid||flatDistance(candidate.segmentIndex); sample.valid=true; sample.hasWallRelief=false; if(profile)++profileStats_->passageSweepMinimumUpdates; } + if(!sample.shellValid) + { + sample.shellSignedDistance=localShellDistance; + sample.shellSegmentIndex=static_cast( + candidate.segmentIndex); + sample.previousShellDistance=localShellDistance; + sample.previousShellBlendWeight=joinBlendWeight; + sample.shellValid=true; + } + else + { + if(candidate.segmentIndex==sample.shellSegmentIndex+1) + sample.shellSignedDistance=std::min( + sample.shellSignedDistance, + FStandaloneShapeWorld::PassageSmoothMinDistance( + sample.previousShellDistance,localShellDistance, + ShellJoinBlendMetres*qPerMetre*std::min( + sample.previousShellBlendWeight, + joinBlendWeight))); + sample.shellSignedDistance=std::min(sample.shellSignedDistance, + localShellDistance); + sample.shellSegmentIndex=static_cast( + candidate.segmentIndex); + sample.previousShellDistance=localShellDistance; + sample.previousShellBlendWeight=joinBlendWeight; + } } } } @@ -11448,8 +11765,6 @@ inline void FStandaloneShapeWorld::FScopedPassageTileQueries::prepareSweptTubeBa for(auto& passageSamples:sweep->passages) { const std::size_t passageIndex=passageSamples.passageIndex; - const auto& constants=shape_->PassageComposerConstants[passageIndex]; - const auto& segments=shape_->PassageSegmentData[passageIndex]; for(std::size_t sampleIndex=0;sampleIndex(gy)*sweep->stepSubvoxels); const double qz=static_cast(sweep->gridMinimumSubvoxels[2] +static_cast(gz)*sweep->stepSubvoxels); + const double wallReliefShell=0.41*qPerMetre; const double radius=sample.radiusSubvoxels; const double centerZ=sample.centerZSubvoxels; + if(sample.shellValid) + sample.shellSignedDistance=std::max(-sample.signedDistance, + sample.shellSignedDistance); if(sample.signedDistance<=sweep->influenceSubvoxels) { anyPassageInfluence[sampleIndex]=1; diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/MakeL110ContactSheets.py b/Standalone/Research/WorldAssemblerM3/Linux110/MakeL110ContactSheets.py new file mode 100644 index 0000000..da7c385 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/MakeL110ContactSheets.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +"""Build review sheets for every L110 before/after passage capture.""" +from __future__ import annotations + +import subprocess +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[4] +CAPTURES = Path(__file__).resolve().parent / "captures" +SHEETS = CAPTURES / "contact-sheets" +GROUPS = { + "openair-view-1": ("*-openair-*-view-1.png", "3x3"), + "openair-view-2": ("*-openair-*-view-2.png", "3x3"), + "openair-view-3": ("*-openair-*-view-3.png", "3x3"), + "openair-closeups": ("*-openair-*-closeup-*.png", "3x4"), + "mouths": ("*-*-*-*-mouth.png", "3x2"), + "stations": ("*-station-*.png", "3x3"), +} + + +def build(variant: str, group: str, pattern: str, layout: str) -> int: + files = sorted((CAPTURES / variant).glob(pattern)) + if not files: + raise RuntimeError(f"no images matched {variant}/{pattern}") + columns, rows = (int(value) for value in layout.split("x")) + scale = "480:270" + output = SHEETS / f"{variant}-{group}.png" + command = ["ffmpeg", "-hide_banner", "-loglevel", "error", "-y", + "-f", "image2", "-pattern_type", "glob", "-framerate", "1", + "-i", str(CAPTURES / variant / pattern), "-vf", + f"scale={scale},tile={columns}x{rows}:nb_frames={columns*rows}:padding=6:margin=6", + "-frames:v", "1", str(output)] + result = subprocess.run(command, cwd=ROOT, check=False, + stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) + if result.returncode: + raise RuntimeError(f"ffmpeg failed for {variant}/{group}: {result.stderr.strip()}") + return len(files) + + +def main() -> int: + SHEETS.mkdir(parents=True, exist_ok=True) + rows = [] + for variant in ("before", "after"): + for group, (pattern, layout) in GROUPS.items(): + count = build(variant, group, pattern, layout) + rows.append(f"- [{variant} {group}]({variant}-{group}.png) — {count} views") + (SHEETS / "INDEX.md").write_text("# L110 capture contact sheets\n\n" + + "\n".join(rows) + "\n", encoding="utf-8") + print(f"contact sheets={len(rows)} captures={sum( + int(row.rsplit('— ', 1)[1].split()[0]) for row in rows)}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/REPORT.md b/Standalone/Research/WorldAssemblerM3/Linux110/REPORT.md new file mode 100644 index 0000000..3cdc0d1 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/REPORT.md @@ -0,0 +1,38 @@ +# Linux 110 — open-air tunnel shell + +Candidate evaluator v257, source stamp `04e9180521ab0963da5f1cabbf7c4646e32311edf1439c2dea514d3a61e7e464`. + +## Cause and fix + +The bands are the end profiles of per-control-span shell capsules. The affected 452.408 m open-air section touches 50 control spans: chord lengths are 8.520–10.076 m (median 9.353 m, mean 9.324 m). The visible band pitch follows that roughly 9.35 m span spacing. Radius delta is 0 across those spans, and the floor depth is constant, so radius/floor interpolation does not explain it. The 8 m tiles, 0.25 m voxels, and 0.75 m shell do not match the period. The pattern remains with tile skirts off; wall relief is unchanged. The chord/Catmull mismatch is not the periodic source. + +The shell now smooth-unions adjacent spans over 6 m and reuses the chord distance already calculated for the passage interior. A 0.60 m shell clearance fades in from 5 m to 20 m from each mouth. Interior carving still takes precedence, and the shell is written only into host air. The repeated bands are removed from the exposed shell close-ups. Regular faceting on tunnel-facing interior walls remains visible in both L109 and v257 station captures. + +## Captures + +The [capture index](captures/INDEX.md) flags every **OPEN AIR** view. The [verification](captures/capture-verification.json) passes all 106 images: per before/after set, 6 mouths, 9 stations, 27 open-air views, and 11 open-air close-ups. All 22 close-ups have a measured 4.000 m standoff. Nine images in each set are marked low contrast, with visible geometry. Paired bytes changed in 24/27 open-air views, 10/11 close-ups, 4/6 mouths, and 1/9 stations. + +The [contact sheets](captures/contact-sheets/INDEX.md) cover all views. The target 4 m close-ups are [before 1](captures/before/passage-0-1-0-openair-4-closeup-1.png), [after 1](captures/after/passage-0-1-0-openair-4-closeup-1.png), [before 2](captures/before/passage-0-1-0-openair-4-closeup-2.png), [after 2](captures/after/passage-0-1-0-openair-4-closeup-2.png), [before 3](captures/before/passage-0-1-0-openair-4-closeup-3.png), and [after 3](captures/after/passage-0-1-0-openair-4-closeup-3.png). + +## Readiness + +Five interleaved L80 pairs per cell; times are medians in seconds (`LOD0–2 near-ready / whole-view-ready`). All base/candidate tile counts matched. + +| Strate | W8 near | W8 whole | W12 near | W12 whole | +|---|---:|---:|---:|---:| +| SW | 0.778 → 0.854 (+9.7%) | 1.767 → 1.829 (+3.5%) | 0.807 → 0.906 (+12.3%) | 1.722 → 1.843 (+7.0%) | +| FI | 0.937 → 1.010 (+7.8%) | 1.811 → 1.903 (+5.1%) | 0.883 → 0.995 (+12.6%) | 1.700 → 1.798 (+5.8%) | +| TN | 0.979 → 1.090 (+11.4%) | 1.806 → 1.932 (+7.0%) | 0.920 → 1.006 (+9.3%) | 1.709 → 1.790 (+4.7%) | +| VS | 0.797 → 0.871 (+9.2%) | 1.699 → 1.765 (+3.9%) | 0.758 → 0.835 (+10.2%) | 1.575 → 1.659 (+5.3%) | + +## Checks + +- Owner four-strata walk audit: all 3 interfaces pass; zero blocked, unsupported, or grade-failure samples. Shell audit: 89,365 floor, 8,423 wall, and 10,527 interior samples; zero violations; 22,755 open-air shell samples. +- Clang/GCC determinism: all 18 W1/W8/W12 hash runs match across owner4 Surface World, owner2 Surface World, and owner2 Floating Islands. +- Fast tier: PASS, 259 checks plus 5 diagnostic-only results; no failed gates. +- Linux VFHostEditor: PASS, 27 actions, 69.0 s, `-NoUBA -MaxParallelActions=4`. Unreal was run without `prlimit`. +- `git diff --check`: PASS. No run exceeded 30 minutes. + +## Failed experiments + +A clearance ramp delayed to 80–120 m left 6 owner2 wall samples uncovered. A 1.2 m mouth join produced 23 wall violations. Both were rejected; the final 6 m join with the 5–20 m clearance ramp passes owner2 and owner4 audits. diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/RunL110Captures.py b/Standalone/Research/WorldAssemblerM3/Linux110/RunL110Captures.py new file mode 100644 index 0000000..7bc2a6e --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/RunL110Captures.py @@ -0,0 +1,550 @@ +#!/usr/bin/env python3 +"""Capture L109/L110 passage views, open-air shell close-ups, and image checks.""" +from __future__ import annotations + +import json +import math +import re +from array import array +import struct +import subprocess +import time +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[4] +RESEARCH = Path(__file__).resolve().parent +CAPTURES = RESEARCH / "captures" +SAVED = ROOT / "Saved/Linux/l110/captures" +DATA = ROOT / "Standalone/data/owner_world.json" +BINARIES = { + "before": ROOT / "Saved/Linux/l109/bin-final/VoxelForgeCoreHeadless-l109-clang", + "after": ROOT / "Saved/Linux/l110/bin-clang-v257/VoxelForgeCoreHeadless-l110-clang-v257", +} +LAYOUTS = { + "before": ROOT / "Saved/Linux/l109/audit-layout-final-stamp.json", + "after": ROOT / "Saved/Linux/l109/audit-layout-final-stamp.json", +} +AUDIT_LOG = ROOT / "Saved/Linux/l109/audit-owner4-final-stamp.log" +RENDERERS = { + "before": ROOT / "Saved/Linux/l110/bin-clang-v257/VoxelForgeOffscreenCapture-l110-clang-v257", + "after": ROOT / "Saved/Linux/l110/bin-clang-v257/VoxelForgeOffscreenCapture-l110-clang-v257", +} +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 nearest_surface_anchor(mesh: Path, point, margin_m=200.0) -> dict: + """Return a nearby VFMSH surface vertex 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) + stream.seek(index_count * 4 + mask_count, 1) + if struct.pack("=I", 1) != struct.pack("= best_distance_sq: + continue + raw_normal = tuple(float(normals[offset + axis]) for axis in range(3)) + if dot(raw_normal, raw_normal) < 1.0e-10: + continue + best_distance_sq = distance_sq + best_position = position + best_normal = norm(raw_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_for(layout: dict, passage: dict) -> list[tuple[tuple[float, float, float], float]]: + 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") + result = controls[:lower_index + 1] + if len(result) < 2: + raise RuntimeError(f"{passage['stable_id']}: incomplete route controls") + return result + + +def route_lengths(route): + lengths = [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, + include_open_air: bool = True) -> list[dict]: + views = [] + passages = sorted(layout["passages"], key=lambda item: item["stable_id"]) + for passage in passages: + raw_route = route_for(layout, passage) + if use_derived_shape: + route, body_depth = 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}) + shell_radius = radius + 0.75 + closeup_directions = [side] + if passage_id == "passage/0-1/0" and section_id == 4: + closeup_directions.extend([ + norm(add(mul(side, -1.0), (0.0, 0.0, 0.65))), + norm(add(mul(side, 0.55), (0.0, 0.0, 0.84))), + ]) + for closeup_index, direction in enumerate(closeup_directions, start=1): + shell_target = add(center, mul(direction, shell_radius)) + closeup_camera = add(shell_target, mul(direction, 4.0)) + yaw, pitch = angles(closeup_camera, shell_target) + views.append({"name": f"{safe_id}-openair-{section_id}-closeup-" + f"{closeup_index}", + "passage": passage_id, "kind": "open-air-closeup", + "station": f"section-{section_id}/exterior-{closeup_index}", + "camera": closeup_camera, "target": shell_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, "shell_standoff_m": 4.0}) + 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"[L110CaptureProcess] 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"] != "mouth": + 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 + shell_standoff_actual = None + if attempt_kind == "route-offset" or view["kind"] == "open-air-closeup": + anchor_point = probe_focus if attempt_kind == "route-offset" else probe_target + anchor = nearest_surface_anchor(scene, anchor_point, margin_m=20.0) + surface_distance = anchor["distance_m"] + if view["kind"] == "open-air-closeup": + radial = norm(sub(anchor["position_m"], view["focus"])) + normal = anchor["normal"] + if dot(normal, radial) < 0.0: + normal = mul(normal, -1.0) + actual_camera = add(anchor["position_m"], mul(normal, 4.0)) + actual_target = anchor["position_m"] + actual_focus = anchor["position_m"] + shell_standoff_actual = math.dist(actual_camera, actual_target) + else: + 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", "--tile-skirts=off", + ] + render_output = run_process(f"{variant}-{view['name']}{suffix}-render", render_command, + render_log) + if "[OffscreenMeshDisplay] tile_skirts=off" not in render_output: + raise RuntimeError(f"{variant}-{view['name']}: skirt-free surface render missing") + 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, + "render_tile_skirts": "off", + "pixel_quality_status": quality_status, + "route_distance_actual_m": route_distance, + "route_station_adjustment_m": route_adjustment, + "fallback_kind": attempt_kind if attempt_kind != "requested" else None, + "fallback_surface_distance_m": surface_distance, + "shell_standoff_actual_m": shell_standoff_actual, + "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("[L110Capture] " + 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: + if any(not path.is_file() for path in (*BINARIES.values(), *RENDERERS.values(), + *LAYOUTS.values(), AUDIT_LOG)): + raise SystemExit("missing L109 capture binary, layout, or audit log") + sections = [] + for passage, section, start, end, samples, midpoint, radius in SECTION.findall( + AUDIT_LOG.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("no open-air sections found in the final passage audit") + all_rows = [] + for variant in ("before", "after"): + layout = json.loads(LAYOUTS[variant].read_text(encoding="utf-8")) + include_open_air = True + views = make_views(layout, sections, use_derived_shape=True, + include_open_air=include_open_air) + expected = 5 * len(layout["passages"]) + if include_open_air: + expected += 4 * len(sections) + 2 + if len(views) != expected: + raise RuntimeError(f"unexpected camera count: {len(views)} != {expected}") + print(f"[L110CapturePlan] variant={variant} passage_views={5*len(layout['passages'])} " + f"open_air_sections={len(sections) if include_open_air else 0} " + f"open_air_views={3*len(sections) if include_open_air else 0} " + f"exterior_closeups={len(sections)+2 if include_open_air else 0} " + f"total={len(views)}", flush=True) + for view in views: + all_rows.append(capture(variant, view, layout)) + CAPTURES.mkdir(parents=True, exist_ok=True) + (CAPTURES / "capture-index.json").write_text( + json.dumps({"open_air_sections": sections, "captures": all_rows}, indent=2) + "\n", + encoding="utf-8") + lines = ["# L110 passage captures", "", + "Each PNG was rendered from its own exported mesh. The renderer reported visible " + "triangles with LOD seam skirts disabled for surface review, and each decoded " + "image met the pixel coverage floor. " + "`low_contrast_geometry_visible` marks images that met this floor below the " + "preferred contrast target.", ""] + 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"].startswith("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"]] + print(f"[L110CaptureSummary] captures={len(all_rows)} verified={len(all_rows)-len(failures)} " + f"failed={len(failures)} open_air_sections={len(sections)}", flush=True) + return 1 if failures else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/RunL110HashMatrix.py b/Standalone/Research/WorldAssemblerM3/Linux110/RunL110HashMatrix.py new file mode 100644 index 0000000..e2f3e5d --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/RunL110HashMatrix.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +"""Verify Clang/GCC W1/W8/W12 hashes and pin the v257 shell recipes.""" +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/l110/hashes-v257" +DATASETS = { + "owner4": ROOT / "Standalone/data/owner_world.json", + "owner2": ROOT / "Standalone/data/regression/owner_world_2strate_l61.json", +} +BINARIES = { + "clang": ROOT / "Saved/Linux/l110/bin-clang-v257/VoxelForgeCoreHeadless-l110-clang-v257", + "gcc": ROOT / "Saved/Linux/l110/bin-gcc-v257/VoxelForgeCoreHeadless-l110-gcc-v257", +} +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}") + stamp = STAMP.search(output) + row = {"dataset": dataset, "recipe": recipe, "workers": workers, + "compiler": compiler, "exit_code": result.returncode, "hashes": hashes, + "source_stamp": stamp.group(1) if stamp else None, + "elapsed_s": round(time.monotonic() - started, 3), + "log": str(log.relative_to(ROOT))} + print("[L110HashRun] " + 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 L110 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"] + matches = all(row["hashes"] == reference for row in group) + groups[key] = {"all_worker_compiler_hashes_match": matches, + "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 matches: + raise SystemExit(f"determinism mismatch: {key}") + if dataset == "owner2": + canonical = next(row for row in group if row["workers"] == 12 + and row["compiler"] == "clang") + style = 1 if recipe == "surface-world" else 2 + baseline = (ROOT / "Standalone/Tools/verify/baselines/owner-hash/canonical" + / f"owner-hash-{recipe}-style{style}-v257.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/Linux110/RunL110Timing.py b/Standalone/Research/WorldAssemblerM3/Linux110/RunL110Timing.py new file mode 100644 index 0000000..c6ec1fc --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/RunL110Timing.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 +"""Five interleaved L80 readiness pairs for L110 versus L109, at W8 and W12.""" +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/l110/readiness-v257" +DATA = ROOT / "Standalone/data/owner_world.json" +BINARIES = { + "base": ROOT / "Saved/Linux/l109/bin-final/VoxelForgeCoreHeadless-l109-clang", + "candidate": ROOT / "Saved/Linux/l110/bin-clang-v257/VoxelForgeCoreHeadless-l110-clang-v257", +} +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, variant: str, phase: str, replicate: int) -> dict: + OUT.mkdir(parents=True, exist_ok=True) + label = f"s{strate}-w{workers}-{variant}-{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[variant]), 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, "variant": variant, + "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("[L110TimingRun] " + 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 data or timing binary") + rows = [] + for strate in range(4): + for workers in (8, 12): + run(strate, workers, "base", "warmup", 0) + run(strate, workers, "candidate", "warmup", 0) + for replicate in range(1, 6): + order = ("base", "candidate") if replicate % 2 else ("candidate", "base") + for variant in order: + rows.append(run(strate, workers, variant, "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, "pairs": 5} + for variant in ("base", "candidate"): + group = [row for row in rows if row["strate"] == strate + and row["workers"] == workers and row["variant"] == variant] + for key in ("lod02_ready_s", "whole_view_ready_s"): + values = [row[key] for row in group] + item[f"{variant}_{key}"] = values + item[f"{variant}_{key}_median"] = statistics.median(values) + for key in ("lod02_ready_s", "whole_view_ready_s"): + base = item[f"base_{key}_median"] + candidate = item[f"candidate_{key}_median"] + item[f"{key}_delta_pct"] = round(100 * (candidate / base - 1), 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/Linux110/VerifyL110Captures.py b/Standalone/Research/WorldAssemblerM3/Linux110/VerifyL110Captures.py new file mode 100644 index 0000000..43a1a80 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/VerifyL110Captures.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 +"""Check the paired L109/L110 capture set and 4 m shell close-ups.""" +from __future__ import annotations + +import hashlib +import json +from collections import Counter +from pathlib import Path +import struct + + +ROOT = Path(__file__).resolve().parents[4] +CAPTURE_ROOT = Path(__file__).resolve().parent / "captures" +RESEARCH_ROOT = CAPTURE_ROOT.parent +INDEX = CAPTURE_ROOT / "capture-index.json" +OUTPUT = CAPTURE_ROOT / "capture-verification.json" + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for block in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(block) + return digest.hexdigest() + + +def png_size(path: Path) -> tuple[int, int]: + with path.open("rb") as stream: + header = stream.read(24) + if len(header) != 24 or header[:8] != b"\x89PNG\r\n\x1a\n" or header[12:16] != b"IHDR": + raise RuntimeError(f"invalid PNG: {path}") + return struct.unpack(">II", header[16:24]) + + +def main() -> int: + captures = json.loads(INDEX.read_text(encoding="utf-8"))["captures"] + counts = {variant: Counter(row["kind"] for row in captures + if row["variant"] == variant) + for variant in ("before", "after")} + by_variant = {variant: {row["name"]: row for row in captures + if row["variant"] == variant} + for variant in ("before", "after")} + errors: list[str] = [] + for variant in ("before", "after"): + rows = [row for row in captures if row["variant"] == variant] + if len(rows) != 53: + errors.append(f"{variant}: expected 53 captures, got {len(rows)}") + for row in rows: + image = RESEARCH_ROOT / row["capture"] + if not row.get("verified") or row.get("render_tile_skirts") != "off": + errors.append(f"{variant}/{row['name']}: render verification flags failed") + if row.get("drawn_triangles", 0) <= 0 or not image.is_file(): + errors.append(f"{variant}/{row['name']}: missing geometry or image") + elif png_size(image) != (1920, 1080): + errors.append(f"{variant}/{row['name']}: unexpected image size {png_size(image)}") + closeups = [row for row in rows if row["kind"] == "open-air-closeup"] + if len(closeups) != 11: + errors.append(f"{variant}: expected 11 close-ups, got {len(closeups)}") + for row in closeups: + distance = row.get("shell_standoff_actual_m") + if distance is None or not 3.0 <= distance <= 5.0: + errors.append(f"{variant}/{row['name']}: close-up standoff {distance}") + names_before, names_after = set(by_variant["before"]), set(by_variant["after"]) + if names_before != names_after: + errors.append("before/after capture names do not match") + pair_counts = Counter() + for name in sorted(names_before & names_after): + left, right = by_variant["before"][name], by_variant["after"][name] + same = sha256(RESEARCH_ROOT / left["capture"]) == sha256( + RESEARCH_ROOT / right["capture"]) + pair_counts[f"{left['kind']}_{'identical' if same else 'changed'}"] += 1 + summary = { + "status": "PASS" if not errors else "FAIL", + "capture_count": len(captures), + "open_air_sections": len(json.loads(INDEX.read_text(encoding="utf-8"))[ + "open_air_sections"]), + "per_variant_kind_counts": {variant: dict(sorted(counts[variant].items())) + for variant in counts}, + "paired_image_bytes": dict(sorted(pair_counts.items())), + "errors": errors, + } + OUTPUT.write_text(json.dumps(summary, indent=2) + "\n", encoding="utf-8") + print(json.dumps(summary, sort_keys=True)) + return 0 if not errors else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/__pycache__/RunL110Captures.cpython-313.pyc b/Standalone/Research/WorldAssemblerM3/Linux110/__pycache__/RunL110Captures.cpython-313.pyc new file mode 100644 index 0000000..4609414 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/__pycache__/RunL110Captures.cpython-313.pyc differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/INDEX.md b/Standalone/Research/WorldAssemblerM3/Linux110/captures/INDEX.md new file mode 100644 index 0000000..c786495 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/captures/INDEX.md @@ -0,0 +1,115 @@ +# L110 passage captures + +Each PNG was rendered from its own exported mesh. The renderer reported visible triangles with LOD seam skirts disabled for surface review, and each decoded image met the pixel coverage floor. `low_contrast_geometry_visible` marks images that met this floor below the preferred contrast target. + +## Before + +- [upper-mouth](before/passage-0-1-0-upper-mouth.png) — passage/0-1/0; 245318 visible triangles +- [lower-mouth](before/passage-0-1-0-lower-mouth.png) — passage/0-1/0; 549656 visible triangles +- [25%](before/passage-0-1-0-station-25.png) — passage/0-1/0; 136516 visible triangles +- [50%](before/passage-0-1-0-station-50.png) — passage/0-1/0; 414142 visible triangles +- [75%](before/passage-0-1-0-station-75.png) — passage/0-1/0; 280006 visible triangles +- [section-1/view-1](before/passage-0-1-0-openair-1-view-1.png) — passage/0-1/0 **OPEN AIR**; 279562 visible triangles +- [section-1/view-2](before/passage-0-1-0-openair-1-view-2.png) — passage/0-1/0 **OPEN AIR**; 288373 visible triangles +- [section-1/view-3](before/passage-0-1-0-openair-1-view-3.png) — passage/0-1/0 **OPEN AIR**; 312807 visible triangles +- [section-1/exterior-1](before/passage-0-1-0-openair-1-closeup-1.png) — passage/0-1/0 **OPEN AIR**; 279562 visible triangles +- [section-2/view-1](before/passage-0-1-0-openair-2-view-1.png) — passage/0-1/0 **OPEN AIR**; 271894 visible triangles +- [section-2/view-2](before/passage-0-1-0-openair-2-view-2.png) — passage/0-1/0 **OPEN AIR**; 307275 visible triangles +- [section-2/view-3](before/passage-0-1-0-openair-2-view-3.png) — passage/0-1/0 **OPEN AIR**; 312807 visible triangles +- [section-2/exterior-1](before/passage-0-1-0-openair-2-closeup-1.png) — passage/0-1/0 **OPEN AIR**; 271894 visible triangles; low_contrast_geometry_visible +- [section-3/view-1](before/passage-0-1-0-openair-3-view-1.png) — passage/0-1/0 **OPEN AIR**; 252183 visible triangles +- [section-3/view-2](before/passage-0-1-0-openair-3-view-2.png) — passage/0-1/0 **OPEN AIR**; 299315 visible triangles; low_contrast_geometry_visible +- [section-3/view-3](before/passage-0-1-0-openair-3-view-3.png) — passage/0-1/0 **OPEN AIR**; 351475 visible triangles +- [section-3/exterior-1](before/passage-0-1-0-openair-3-closeup-1.png) — passage/0-1/0 **OPEN AIR**; 252183 visible triangles +- [section-4/view-1](before/passage-0-1-0-openair-4-view-1.png) — passage/0-1/0 **OPEN AIR**; 361215 visible triangles +- [section-4/view-2](before/passage-0-1-0-openair-4-view-2.png) — passage/0-1/0 **OPEN AIR**; 452228 visible triangles +- [section-4/view-3](before/passage-0-1-0-openair-4-view-3.png) — passage/0-1/0 **OPEN AIR**; 366459 visible triangles +- [section-4/exterior-1](before/passage-0-1-0-openair-4-closeup-1.png) — passage/0-1/0 **OPEN AIR**; 361215 visible triangles +- [section-4/exterior-2](before/passage-0-1-0-openair-4-closeup-2.png) — passage/0-1/0 **OPEN AIR**; 452228 visible triangles +- [section-4/exterior-3](before/passage-0-1-0-openair-4-closeup-3.png) — passage/0-1/0 **OPEN AIR**; 408374 visible triangles +- [upper-mouth](before/passage-1-2-0-upper-mouth.png) — passage/1-2/0; 565769 visible triangles; low_contrast_geometry_visible +- [lower-mouth](before/passage-1-2-0-lower-mouth.png) — passage/1-2/0; 505668 visible triangles +- [25%](before/passage-1-2-0-station-25.png) — passage/1-2/0; 655764 visible triangles +- [50%](before/passage-1-2-0-station-50.png) — passage/1-2/0; 590530 visible triangles +- [75%](before/passage-1-2-0-station-75.png) — passage/1-2/0; 607508 visible triangles +- [section-1/view-1](before/passage-1-2-0-openair-1-view-1.png) — passage/1-2/0 **OPEN AIR**; 624462 visible triangles +- [section-1/view-2](before/passage-1-2-0-openair-1-view-2.png) — passage/1-2/0 **OPEN AIR**; 582866 visible triangles +- [section-1/view-3](before/passage-1-2-0-openair-1-view-3.png) — passage/1-2/0 **OPEN AIR**; 611168 visible triangles +- [section-1/exterior-1](before/passage-1-2-0-openair-1-closeup-1.png) — passage/1-2/0 **OPEN AIR**; 624462 visible triangles +- [upper-mouth](before/passage-2-3-0-upper-mouth.png) — passage/2-3/0; 57772 visible triangles +- [lower-mouth](before/passage-2-3-0-lower-mouth.png) — passage/2-3/0; 291268 visible triangles; low_contrast_geometry_visible +- [25%](before/passage-2-3-0-station-25.png) — passage/2-3/0; 53210 visible triangles; low_contrast_geometry_visible +- [50%](before/passage-2-3-0-station-50.png) — passage/2-3/0; 454314 visible triangles +- [75%](before/passage-2-3-0-station-75.png) — passage/2-3/0; 475142 visible triangles +- [section-1/view-1](before/passage-2-3-0-openair-1-view-1.png) — passage/2-3/0 **OPEN AIR**; 103940 visible triangles +- [section-1/view-2](before/passage-2-3-0-openair-1-view-2.png) — passage/2-3/0 **OPEN AIR**; 79774 visible triangles +- [section-1/view-3](before/passage-2-3-0-openair-1-view-3.png) — passage/2-3/0 **OPEN AIR**; 94306 visible triangles; low_contrast_geometry_visible +- [section-1/exterior-1](before/passage-2-3-0-openair-1-closeup-1.png) — passage/2-3/0 **OPEN AIR**; 103940 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**; 475512 visible triangles +- [section-2/view-2](before/passage-2-3-0-openair-2-view-2.png) — passage/2-3/0 **OPEN AIR**; 477216 visible triangles +- [section-2/view-3](before/passage-2-3-0-openair-2-view-3.png) — passage/2-3/0 **OPEN AIR**; 477216 visible triangles +- [section-2/exterior-1](before/passage-2-3-0-openair-2-closeup-1.png) — passage/2-3/0 **OPEN AIR**; 475512 visible triangles +- [section-3/view-1](before/passage-2-3-0-openair-3-view-1.png) — passage/2-3/0 **OPEN AIR**; 484608 visible triangles +- [section-3/view-2](before/passage-2-3-0-openair-3-view-2.png) — passage/2-3/0 **OPEN AIR**; 475290 visible triangles +- [section-3/view-3](before/passage-2-3-0-openair-3-view-3.png) — passage/2-3/0 **OPEN AIR**; 488256 visible triangles; low_contrast_geometry_visible +- [section-3/exterior-1](before/passage-2-3-0-openair-3-closeup-1.png) — passage/2-3/0 **OPEN AIR**; 484608 visible triangles +- [section-4/view-1](before/passage-2-3-0-openair-4-view-1.png) — passage/2-3/0 **OPEN AIR**; 475298 visible triangles +- [section-4/view-2](before/passage-2-3-0-openair-4-view-2.png) — passage/2-3/0 **OPEN AIR**; 494744 visible triangles +- [section-4/view-3](before/passage-2-3-0-openair-4-view-3.png) — passage/2-3/0 **OPEN AIR**; 495418 visible triangles; low_contrast_geometry_visible +- [section-4/exterior-1](before/passage-2-3-0-openair-4-closeup-1.png) — passage/2-3/0 **OPEN AIR**; 475298 visible triangles + +## After + +- [upper-mouth](after/passage-0-1-0-upper-mouth.png) — passage/0-1/0; 244932 visible triangles +- [lower-mouth](after/passage-0-1-0-lower-mouth.png) — passage/0-1/0; 549634 visible triangles +- [25%](after/passage-0-1-0-station-25.png) — passage/0-1/0; 136516 visible triangles +- [50%](after/passage-0-1-0-station-50.png) — passage/0-1/0; 434960 visible triangles +- [75%](after/passage-0-1-0-station-75.png) — passage/0-1/0; 291514 visible triangles +- [section-1/view-1](after/passage-0-1-0-openair-1-view-1.png) — passage/0-1/0 **OPEN AIR**; 278806 visible triangles +- [section-1/view-2](after/passage-0-1-0-openair-1-view-2.png) — passage/0-1/0 **OPEN AIR**; 287745 visible triangles +- [section-1/view-3](after/passage-0-1-0-openair-1-view-3.png) — passage/0-1/0 **OPEN AIR**; 312051 visible triangles +- [section-1/exterior-1](after/passage-0-1-0-openair-1-closeup-1.png) — passage/0-1/0 **OPEN AIR**; 278806 visible triangles +- [section-2/view-1](after/passage-0-1-0-openair-2-view-1.png) — passage/0-1/0 **OPEN AIR**; 271138 visible triangles +- [section-2/view-2](after/passage-0-1-0-openair-2-view-2.png) — passage/0-1/0 **OPEN AIR**; 306519 visible triangles +- [section-2/view-3](after/passage-0-1-0-openair-2-view-3.png) — passage/0-1/0 **OPEN AIR**; 312051 visible triangles +- [section-2/exterior-1](after/passage-0-1-0-openair-2-closeup-1.png) — passage/0-1/0 **OPEN AIR**; 271138 visible triangles; low_contrast_geometry_visible +- [section-3/view-1](after/passage-0-1-0-openair-3-view-1.png) — passage/0-1/0 **OPEN AIR**; 251435 visible triangles +- [section-3/view-2](after/passage-0-1-0-openair-3-view-2.png) — passage/0-1/0 **OPEN AIR**; 298559 visible triangles; low_contrast_geometry_visible +- [section-3/view-3](after/passage-0-1-0-openair-3-view-3.png) — passage/0-1/0 **OPEN AIR**; 350719 visible triangles +- [section-3/exterior-1](after/passage-0-1-0-openair-3-closeup-1.png) — passage/0-1/0 **OPEN AIR**; 251435 visible triangles +- [section-4/view-1](after/passage-0-1-0-openair-4-view-1.png) — passage/0-1/0 **OPEN AIR**; 396359 visible triangles +- [section-4/view-2](after/passage-0-1-0-openair-4-view-2.png) — passage/0-1/0 **OPEN AIR**; 507164 visible triangles +- [section-4/view-3](after/passage-0-1-0-openair-4-view-3.png) — passage/0-1/0 **OPEN AIR**; 412746 visible triangles +- [section-4/exterior-1](after/passage-0-1-0-openair-4-closeup-1.png) — passage/0-1/0 **OPEN AIR**; 396359 visible triangles +- [section-4/exterior-2](after/passage-0-1-0-openair-4-closeup-2.png) — passage/0-1/0 **OPEN AIR**; 507164 visible triangles +- [section-4/exterior-3](after/passage-0-1-0-openair-4-closeup-3.png) — passage/0-1/0 **OPEN AIR**; 443786 visible triangles +- [upper-mouth](after/passage-1-2-0-upper-mouth.png) — passage/1-2/0; 565755 visible triangles; low_contrast_geometry_visible +- [lower-mouth](after/passage-1-2-0-lower-mouth.png) — passage/1-2/0; 505668 visible triangles +- [25%](after/passage-1-2-0-station-25.png) — passage/1-2/0; 655712 visible triangles +- [50%](after/passage-1-2-0-station-50.png) — passage/1-2/0; 590478 visible triangles +- [75%](after/passage-1-2-0-station-75.png) — passage/1-2/0; 607464 visible triangles +- [section-1/view-1](after/passage-1-2-0-openair-1-view-1.png) — passage/1-2/0 **OPEN AIR**; 624410 visible triangles +- [section-1/view-2](after/passage-1-2-0-openair-1-view-2.png) — passage/1-2/0 **OPEN AIR**; 582822 visible triangles +- [section-1/view-3](after/passage-1-2-0-openair-1-view-3.png) — passage/1-2/0 **OPEN AIR**; 611124 visible triangles +- [section-1/exterior-1](after/passage-1-2-0-openair-1-closeup-1.png) — passage/1-2/0 **OPEN AIR**; 624410 visible triangles +- [upper-mouth](after/passage-2-3-0-upper-mouth.png) — passage/2-3/0; 57772 visible triangles +- [lower-mouth](after/passage-2-3-0-lower-mouth.png) — passage/2-3/0; 291268 visible triangles; low_contrast_geometry_visible +- [25%](after/passage-2-3-0-station-25.png) — passage/2-3/0; 53210 visible triangles; low_contrast_geometry_visible +- [50%](after/passage-2-3-0-station-50.png) — passage/2-3/0; 454306 visible triangles +- [75%](after/passage-2-3-0-station-75.png) — passage/2-3/0; 475134 visible triangles +- [section-1/view-1](after/passage-2-3-0-openair-1-view-1.png) — passage/2-3/0 **OPEN AIR**; 103940 visible triangles +- [section-1/view-2](after/passage-2-3-0-openair-1-view-2.png) — passage/2-3/0 **OPEN AIR**; 79774 visible triangles +- [section-1/view-3](after/passage-2-3-0-openair-1-view-3.png) — passage/2-3/0 **OPEN AIR**; 94306 visible triangles; low_contrast_geometry_visible +- [section-1/exterior-1](after/passage-2-3-0-openair-1-closeup-1.png) — passage/2-3/0 **OPEN AIR**; 103940 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**; 475504 visible triangles +- [section-2/view-2](after/passage-2-3-0-openair-2-view-2.png) — passage/2-3/0 **OPEN AIR**; 477208 visible triangles +- [section-2/view-3](after/passage-2-3-0-openair-2-view-3.png) — passage/2-3/0 **OPEN AIR**; 477208 visible triangles +- [section-2/exterior-1](after/passage-2-3-0-openair-2-closeup-1.png) — passage/2-3/0 **OPEN AIR**; 475504 visible triangles +- [section-3/view-1](after/passage-2-3-0-openair-3-view-1.png) — passage/2-3/0 **OPEN AIR**; 484600 visible triangles +- [section-3/view-2](after/passage-2-3-0-openair-3-view-2.png) — passage/2-3/0 **OPEN AIR**; 475290 visible triangles +- [section-3/view-3](after/passage-2-3-0-openair-3-view-3.png) — passage/2-3/0 **OPEN AIR**; 488248 visible triangles; low_contrast_geometry_visible +- [section-3/exterior-1](after/passage-2-3-0-openair-3-closeup-1.png) — passage/2-3/0 **OPEN AIR**; 484600 visible triangles +- [section-4/view-1](after/passage-2-3-0-openair-4-view-1.png) — passage/2-3/0 **OPEN AIR**; 475290 visible triangles +- [section-4/view-2](after/passage-2-3-0-openair-4-view-2.png) — passage/2-3/0 **OPEN AIR**; 494736 visible triangles +- [section-4/view-3](after/passage-2-3-0-openair-4-view-3.png) — passage/2-3/0 **OPEN AIR**; 495410 visible triangles; low_contrast_geometry_visible +- [section-4/exterior-1](after/passage-2-3-0-openair-4-closeup-1.png) — passage/2-3/0 **OPEN AIR**; 475290 visible triangles diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-lower-mouth.png new file mode 100644 index 0000000..f07e6c4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-closeup-1.png new file mode 100644 index 0000000..9c2978e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-view-1.png new file mode 100644 index 0000000..56b32b1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-view-2.png new file mode 100644 index 0000000..31b81d7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-view-3.png new file mode 100644 index 0000000..711fa73 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-closeup-1.png new file mode 100644 index 0000000..f739cc8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-view-1.png new file mode 100644 index 0000000..930d6fc Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-view-2.png new file mode 100644 index 0000000..1c486be Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-view-3.png new file mode 100644 index 0000000..329c128 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-closeup-1.png new file mode 100644 index 0000000..f2cf475 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-view-1.png new file mode 100644 index 0000000..e685202 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-view-2.png new file mode 100644 index 0000000..a077c37 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-view-3.png new file mode 100644 index 0000000..99b7244 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-3-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..a6e26de Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..33951fb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..86d8843 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..21d04cd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..60c8e41 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..3e2dcfa Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-station-25.png new file mode 100644 index 0000000..697ccbd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-station-75.png new file mode 100644 index 0000000..0a47b71 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-upper-mouth.png new file mode 100644 index 0000000..7e45aca Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-0-1-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-lower-mouth.png new file mode 100644 index 0000000..f27eda7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-closeup-1.png new file mode 100644 index 0000000..a5e3c92 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-view-1.png new file mode 100644 index 0000000..c4396c0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-view-2.png new file mode 100644 index 0000000..e56164f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-view-3.png new file mode 100644 index 0000000..bd130d0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-station-25.png new file mode 100644 index 0000000..745cd66 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-station-50.png new file mode 100644 index 0000000..d32a16b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-station-75.png new file mode 100644 index 0000000..3e07cc1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-upper-mouth.png new file mode 100644 index 0000000..0b0430c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-1-2-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-lower-mouth.png new file mode 100644 index 0000000..a603370 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-closeup-1.png new file mode 100644 index 0000000..b37ffd4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-view-1.png new file mode 100644 index 0000000..513bc57 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-view-2.png new file mode 100644 index 0000000..74f216e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-view-3.png new file mode 100644 index 0000000..833bddd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-closeup-1.png new file mode 100644 index 0000000..e22fb06 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-view-1.png new file mode 100644 index 0000000..a80698c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-view-2.png new file mode 100644 index 0000000..f10fdc6 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-view-3.png new file mode 100644 index 0000000..34a73d0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-closeup-1.png new file mode 100644 index 0000000..279d672 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-view-1.png new file mode 100644 index 0000000..237f437 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-view-2.png new file mode 100644 index 0000000..9de74ee Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-view-3.png new file mode 100644 index 0000000..0f4416a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-3-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-closeup-1.png new file mode 100644 index 0000000..6e5987b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-view-1.png new file mode 100644 index 0000000..f217bd9 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-view-2.png new file mode 100644 index 0000000..7069ea7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-view-3.png new file mode 100644 index 0000000..4b1c90f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux110/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/Linux110/captures/after/passage-2-3-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-station-50.png new file mode 100644 index 0000000..333947a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-station-75.png new file mode 100644 index 0000000..4d97c05 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-upper-mouth.png new file mode 100644 index 0000000..5ff9c20 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/after/passage-2-3-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-lower-mouth.png new file mode 100644 index 0000000..f07e6c4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-closeup-1.png new file mode 100644 index 0000000..032ebb8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-view-1.png new file mode 100644 index 0000000..4233315 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-view-2.png new file mode 100644 index 0000000..bcc62fb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-view-3.png new file mode 100644 index 0000000..df5365e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-closeup-1.png new file mode 100644 index 0000000..f739cc8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-view-1.png new file mode 100644 index 0000000..48d77b9 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-view-2.png new file mode 100644 index 0000000..1111c70 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-view-3.png new file mode 100644 index 0000000..014d59b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-closeup-1.png new file mode 100644 index 0000000..270056c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-view-1.png new file mode 100644 index 0000000..5b541d3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-view-2.png new file mode 100644 index 0000000..a077c37 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-view-3.png new file mode 100644 index 0000000..8aab3e8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-3-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..36ed0f8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..9391eba Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..80cd53c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..43049af Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..934a77f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..31322cf Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-station-25.png new file mode 100644 index 0000000..697ccbd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-station-75.png new file mode 100644 index 0000000..0a47b71 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-upper-mouth.png new file mode 100644 index 0000000..1018ebd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-0-1-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-lower-mouth.png new file mode 100644 index 0000000..f3968a7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-closeup-1.png new file mode 100644 index 0000000..47f8905 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-view-1.png new file mode 100644 index 0000000..f81c7cf Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-view-2.png new file mode 100644 index 0000000..b9dba32 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-view-3.png new file mode 100644 index 0000000..bd130d0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-station-25.png new file mode 100644 index 0000000..745cd66 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-station-50.png new file mode 100644 index 0000000..d32a16b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-station-75.png new file mode 100644 index 0000000..bb01e66 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-upper-mouth.png new file mode 100644 index 0000000..0b0430c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-1-2-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-lower-mouth.png new file mode 100644 index 0000000..2b68c7d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-closeup-1.png new file mode 100644 index 0000000..04e10e0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-view-1.png new file mode 100644 index 0000000..e958856 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-view-2.png new file mode 100644 index 0000000..e201769 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-view-3.png new file mode 100644 index 0000000..006b05a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-closeup-1.png new file mode 100644 index 0000000..820cefb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-view-1.png new file mode 100644 index 0000000..5a069a4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-view-2.png new file mode 100644 index 0000000..75c4e36 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-view-3.png new file mode 100644 index 0000000..073f282 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-closeup-1.png new file mode 100644 index 0000000..052811d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-view-1.png new file mode 100644 index 0000000..ba11b0c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-view-2.png new file mode 100644 index 0000000..cb0bc68 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-view-3.png new file mode 100644 index 0000000..0f4416a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-3-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-closeup-1.png new file mode 100644 index 0000000..047d8fe Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-view-1.png new file mode 100644 index 0000000..0f6a894 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-view-2.png new file mode 100644 index 0000000..4288fe7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-view-3.png new file mode 100644 index 0000000..2e69508 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-station-25.png b/Standalone/Research/WorldAssemblerM3/Linux110/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/Linux110/captures/before/passage-2-3-0-station-25.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-station-50.png new file mode 100644 index 0000000..333947a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-station-75.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-station-75.png new file mode 100644 index 0000000..4d97c05 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-station-75.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-upper-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-upper-mouth.png new file mode 100644 index 0000000..5f8dc22 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/before/passage-2-3-0-upper-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/capture-index.json b/Standalone/Research/WorldAssemblerM3/Linux110/captures/capture-index.json new file mode 100644 index 0000000..3911444 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/captures/capture-index.json @@ -0,0 +1,6015 @@ +{ + "open_air_sections": [ + { + "passage": "passage/0-1/0", + "section": 1, + "start_m": 7.226, + "end_m": 10.217, + "samples": 13, + "midpoint": [ + 6.375, + 7.507, + -373.204 + ], + "radius_m": 1.958 + }, + { + "passage": "passage/0-1/0", + "section": 2, + "start_m": 13.456, + "end_m": 17.443, + "samples": 17, + "midpoint": [ + 5.121, + 0.955, + -374.039 + ], + "radius_m": 2.31 + }, + { + "passage": "passage/0-1/0", + "section": 3, + "start_m": 23.174, + "end_m": 24.918, + "samples": 8, + "midpoint": [ + 3.519, + -7.417, + -375.105 + ], + "radius_m": 2.761 + }, + { + "passage": "passage/0-1/0", + "section": 4, + "start_m": 1036.913, + "end_m": 1489.321, + "samples": 1838, + "midpoint": [ + -24.253, + -7.219, + -598.622 + ], + "radius_m": 3.5 + }, + { + "passage": "passage/1-2/0", + "section": 1, + "start_m": 101.82, + "end_m": 104.499, + "samples": 12, + "midpoint": [ + 9.136, + -11.613, + -749.434 + ], + "radius_m": 3.173 + }, + { + "passage": "passage/2-3/0", + "section": 1, + "start_m": 7.677, + "end_m": 34.747, + "samples": 108, + "midpoint": [ + -2.846, + -13.149, + -814.246 + ], + "radius_m": 3.0 + }, + { + "passage": "passage/2-3/0", + "section": 2, + "start_m": 368.909, + "end_m": 376.66, + "samples": 32, + "midpoint": [ + -9.545, + 9.558, + -877.248 + ], + "radius_m": 3.0 + }, + { + "passage": "passage/2-3/0", + "section": 3, + "start_m": 393.828, + "end_m": 396.51, + "samples": 7, + "midpoint": [ + -11.172, + -10.684, + -881.259 + ], + "radius_m": 3.0 + }, + { + "passage": "passage/2-3/0", + "section": 4, + "start_m": 444.932, + "end_m": 447.654, + "samples": 11, + "midpoint": [ + 9.72, + 10.251, + -890.42 + ], + "radius_m": 3.0 + } + ], + "captures": [ + { + "name": "passage-0-1-0-upper-mouth", + "passage": "passage/0-1/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + 8.839199674686244, + 20.385640196824248, + -371.842578125 + ], + "target": [ + 7.627022366806115, + 14.050826579189224, + -371.942578125 + ], + "yaw": -169.1673035961807, + "pitch": -0.8882703208739064, + "focus": [ + 8.0, + 16.0, + -372.122578125 + ], + "center_z": -372.122578125, + "variant": "before", + "capture": "captures/before/passage-0-1-0-upper-mouth.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-upper-mouth.vfmesh", + "drawn_triangles": 245318, + "source_triangles": 310752, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 8.839199674686244, + 20.385640196824248, + -371.842578125 + ], + "target_actual_m": [ + 7.627022366806115, + 14.050826579189224, + -371.942578125 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-upper-mouth-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-upper-mouth-render.log", + "Saved/Linux/l110/captures/before/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.29870756948553, + 9.932859678359986, + -735.514490514727 + ], + "target": [ + 24.47653648208193, + 1.781610133503092, + -736.6798828125 + ], + "yaw": -136.18021933793756, + "pitch": -5.889606445716861, + "focus": [ + 25.836914062499947, + 3.199218749999943, + -734.8598828125 + ], + "center_z": -734.8598828125, + "variant": "before", + "capture": "captures/before/passage-0-1-0-lower-mouth.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-lower-mouth.vfmesh", + "drawn_triangles": 549656, + "source_triangles": 611506, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 32.29870756948553, + 9.932859678359986, + -735.514490514727 + ], + "target_actual_m": [ + 24.47653648208193, + 1.781610133503092, + -736.6798828125 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-lower-mouth-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-lower-mouth-render.log", + "Saved/Linux/l110/captures/before/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.832678263995309, + -18.72062618817443, + -462.7942446741164 + ], + "target": [ + -21.89083852694916, + -7.989572734179358, + -465.1289462328135 + ], + "yaw": -33.33421057217368, + "pitch": -10.302233434343137, + "focus": [ + -14.365775643756486, + -18.133683309169903, + -461.1242446741164 + ], + "center_z": -461.1242446741164, + "route_distance_m": 503.59931612822896, + "route_length_m": 2014.3972645129159, + "requested_route_distance_m": 503.59931612822896, + "variant": "before", + "capture": "captures/before/passage-0-1-0-station-25.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-station-25.vfmesh", + "drawn_triangles": 136516, + "source_triangles": 194558, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 503.59931612822896, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -14.832678263995309, + -18.72062618817443, + -462.7942446741164 + ], + "target_actual_m": [ + -21.89083852694916, + -7.989572734179358, + -465.1289462328135 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-station-25-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-station-25-render.log", + "Saved/Linux/l110/captures/before/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.478551888892594, + 21.511593715955158, + -553.9658220811451 + ], + "target": [ + 7.751504608756267, + 21.398972718233775, + -556.3002867114685 + ], + "yaw": 90.48771915686082, + "pitch": -10.006569463318558, + "focus": [ + -5.390306191921176, + 20.7668033447996, + -552.2958220811452 + ], + "center_z": -552.2958220811452, + "route_distance_m": 1007.1986322564579, + "route_length_m": 2014.3972645129159, + "requested_route_distance_m": 1007.1986322564579, + "variant": "before", + "capture": "captures/before/passage-0-1-0-station-50.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-station-50.vfmesh", + "drawn_triangles": 414142, + "source_triangles": 541436, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1007.1986322564579, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -5.478551888892594, + 21.511593715955158, + -553.9658220811451 + ], + "target_actual_m": [ + 7.751504608756267, + 21.398972718233775, + -556.3002867114685 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-station-50-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-station-50-render.log", + "Saved/Linux/l110/captures/before/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.41045488666863, + -13.591590559867178, + -645.1369534883806 + ], + "target": [ + 6.2905981482465405, + -21.544778689774127, + -647.4714776908803 + ], + "yaw": -128.16377958476315, + "pitch": -10.28040282125882, + "focus": [ + 15.809745384875612, + -13.142538119215107, + -643.4669534883807 + ], + "center_z": -643.4669534883807, + "route_distance_m": 1510.7979483846868, + "route_length_m": 2014.3972645129159, + "requested_route_distance_m": 1510.7979483846868, + "variant": "before", + "capture": "captures/before/passage-0-1-0-station-75.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-station-75.vfmesh", + "drawn_triangles": 280006, + "source_triangles": 369990, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1510.7979483846868, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 16.41045488666863, + -13.591590559867178, + -645.1369534883806 + ], + "target_actual_m": [ + 6.2905981482465405, + -21.544778689774127, + -647.4714776908803 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-station-75-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-station-75-render.log", + "Saved/Linux/l110/captures/before/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": [ + 13.209009551818514, + 6.199300705187415, + -372.004 + ], + "target": [ + 6.375, + 7.507, + -373.104 + ], + "yaw": -79.16730359618066, + "pitch": -8.983620476603383, + "focus": [ + 6.375, + 7.507, + -373.204 + ], + "center_z": -373.204, + "open_air_section": 1, + "route_distance_m": 8.7215, + "requested_route_distance_m": 8.7215, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-1-view-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-1.vfmesh", + "drawn_triangles": 279562, + "source_triangles": 360606, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.7215, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 13.209009551818514, + 6.199300705187415, + -372.004 + ], + "target_actual_m": [ + 6.375, + 7.507, + -373.104 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-1-render.log", + "Saved/Linux/l110/captures/before/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.0142606878664209, + 8.532786540828843, + -369.204 + ], + "target": [ + 6.002022366806118, + 5.557826579189251, + -373.4522149486675 + ], + "yaw": 120.81404399724752, + "pitch": -36.18521056311671, + "focus": [ + 6.375, + 7.507, + -373.204 + ], + "center_z": -373.204, + "open_air_section": 1, + "route_distance_m": 8.7215, + "requested_route_distance_m": 8.7215, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-1-view-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-2.vfmesh", + "drawn_triangles": 288373, + "source_triangles": 371201, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.7215, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 1.0142606878664209, + 8.532786540828843, + -369.204 + ], + "target_actual_m": [ + 6.002022366806118, + 5.557826579189251, + -373.4522149486675 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-2-render.log", + "Saved/Linux/l110/captures/before/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": [ + 6.375, + 7.507, + -373.682 + ], + "target": [ + 5.069578283821414, + 0.6848930271623788, + -374.5507523203363 + ], + "yaw": -169.16730359618066, + "pitch": -7.1292164823138044, + "focus": [ + 6.375, + 7.507, + -373.204 + ], + "center_z": -373.204, + "open_air_section": 1, + "route_distance_m": 8.7215, + "requested_route_distance_m": 8.7215, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-1-view-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-3.vfmesh", + "drawn_triangles": 312807, + "source_triangles": 406051, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.7215, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 6.375, + 7.507, + -373.682 + ], + "target_actual_m": [ + 5.069578283821414, + 0.6848930271623788, + -374.5507523203363 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-3-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-1-closeup-1", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-1/exterior-1", + "camera": [ + 12.963464511871024, + 6.246286164184705, + -373.204 + ], + "target": [ + 9.0347438727112, + 6.998053508141351, + -373.204 + ], + "yaw": -79.16730359618066, + "pitch": 0.0, + "focus": [ + 6.375, + 7.507, + -373.204 + ], + "center_z": -373.204, + "open_air_section": 1, + "route_distance_m": 8.7215, + "requested_route_distance_m": 8.7215, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-1-closeup-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-closeup-1.vfmesh", + "drawn_triangles": 279562, + "source_triangles": 360606, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.7215, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.2306973317267258, + "shell_standoff_actual_m": 4.000000000000004, + "camera_actual_m": [ + 11.473374984983819, + 6.671130159811255, + -370.4993606176706 + ], + "target_actual_m": [ + 8.025290489196777, + 7.0, + -372.5 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-closeup-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-closeup-1-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-1-closeup-1-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": [ + 12.300736968064577, + -0.41885482108077465, + -372.839 + ], + "target": [ + 5.121, + 0.955, + -373.93899999999996 + ], + "yaw": -79.16730359618062, + "pitch": -8.557593063277757, + "focus": [ + 5.121, + 0.955, + -374.039 + ], + "center_z": -374.039, + "open_air_section": 2, + "route_distance_m": 15.4495, + "requested_route_distance_m": 15.4495, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-2-view-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-1.vfmesh", + "drawn_triangles": 271894, + "source_triangles": 349878, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 15.4495, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 12.300736968064577, + -0.41885482108077465, + -372.839 + ], + "target_actual_m": [ + 5.121, + 0.955, + -373.93899999999996 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-1-render.log", + "Saved/Linux/l110/captures/before/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.5854667283796422, + 2.0469420670970315, + -370.039 + ], + "target": [ + 4.748022366806118, + -0.9941734208107486, + -374.2872149486675 + ], + "yaw": 119.69146427854264, + "pitch": -34.6808549169467, + "focus": [ + 5.121, + 0.955, + -374.039 + ], + "center_z": -374.039, + "open_air_section": 2, + "route_distance_m": 15.4495, + "requested_route_distance_m": 15.4495, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-2-view-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-2.vfmesh", + "drawn_triangles": 307275, + "source_triangles": 399589, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 15.4495, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -0.5854667283796422, + 2.0469420670970315, + -370.039 + ], + "target_actual_m": [ + 4.748022366806118, + -0.9941734208107486, + -374.2872149486675 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-2-render.log", + "Saved/Linux/l110/captures/before/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": [ + 5.121, + 0.955, + -374.86899999999997 + ], + "target": [ + 3.8155782838214094, + -5.86710697283762, + -375.73775232033626 + ], + "yaw": -169.1673035961806, + "pitch": -7.1292164823138044, + "focus": [ + 5.121, + 0.955, + -374.039 + ], + "center_z": -374.039, + "open_air_section": 2, + "route_distance_m": 15.4495, + "requested_route_distance_m": 15.4495, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-2-view-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-3.vfmesh", + "drawn_triangles": 312807, + "source_triangles": 406051, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 15.4495, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 5.121, + 0.955, + -374.86899999999997 + ], + "target_actual_m": [ + 3.8155782838214094, + -5.86710697283762, + -375.73775232033626 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-3-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-2-closeup-1", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-2/exterior-1", + "camera": [ + 12.055191928117088, + -0.371869362083484, + -374.039 + ], + "target": [ + 8.126471288957266, + 0.37989798187316415, + -374.039 + ], + "yaw": -79.16730359618062, + "pitch": 0.0, + "focus": [ + 5.121, + 0.955, + -374.039 + ], + "center_z": -374.039, + "open_air_section": 2, + "route_distance_m": 15.4495, + "requested_route_distance_m": 15.4495, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-2-closeup-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-closeup-1.vfmesh", + "drawn_triangles": 271894, + "source_triangles": 349878, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 15.4495, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.747613272067384, + "shell_standoff_actual_m": 4.000000000000004, + "camera_actual_m": [ + 9.68297320632228, + -1.657778793789229, + -371.0076055136974 + ], + "target_actual_m": [ + 7.005910873413086, + 0.75, + -372.75 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-closeup-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-closeup-1-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-2-closeup-1-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": [ + 11.141700220129849, + -8.875616589111877, + -373.90500000000003 + ], + "target": [ + 3.519, + -7.417, + -375.005 + ], + "yaw": -79.1673035961807, + "pitch": -8.067045700553148, + "focus": [ + 3.519, + -7.417, + -375.105 + ], + "center_z": -375.105, + "open_air_section": 3, + "route_distance_m": 24.046, + "requested_route_distance_m": 24.046, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-3-view-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-1.vfmesh", + "drawn_triangles": 252183, + "source_triangles": 321447, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 24.046, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 11.141700220129849, + -8.875616589111877, + -373.90500000000003 + ], + "target_actual_m": [ + 3.519, + -7.417, + -375.005 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-1-render.log", + "Saved/Linux/l110/captures/before/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": [ + -2.630429980444914, + -6.2402961648718644, + -371.105 + ], + "target": [ + 3.1460223668061196, + -9.36617342081075, + -375.3532149486675 + ], + "yaw": 118.41965303912751, + "pitch": -32.89502331212217, + "focus": [ + 3.519, + -7.417, + -375.105 + ], + "center_z": -375.105, + "open_air_section": 3, + "route_distance_m": 24.046, + "requested_route_distance_m": 24.046, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-3-view-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-2.vfmesh", + "drawn_triangles": 299315, + "source_triangles": 388345, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 24.046, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -2.630429980444914, + -6.2402961648718644, + -371.105 + ], + "target_actual_m": [ + 3.1460223668061196, + -9.36617342081075, + -375.3532149486675 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-2-render.log", + "Saved/Linux/l110/captures/before/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": [ + 3.519, + -7.417, + -376.386 + ], + "target": [ + 2.2135782838214184, + -14.239106972837622, + -377.2547523203363 + ], + "yaw": -169.16730359618072, + "pitch": -7.1292164823138044, + "focus": [ + 3.519, + -7.417, + -375.105 + ], + "center_z": -375.105, + "open_air_section": 3, + "route_distance_m": 24.046, + "requested_route_distance_m": 24.046, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-3-view-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-3.vfmesh", + "drawn_triangles": 351475, + "source_triangles": 461781, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 24.046, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 3.519, + -7.417, + -376.386 + ], + "target_actual_m": [ + 2.2135782838214184, + -14.239106972837622, + -377.2547523203363 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-3-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-3-closeup-1", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-3/exterior-1", + "camera": [ + 10.89615518018236, + -8.828631130114585, + -375.105 + ], + "target": [ + 6.967434541022536, + -8.076863786157944, + -375.105 + ], + "yaw": -79.16730359618072, + "pitch": 0.0, + "focus": [ + 3.519, + -7.417, + -375.105 + ], + "center_z": -375.105, + "open_air_section": 3, + "route_distance_m": 24.046, + "requested_route_distance_m": 24.046, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-3-closeup-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-closeup-1.vfmesh", + "drawn_triangles": 252183, + "source_triangles": 321447, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 24.046, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.3174329211432412, + "shell_standoff_actual_m": 4.000000000000002, + "camera_actual_m": [ + 8.784844843821993, + -8.024371826745075, + -378.8748726519025 + ], + "target_actual_m": [ + 6.0037455558776855, + -8.0, + -376.0 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-closeup-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-closeup-1-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-3-closeup-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-view-1", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-4/view-1", + "camera": [ + -32.482581468460985, + -9.34596705521348, + -597.4219999999999 + ], + "target": [ + -24.253, + -7.219, + -598.5219999999999 + ], + "yaw": 75.50879325593182, + "pitch": -7.373766361330367, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-4-view-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-1.vfmesh", + "drawn_triangles": 361215, + "source_triangles": 458499, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -32.482581468460985, + -9.34596705521348, + -597.4219999999999 + ], + "target_actual_m": [ + -24.253, + -7.219, + -598.5219999999999 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-1-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-view-2", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-4/view-2", + "camera": [ + -17.4756976142086, + -5.467380072177135, + -594.622 + ], + "target": [ + -24.74519610426594, + -5.314613221376807, + -598.9840138013261 + ], + "yaw": -88.79611947547781, + "pitch": -30.960000123282537, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-4-view-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-2.vfmesh", + "drawn_triangles": 452228, + "source_triangles": 576768, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -17.4756976142086, + -5.467380072177135, + -594.622 + ], + "target_actual_m": [ + -24.74519610426594, + -5.314613221376807, + -598.9840138013261 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-2-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-2-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-view-3", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-4/view-3", + "camera": [ + -24.253, + -7.219, + -600.6419999999999 + ], + "target": [ + -25.975686364930784, + -0.5536462748188242, + -601.9090483046415 + ], + "yaw": -14.491206744068183, + "pitch": -10.428414406509091, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-4-view-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-3.vfmesh", + "drawn_triangles": 366459, + "source_triangles": 466847, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -24.253, + -7.219, + -600.6419999999999 + ], + "target_actual_m": [ + -25.975686364930784, + -0.5536462748188242, + -601.9090483046415 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-3-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-closeup-1", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-4/exterior-1", + "camera": [ + -32.24053495468272, + -9.283409200648377, + -598.622 + ], + "target": [ + -28.367790734230493, + -8.28248352760674, + -598.622 + ], + "yaw": 75.50879325593182, + "pitch": 0.0, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-4-closeup-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-1.vfmesh", + "drawn_triangles": 361215, + "source_triangles": 458499, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.15602865819942435, + "shell_standoff_actual_m": 3.9999999999999982, + "camera_actual_m": [ + -32.276085407577646, + -8.263009199972908, + -598.5031311789303 + ], + "target_actual_m": [ + -28.276107788085938, + -8.25, + -598.5 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-1-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-closeup-2", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-4/exterior-2", + "camera": [ + -17.55590230726807, + -5.488109284284067, + -594.1258461075878 + ], + "target": [ + -20.80297997647143, + -6.327329025237247, + -596.3057995099695 + ], + "yaw": -104.49120674406818, + "pitch": -33.023867555796805, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-4-closeup-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-2.vfmesh", + "drawn_triangles": 452228, + "source_triangles": 576768, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.1886265845301652, + "shell_standoff_actual_m": 4.000000000000031, + "camera_actual_m": [ + -18.427254462857434, + -4.189965272426484, + -593.9542041066624 + ], + "target_actual_m": [ + -20.75, + -6.499548435211182, + -596.25 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-2-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-2-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-closeup-3", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-4/exterior-3", + "camera": [ + -28.62845935432694, + -8.349854337337211, + -591.7198971388163 + ], + "target": [ + -26.507024515865393, + -7.801561325294927, + -595.0663712533296 + ], + "yaw": 75.50879325593182, + "pitch": -56.78474850626309, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-0-1-0-openair-4-closeup-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-3.vfmesh", + "drawn_triangles": 408374, + "source_triangles": 518000, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.15186780144421025, + "shell_standoff_actual_m": 4.000000000000007, + "camera_actual_m": [ + -27.172318155992244, + -7.7480671943761585, + -591.265952136927 + ], + "target_actual_m": [ + -26.5, + -7.75, + -595.2090454101562 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-3-render.log", + "Saved/Linux/l110/captures/before/passage-0-1-0-openair-4-closeup-3-quality.log" + ] + }, + { + "name": "passage-1-2-0-upper-mouth", + "passage": "passage/1-2/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + 23.155674552687962, + -16.14908662400146, + -731.7810546875 + ], + "target": [ + 17.392833879360907, + -13.33402139627713, + -731.8810546875 + ], + "yaw": -63.965152623598414, + "pitch": -0.8932686436727578, + "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/l110/captures/before/passage-1-2-0-upper-mouth.vfmesh", + "drawn_triangles": 565769, + "source_triangles": 630011, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 23.155674552687962, + -16.14908662400146, + -731.7810546875 + ], + "target_actual_m": [ + 17.392833879360907, + -13.33402139627713, + -731.8810546875 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-1-2-0-upper-mouth-mesh.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-upper-mouth-render.log", + "Saved/Linux/l110/captures/before/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.669370041560203, + -17.931687050798093, + -752.0090260818968 + ], + "target": [ + 17.37583574782943, + -13.414618104437244, + -753.05390625 + ], + "yaw": -66.30689197709175, + "pitch": -5.3105178623917535, + "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/l110/captures/before/passage-1-2-0-lower-mouth.vfmesh", + "drawn_triangles": 505668, + "source_triangles": 542780, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 27.669370041560203, + -17.931687050798093, + -752.0090260818968 + ], + "target_actual_m": [ + 17.37583574782943, + -13.414618104437244, + -753.05390625 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-1-2-0-lower-mouth-mesh.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-lower-mouth-render.log", + "Saved/Linux/l110/captures/before/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": [ + 13.839984288397812, + 6.587904286061814, + -736.8018138353019 + ], + "target": [ + 2.363156319326185, + 14.183439358820996, + -739.2050534708565 + ], + "yaw": -56.5028177078219, + "pitch": -9.905162260563504, + "focus": [ + 14.477989100250685, + 6.982175588660137, + -735.631813835302 + ], + "center_z": -735.631813835302, + "route_distance_m": 28.46821190286393, + "route_length_m": 113.87284761145573, + "requested_route_distance_m": 28.46821190286393, + "variant": "before", + "capture": "captures/before/passage-1-2-0-station-25.png", + "scene": "Saved/Linux/l110/captures/before/passage-1-2-0-station-25.vfmesh", + "drawn_triangles": 655764, + "source_triangles": 762668, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 28.46821190286393, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 13.839984288397812, + 6.587904286061814, + -736.8018138353019 + ], + "target_actual_m": [ + 2.363156319326185, + 14.183439358820996, + -739.2050534708565 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-1-2-0-station-25-mesh.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-station-25-render.log", + "Saved/Linux/l110/captures/before/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.371258739883528, + 11.724083505834441, + -742.0951650605518 + ], + "target": [ + -12.783765342228843, + -1.6446342816727475, + -744.4990059410221 + ], + "yaw": -161.73390326754287, + "pitch": -9.689827619924415, + "focus": [ + -8.819483630432973, + 12.325410744109856, + -740.9251650605519 + ], + "center_z": -740.9251650605519, + "route_distance_m": 56.93642380572786, + "route_length_m": 113.87284761145573, + "requested_route_distance_m": 56.93642380572786, + "variant": "before", + "capture": "captures/before/passage-1-2-0-station-50.png", + "scene": "Saved/Linux/l110/captures/before/passage-1-2-0-station-50.vfmesh", + "drawn_triangles": 590530, + "source_triangles": 681672, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 56.93642380572786, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -8.371258739883528, + 11.724083505834441, + -742.0951650605518 + ], + "target_actual_m": [ + -12.783765342228843, + -1.6446342816727475, + -744.4990059410221 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-1-2-0-station-50-mesh.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-station-50-render.log", + "Saved/Linux/l110/captures/before/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.586769568915752, + -10.735033108069532, + -747.3888312649981 + ], + "target": [ + 7.430752597530391, + -10.891774630023567, + -749.7924798389191 + ], + "yaw": 90.6406448523091, + "pitch": -9.729542154499603, + "focus": [ + -6.9939308656579335, + -11.364889979457965, + -746.2188312649981 + ], + "center_z": -746.2188312649981, + "route_distance_m": 85.4046357085918, + "route_length_m": 113.87284761145573, + "requested_route_distance_m": 85.4046357085918, + "variant": "before", + "capture": "captures/before/passage-1-2-0-station-75.png", + "scene": "Saved/Linux/l110/captures/before/passage-1-2-0-station-75.vfmesh", + "drawn_triangles": 607508, + "source_triangles": 696694, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 85.4046357085918, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -6.586769568915752, + -10.735033108069532, + -747.3888312649981 + ], + "target_actual_m": [ + 7.430752597530391, + -10.891774630023567, + -749.7924798389191 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-1-2-0-station-75-mesh.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-station-75-render.log", + "Saved/Linux/l110/captures/before/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": [ + 5.970328502711869, + -4.077984872526297, + -748.2339999999999 + ], + "target": [ + 9.136, + -11.613, + -749.334 + ], + "yaw": 157.21135612217134, + "pitch": -7.6653476882049, + "focus": [ + 9.136, + -11.613, + -749.434 + ], + "center_z": -749.434, + "open_air_section": 1, + "route_distance_m": 103.1595, + "requested_route_distance_m": 103.1595, + "route_length_m": 113.87284761145573, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-1-view-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-1.vfmesh", + "drawn_triangles": 624462, + "source_triangles": 721352, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 103.1595, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 5.970328502711869, + -4.077984872526297, + -748.2339999999999 + ], + "target_actual_m": [ + 9.136, + -11.613, + -749.334 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-1-render.log", + "Saved/Linux/l110/captures/before/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": [ + 11.720672201321875, + -17.765105217867614, + -745.434 + ], + "target": [ + 10.94776719052517, + -10.851825714648527, + -749.8056360513408 + ], + "yaw": -6.379180837289254, + "pitch": -32.14682033821005, + "focus": [ + 9.136, + -11.613, + -749.434 + ], + "center_z": -749.434, + "open_air_section": 1, + "route_distance_m": 103.1595, + "requested_route_distance_m": 103.1595, + "route_length_m": 113.87284761145573, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-1-view-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-2.vfmesh", + "drawn_triangles": 582866, + "source_triangles": 654974, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 103.1595, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 11.720672201321875, + -17.765105217867614, + -745.434 + ], + "target_actual_m": [ + 10.94776719052517, + -10.851825714648527, + -749.8056360513408 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-2-render.log", + "Saved/Linux/l110/captures/before/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.136, + -11.613, + -750.954 + ], + "target": [ + 15.477185166838094, + -8.948890001269849, + -752.2547261796929 + ], + "yaw": 67.21135612217135, + "pitch": -10.708828804851287, + "focus": [ + 9.136, + -11.613, + -749.434 + ], + "center_z": -749.434, + "open_air_section": 1, + "route_distance_m": 103.1595, + "requested_route_distance_m": 103.1595, + "route_length_m": 113.87284761145573, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-1-view-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-3.vfmesh", + "drawn_triangles": 611168, + "source_triangles": 698168, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 103.1595, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 9.136, + -11.613, + -750.954 + ], + "target_actual_m": [ + 15.477185166838094, + -8.948890001269849, + -752.2547261796929 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-3-render.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-view-3-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-1-closeup-1", + "passage": "passage/1-2/0", + "kind": "open-air-closeup", + "station": "section-1/exterior-1", + "camera": [ + 6.067161718706245, + -4.308469857460645, + -749.434 + ], + "target": [ + 7.616493174616256, + -7.996229616410212, + -749.434 + ], + "yaw": 157.21135612217137, + "pitch": 0.0, + "focus": [ + 9.136, + -11.613, + -749.434 + ], + "center_z": -749.434, + "open_air_section": 1, + "route_distance_m": 103.1595, + "requested_route_distance_m": 103.1595, + "route_length_m": 113.87284761145573, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-1-2-0-openair-1-closeup-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-closeup-1.vfmesh", + "drawn_triangles": 624462, + "source_triangles": 721352, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 103.1595, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.049312903238708, + "shell_standoff_actual_m": 4.0, + "camera_actual_m": [ + 7.483738721923237, + -5.037001998964348, + -749.5053478764611 + ], + "target_actual_m": [ + 7.5, + -9.036965370178223, + -749.5 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-closeup-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-closeup-1-render.log", + "Saved/Linux/l110/captures/before/passage-1-2-0-openair-1-closeup-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-upper-mouth", + "passage": "passage/2-3/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + -24.510890451086325, + -4.955138452601283, + -811.975390625 + ], + "target": [ + -18.085437577294964, + -5.118679784954985, + -812.075390625 + ], + "yaw": 91.4579836961561, + "pitch": -0.8913396541976134, + "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/l110/captures/before/passage-2-3-0-upper-mouth.vfmesh", + "drawn_triangles": 57772, + "source_triangles": 71470, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -24.510890451086325, + -4.955138452601283, + -811.975390625 + ], + "target_actual_m": [ + -18.085437577294964, + -5.118679784954985, + -812.075390625 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-upper-mouth-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-upper-mouth-render.log", + "Saved/Linux/l110/captures/before/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": [ + -29.049715742915396, + -2.779103580443535, + -899.0170545422176 + ], + "target": [ + -18.170454580438843, + -5.550307963327683, + -900.0333984375 + ], + "yaw": 104.29068028993358, + "pitch": -5.172857326977102, + "focus": [ + -20.062499999999982, + -5.068359375000004, + -898.7133984375 + ], + "center_z": -898.7133984375, + "variant": "before", + "capture": "captures/before/passage-2-3-0-lower-mouth.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-lower-mouth.vfmesh", + "drawn_triangles": 291268, + "source_triangles": 315506, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -29.049715742915396, + -2.779103580443535, + -899.0170545422176 + ], + "target_actual_m": [ + -18.170454580438843, + -5.550307963327683, + -900.0333984375 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-lower-mouth-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-lower-mouth-render.log", + "Saved/Linux/l110/captures/before/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.3629477943069905, + -13.28264789111628, + -833.6924223707634 + ], + "target": [ + 14.057544579024707, + -4.268177781320185, + -836.0006826204402 + ], + "yaw": 49.87247810025953, + "pitch": -9.371026953528995, + "focus": [ + 3.463454182082567, + -14.025883026195553, + -832.5224223707635 + ], + "center_z": -832.5224223707635, + "route_distance_m": 122.71082287166668, + "route_length_m": 490.8432914866667, + "requested_route_distance_m": 122.71082287166668, + "variant": "before", + "capture": "captures/before/passage-2-3-0-station-25.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-station-25.vfmesh", + "drawn_triangles": 53210, + "source_triangles": 66458, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 122.71082287166668, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 3.3629477943069905, + -13.28264789111628, + -833.6924223707634 + ], + "target_actual_m": [ + 14.057544579024707, + -4.268177781320185, + -836.0006826204402 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-station-25-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-station-25-render.log", + "Saved/Linux/l110/captures/before/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": [ + 14.714964374766744, + 4.426031524861205, + -855.6817931947601 + ], + "target": [ + 3.8569544509891096, + 13.535757747237458, + -857.9904777239444 + ], + "yaw": -50.003796291172236, + "pitch": -9.251614459440251, + "focus": [ + 15.448414166573603, + 4.582720397786105, + -854.5117931947601 + ], + "center_z": -854.5117931947601, + "route_distance_m": 245.42164574333336, + "route_length_m": 490.8432914866667, + "requested_route_distance_m": 245.42164574333336, + "variant": "before", + "capture": "captures/before/passage-2-3-0-station-50.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-station-50.vfmesh", + "drawn_triangles": 454314, + "source_triangles": 479058, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 245.42164574333336, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 14.714964374766744, + 4.426031524861205, + -855.6817931947601 + ], + "target_actual_m": [ + 3.8569544509891096, + 13.535757747237458, + -857.9904777239444 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-station-50-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-station-50-render.log", + "Saved/Linux/l110/captures/before/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.760169952738466, + 11.295442453574074, + -877.6716971250207 + ], + "target": [ + -12.206687475534688, + -0.996781882252304, + -879.9807693267177 + ], + "yaw": -152.32574657735572, + "pitch": -9.445159710566168, + "focus": [ + -6.190732087251391, + 11.909540367854586, + -876.5016971250208 + ], + "center_z": -876.5016971250208, + "route_distance_m": 368.13246861500005, + "route_length_m": 490.8432914866667, + "requested_route_distance_m": 368.13246861500005, + "variant": "before", + "capture": "captures/before/passage-2-3-0-station-75.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-station-75.vfmesh", + "drawn_triangles": 475142, + "source_triangles": 506686, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 368.13246861500005, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -5.760169952738466, + 11.295442453574074, + -877.6716971250207 + ], + "target_actual_m": [ + -12.206687475534688, + -0.996781882252304, + -879.9807693267177 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-station-75-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-station-75-render.log", + "Saved/Linux/l110/captures/before/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": [ + -1.189937432971333, + -5.322285697427915, + -813.0459999999999 + ], + "target": [ + -2.846, + -13.149, + -814.146 + ], + "yaw": -168.05293971491665, + "pitch": -7.829076510059767, + "focus": [ + -2.846, + -13.149, + -814.246 + ], + "center_z": -814.246, + "open_air_section": 1, + "route_distance_m": 21.212, + "requested_route_distance_m": 21.212, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-1-view-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-1.vfmesh", + "drawn_triangles": 103940, + "source_triangles": 129366, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 21.212, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -1.189937432971333, + -5.322285697427915, + -813.0459999999999 + ], + "target_actual_m": [ + -2.846, + -13.149, + -814.146 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-1-render.log", + "Saved/Linux/l110/captures/before/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": [ + -4.1915508357107925, + -19.508205370839818, + -810.246 + ], + "target": [ + -0.9210204431637441, + -13.556308413611612, + -814.6045436681405 + ], + "yaw": 28.788521091259426, + "pitch": -32.69176164676129, + "focus": [ + -2.846, + -13.149, + -814.246 + ], + "center_z": -814.246, + "open_air_section": 1, + "route_distance_m": 21.212, + "requested_route_distance_m": 21.212, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-1-view-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-2.vfmesh", + "drawn_triangles": 79774, + "source_triangles": 99432, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 21.212, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -4.1915508357107925, + -19.508205370839818, + -810.246 + ], + "target_actual_m": [ + -0.9210204431637441, + -13.556308413611612, + -814.6045436681405 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-2-render.log", + "Saved/Linux/l110/captures/before/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": [ + -2.846, + -13.149, + -815.766 + ], + "target": [ + 3.891428448926896, + -14.574579447640645, + -817.0209028384919 + ], + "yaw": 101.94706028508335, + "pitch": -10.327349081567025, + "focus": [ + -2.846, + -13.149, + -814.246 + ], + "center_z": -814.246, + "open_air_section": 1, + "route_distance_m": 21.212, + "requested_route_distance_m": 21.212, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-1-view-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-3.vfmesh", + "drawn_triangles": 94306, + "source_triangles": 118068, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 21.212, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -2.846, + -13.149, + -815.766 + ], + "target_actual_m": [ + 3.891428448926896, + -14.574579447640645, + -817.0209028384919 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-3-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-1-closeup-1", + "passage": "passage/2-3/0", + "kind": "open-air-closeup", + "station": "section-1/exterior-1", + "camera": [ + -1.241689388190979, + -5.566870519383293, + -814.246 + ], + "target": [ + -2.0697206717053125, + -9.480227670669334, + -814.246 + ], + "yaw": -168.05293971491665, + "pitch": 0.0, + "focus": [ + -2.846, + -13.149, + -814.246 + ], + "center_z": -814.246, + "open_air_section": 1, + "route_distance_m": 21.212, + "requested_route_distance_m": 21.212, + "route_length_m": 490.8432914866667, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-1-closeup-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-closeup-1.vfmesh", + "drawn_triangles": 103940, + "source_triangles": 129366, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 21.212, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 2.3837152441155633, + "shell_standoff_actual_m": 3.9999999999999867, + "camera_actual_m": [ + -1.977643725573553, + -8.062518351178614, + -813.2553830073824 + ], + "target_actual_m": [ + -3.0, + -10.75, + -816.0360717773438 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-closeup-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-closeup-1-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-1-closeup-1-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": [ + -2.9130850464832285, + 5.083885109955194, + -876.048 + ], + "target": [ + -9.545, + 9.558, + -877.148 + ], + "yaw": -55.995061323335754, + "pitch": -7.829076510059767, + "focus": [ + -9.545, + 9.558, + -877.248 + ], + "center_z": -877.248, + "open_air_section": 2, + "route_distance_m": 372.7845, + "requested_route_distance_m": 372.7845, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-2-view-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-1.vfmesh", + "drawn_triangles": 475512, + "source_triangles": 507502, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 372.7845, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -2.9130850464832285, + 5.083885109955194, + -876.048 + ], + "target_actual_m": [ + -9.545, + 9.558, + -877.148 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-1-render.log", + "Saved/Linux/l110/captures/before/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.933430899732377, + 13.193218348161405, + -873.248 + ], + "target": [ + -10.645401808697681, + 7.926890520398333, + -877.6066052494994 + ], + "yaw": 140.84630886232915, + "pitch": -32.69214209091069, + "focus": [ + -9.545, + 9.558, + -877.248 + ], + "center_z": -877.248, + "open_air_section": 2, + "route_distance_m": 372.7845, + "requested_route_distance_m": 372.7845, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-2-view-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-2.vfmesh", + "drawn_triangles": 477216, + "source_triangles": 506272, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 372.7845, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -14.933430899732377, + 13.193218348161405, + -873.248 + ], + "target_actual_m": [ + -10.645401808697681, + 7.926890520398333, + -877.6066052494994 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-2-render.log", + "Saved/Linux/l110/captures/before/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.545, + 9.558, + -878.768 + ], + "target": [ + -13.396406330441884, + 3.8491168213941664, + -880.0231183732476 + ], + "yaw": -145.99506132333573, + "pitch": -10.329142313691902, + "focus": [ + -9.545, + 9.558, + -877.248 + ], + "center_z": -877.248, + "open_air_section": 2, + "route_distance_m": 372.7845, + "requested_route_distance_m": 372.7845, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-2-view-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-3.vfmesh", + "drawn_triangles": 477216, + "source_triangles": 506272, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 372.7845, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -9.545, + 9.558, + -878.768 + ], + "target_actual_m": [ + -13.396406330441884, + 3.8491168213941664, + -880.0231183732476 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-3-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-2-closeup-1", + "passage": "passage/2-3/0", + "kind": "open-air-closeup", + "station": "section-2/exterior-1", + "camera": [ + -3.1203323887806276, + 5.223701200269094, + -877.248 + ], + "target": [ + -6.436289865539013, + 7.460758645291497, + -877.248 + ], + "yaw": -55.995061323335754, + "pitch": 0.0, + "focus": [ + -9.545, + 9.558, + -877.248 + ], + "center_z": -877.248, + "open_air_section": 2, + "route_distance_m": 372.7845, + "requested_route_distance_m": 372.7845, + "route_length_m": 490.8432914866667, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-2-closeup-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-closeup-1.vfmesh", + "drawn_triangles": 475512, + "source_triangles": 507502, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 372.7845, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.7191416770143297, + "shell_standoff_actual_m": 4.0, + "camera_actual_m": [ + -6.71216365920087, + 5.196582298001673, + -877.261698456538 + ], + "target_actual_m": [ + -6.25, + 9.16977596282959, + -877.25 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-closeup-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-closeup-1-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-2-closeup-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-3-view-1", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-3/view-1", + "camera": [ + -4.259540253679528, + -6.656854577309242, + -880.059 + ], + "target": [ + -11.172, + -10.684, + -881.159 + ], + "yaw": -120.224745904394, + "pitch": -7.829076510059767, + "focus": [ + -11.172, + -10.684, + -881.259 + ], + "center_z": -881.259, + "open_air_section": 3, + "route_distance_m": 395.169, + "requested_route_distance_m": 395.169, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-3-view-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-1.vfmesh", + "drawn_triangles": 484608, + "source_triangles": 518310, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 395.169, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -4.259540253679528, + -6.656854577309242, + -880.059 + ], + "target_actual_m": [ + -11.172, + -10.684, + -881.159 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-1-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-3-view-2", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-3/view-2", + "camera": [ + -16.788373543885385, + -13.95605565593624, + -877.259 + ], + "target": [ + -10.181507700208023, + -12.384146737382467, + -881.6173658401976 + ], + "yaw": 76.6169764950821, + "pitch": -32.69066303746625, + "focus": [ + -11.172, + -10.684, + -881.259 + ], + "center_z": -881.259, + "open_air_section": 3, + "route_distance_m": 395.169, + "requested_route_distance_m": 395.169, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-3-view-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-2.vfmesh", + "drawn_triangles": 475290, + "source_triangles": 497212, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 395.169, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -16.788373543885385, + -13.95605565593624, + -877.259 + ], + "target_actual_m": [ + -10.181507700208023, + -12.384146737382467, + -881.6173658401976 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-2-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-2-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-3-view-3", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-3/view-3", + "camera": [ + -11.172, + -10.684, + -882.779 + ], + "target": [ + -7.70527695072808, + -16.63451358083864, + -884.0332804406917 + ], + "yaw": 149.77525409560604, + "pitch": -10.322170838480888, + "focus": [ + -11.172, + -10.684, + -881.259 + ], + "center_z": -881.259, + "open_air_section": 3, + "route_distance_m": 395.169, + "requested_route_distance_m": 395.169, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-3-view-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-3.vfmesh", + "drawn_triangles": 488256, + "source_triangles": 519892, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 395.169, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -11.172, + -10.684, + -882.779 + ], + "target_actual_m": [ + -7.70527695072808, + -16.63451358083864, + -884.0332804406917 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-3-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-3-closeup-1", + "passage": "passage/2-3/0", + "kind": "open-air-closeup", + "station": "section-3/exterior-1", + "camera": [ + -4.475554620752043, + -6.782702871768327, + -881.259 + ], + "target": [ + -7.9317844939122795, + -8.796275583113706, + -881.259 + ], + "yaw": -120.224745904394, + "pitch": 0.0, + "focus": [ + -11.172, + -10.684, + -881.259 + ], + "center_z": -881.259, + "open_air_section": 3, + "route_distance_m": 395.169, + "requested_route_distance_m": 395.169, + "route_length_m": 490.8432914866667, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-3-closeup-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-closeup-1.vfmesh", + "drawn_triangles": 484608, + "source_triangles": 518310, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 395.169, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.09145205832537352, + "shell_standoff_actual_m": 3.9999999999999996, + "camera_actual_m": [ + -8.243374548045272, + -4.863942990990031, + -881.2392626951312 + ], + "target_actual_m": [ + -8.0, + -8.856517791748047, + -881.25 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-closeup-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-closeup-1-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-3-closeup-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-4-view-1", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-4/view-1", + "camera": [ + 5.6333128025989625, + 3.3735740461566257, + -889.2199999999999 + ], + "target": [ + 9.72, + 10.251, + -890.3199999999999 + ], + "yaw": 30.71952465304602, + "pitch": -7.8290765100597675, + "focus": [ + 9.72, + 10.251, + -890.42 + ], + "center_z": -890.42, + "open_air_section": 4, + "route_distance_m": 446.293, + "requested_route_distance_m": 446.293, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-4-view-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-1.vfmesh", + "drawn_triangles": 475298, + "source_triangles": 507112, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 446.293, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 5.6333128025989625, + 3.3735740461566257, + -889.2199999999999 + ], + "target_actual_m": [ + 9.72, + 10.251, + -890.3199999999999 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-1-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-4-view-2", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-4/view-2", + "camera": [ + 13.040433347888344, + 15.838908587497741, + -886.42 + ], + "target": [ + 8.028477501069965, + 11.25613235429748, + -890.7784139868335 + ], + "yaw": -132.43882376014432, + "pitch": -32.69096048480686, + "focus": [ + 9.72, + 10.251, + -890.42 + ], + "center_z": -890.42, + "open_air_section": 4, + "route_distance_m": 446.293, + "requested_route_distance_m": 446.293, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-4-view-2.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-2.vfmesh", + "drawn_triangles": 494744, + "source_triangles": 530508, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 446.293, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 13.040433347888344, + 15.838908587497741, + -886.42 + ], + "target_actual_m": [ + 8.028477501069965, + 11.25613235429748, + -890.7784139868335 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-2-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-2-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-2-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-4-view-3", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-4/view-3", + "camera": [ + 9.72, + 10.251, + -891.9399999999999 + ], + "target": [ + 3.7996712537448776, + 13.768963240041181, + -893.1944489539172 + ], + "yaw": -59.280475346953985, + "pitch": -10.32357283123646, + "focus": [ + 9.72, + 10.251, + -890.42 + ], + "center_z": -890.42, + "open_air_section": 4, + "route_distance_m": 446.293, + "requested_route_distance_m": 446.293, + "route_length_m": 490.8432914866667, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-4-view-3.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-3.vfmesh", + "drawn_triangles": 495418, + "source_triangles": 531424, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 446.293, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 9.72, + 10.251, + -891.9399999999999 + ], + "target_actual_m": [ + 3.7996712537448776, + 13.768963240041181, + -893.1944489539172 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-3-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-3-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-4-closeup-1", + "passage": "passage/2-3/0", + "kind": "open-air-closeup", + "station": "section-4/exterior-1", + "camera": [ + 5.761021777517746, + 3.588493607214231, + -890.42 + ], + "target": [ + 7.804365376218264, + 7.027206584135918, + -890.42 + ], + "yaw": 30.719524653046015, + "pitch": 0.0, + "focus": [ + 9.72, + 10.251, + -890.42 + ], + "center_z": -890.42, + "open_air_section": 4, + "route_distance_m": 446.293, + "requested_route_distance_m": 446.293, + "route_length_m": 490.8432914866667, + "shell_standoff_m": 4.0, + "variant": "before", + "capture": "captures/before/passage-2-3-0-openair-4-closeup-1.png", + "scene": "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-closeup-1.vfmesh", + "drawn_triangles": 475298, + "source_triangles": 507112, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 446.293, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.343753310012064, + "shell_standoff_actual_m": 3.9999999999999614, + "camera_actual_m": [ + 7.413494649349525, + 7.104643671833882, + -886.0972185466462 + ], + "target_actual_m": [ + 7.75, + 7.0, + -890.0816650390625 + ], + "logs": [ + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-closeup-1-mesh.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-closeup-1-render.log", + "Saved/Linux/l110/captures/before/passage-2-3-0-openair-4-closeup-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-upper-mouth", + "passage": "passage/0-1/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + 8.839199674686244, + 20.385640196824248, + -371.842578125 + ], + "target": [ + 7.627022366806115, + 14.050826579189224, + -371.942578125 + ], + "yaw": -169.1673035961807, + "pitch": -0.8882703208739064, + "focus": [ + 8.0, + 16.0, + -372.122578125 + ], + "center_z": -372.122578125, + "variant": "after", + "capture": "captures/after/passage-0-1-0-upper-mouth.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-upper-mouth.vfmesh", + "drawn_triangles": 244932, + "source_triangles": 310602, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 8.839199674686244, + 20.385640196824248, + -371.842578125 + ], + "target_actual_m": [ + 7.627022366806115, + 14.050826579189224, + -371.942578125 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-upper-mouth-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-upper-mouth-render.log", + "Saved/Linux/l110/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.29870756948553, + 9.932859678359986, + -735.514490514727 + ], + "target": [ + 24.47653648208193, + 1.781610133503092, + -736.6798828125 + ], + "yaw": -136.18021933793756, + "pitch": -5.889606445716861, + "focus": [ + 25.836914062499947, + 3.199218749999943, + -734.8598828125 + ], + "center_z": -734.8598828125, + "variant": "after", + "capture": "captures/after/passage-0-1-0-lower-mouth.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-lower-mouth.vfmesh", + "drawn_triangles": 549634, + "source_triangles": 611478, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 32.29870756948553, + 9.932859678359986, + -735.514490514727 + ], + "target_actual_m": [ + 24.47653648208193, + 1.781610133503092, + -736.6798828125 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-lower-mouth-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-lower-mouth-render.log", + "Saved/Linux/l110/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.832678263995309, + -18.72062618817443, + -462.7942446741164 + ], + "target": [ + -21.89083852694916, + -7.989572734179358, + -465.1289462328135 + ], + "yaw": -33.33421057217368, + "pitch": -10.302233434343137, + "focus": [ + -14.365775643756486, + -18.133683309169903, + -461.1242446741164 + ], + "center_z": -461.1242446741164, + "route_distance_m": 503.59931612822896, + "route_length_m": 2014.3972645129159, + "requested_route_distance_m": 503.59931612822896, + "variant": "after", + "capture": "captures/after/passage-0-1-0-station-25.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-station-25.vfmesh", + "drawn_triangles": 136516, + "source_triangles": 194558, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 503.59931612822896, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -14.832678263995309, + -18.72062618817443, + -462.7942446741164 + ], + "target_actual_m": [ + -21.89083852694916, + -7.989572734179358, + -465.1289462328135 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-station-25-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-station-25-render.log", + "Saved/Linux/l110/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.478551888892594, + 21.511593715955158, + -553.9658220811451 + ], + "target": [ + 7.751504608756267, + 21.398972718233775, + -556.3002867114685 + ], + "yaw": 90.48771915686082, + "pitch": -10.006569463318558, + "focus": [ + -5.390306191921176, + 20.7668033447996, + -552.2958220811452 + ], + "center_z": -552.2958220811452, + "route_distance_m": 1007.1986322564579, + "route_length_m": 2014.3972645129159, + "requested_route_distance_m": 1007.1986322564579, + "variant": "after", + "capture": "captures/after/passage-0-1-0-station-50.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-station-50.vfmesh", + "drawn_triangles": 434960, + "source_triangles": 583712, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1007.1986322564579, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -5.478551888892594, + 21.511593715955158, + -553.9658220811451 + ], + "target_actual_m": [ + 7.751504608756267, + 21.398972718233775, + -556.3002867114685 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-station-50-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-station-50-render.log", + "Saved/Linux/l110/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.41045488666863, + -13.591590559867178, + -645.1369534883806 + ], + "target": [ + 6.2905981482465405, + -21.544778689774127, + -647.4714776908803 + ], + "yaw": -128.16377958476315, + "pitch": -10.28040282125882, + "focus": [ + 15.809745384875612, + -13.142538119215107, + -643.4669534883807 + ], + "center_z": -643.4669534883807, + "route_distance_m": 1510.7979483846868, + "route_length_m": 2014.3972645129159, + "requested_route_distance_m": 1510.7979483846868, + "variant": "after", + "capture": "captures/after/passage-0-1-0-station-75.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-station-75.vfmesh", + "drawn_triangles": 291514, + "source_triangles": 390992, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1510.7979483846868, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 16.41045488666863, + -13.591590559867178, + -645.1369534883806 + ], + "target_actual_m": [ + 6.2905981482465405, + -21.544778689774127, + -647.4714776908803 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-station-75-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-station-75-render.log", + "Saved/Linux/l110/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": [ + 13.209009551818514, + 6.199300705187415, + -372.004 + ], + "target": [ + 6.375, + 7.507, + -373.104 + ], + "yaw": -79.16730359618066, + "pitch": -8.983620476603383, + "focus": [ + 6.375, + 7.507, + -373.204 + ], + "center_z": -373.204, + "open_air_section": 1, + "route_distance_m": 8.7215, + "requested_route_distance_m": 8.7215, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-1-view-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-1.vfmesh", + "drawn_triangles": 278806, + "source_triangles": 360094, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.7215, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 13.209009551818514, + 6.199300705187415, + -372.004 + ], + "target_actual_m": [ + 6.375, + 7.507, + -373.104 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-1-render.log", + "Saved/Linux/l110/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.0142606878664209, + 8.532786540828843, + -369.204 + ], + "target": [ + 6.002022366806118, + 5.557826579189251, + -373.4522149486675 + ], + "yaw": 120.81404399724752, + "pitch": -36.18521056311671, + "focus": [ + 6.375, + 7.507, + -373.204 + ], + "center_z": -373.204, + "open_air_section": 1, + "route_distance_m": 8.7215, + "requested_route_distance_m": 8.7215, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-1-view-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-2.vfmesh", + "drawn_triangles": 287745, + "source_triangles": 370825, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.7215, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 1.0142606878664209, + 8.532786540828843, + -369.204 + ], + "target_actual_m": [ + 6.002022366806118, + 5.557826579189251, + -373.4522149486675 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-2-render.log", + "Saved/Linux/l110/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": [ + 6.375, + 7.507, + -373.682 + ], + "target": [ + 5.069578283821414, + 0.6848930271623788, + -374.5507523203363 + ], + "yaw": -169.16730359618066, + "pitch": -7.1292164823138044, + "focus": [ + 6.375, + 7.507, + -373.204 + ], + "center_z": -373.204, + "open_air_section": 1, + "route_distance_m": 8.7215, + "requested_route_distance_m": 8.7215, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-1-view-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-3.vfmesh", + "drawn_triangles": 312051, + "source_triangles": 405539, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.7215, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 6.375, + 7.507, + -373.682 + ], + "target_actual_m": [ + 5.069578283821414, + 0.6848930271623788, + -374.5507523203363 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-3-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-1-closeup-1", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-1/exterior-1", + "camera": [ + 12.963464511871024, + 6.246286164184705, + -373.204 + ], + "target": [ + 9.0347438727112, + 6.998053508141351, + -373.204 + ], + "yaw": -79.16730359618066, + "pitch": 0.0, + "focus": [ + 6.375, + 7.507, + -373.204 + ], + "center_z": -373.204, + "open_air_section": 1, + "route_distance_m": 8.7215, + "requested_route_distance_m": 8.7215, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-1-closeup-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-closeup-1.vfmesh", + "drawn_triangles": 278806, + "source_triangles": 360094, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 8.7215, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.2306973317267258, + "shell_standoff_actual_m": 4.000000000000004, + "camera_actual_m": [ + 11.473374984983819, + 6.671130159811255, + -370.4993606176706 + ], + "target_actual_m": [ + 8.025290489196777, + 7.0, + -372.5 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-closeup-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-closeup-1-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-1-closeup-1-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": [ + 12.300736968064577, + -0.41885482108077465, + -372.839 + ], + "target": [ + 5.121, + 0.955, + -373.93899999999996 + ], + "yaw": -79.16730359618062, + "pitch": -8.557593063277757, + "focus": [ + 5.121, + 0.955, + -374.039 + ], + "center_z": -374.039, + "open_air_section": 2, + "route_distance_m": 15.4495, + "requested_route_distance_m": 15.4495, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-2-view-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-1.vfmesh", + "drawn_triangles": 271138, + "source_triangles": 349366, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 15.4495, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 12.300736968064577, + -0.41885482108077465, + -372.839 + ], + "target_actual_m": [ + 5.121, + 0.955, + -373.93899999999996 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-1-render.log", + "Saved/Linux/l110/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.5854667283796422, + 2.0469420670970315, + -370.039 + ], + "target": [ + 4.748022366806118, + -0.9941734208107486, + -374.2872149486675 + ], + "yaw": 119.69146427854264, + "pitch": -34.6808549169467, + "focus": [ + 5.121, + 0.955, + -374.039 + ], + "center_z": -374.039, + "open_air_section": 2, + "route_distance_m": 15.4495, + "requested_route_distance_m": 15.4495, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-2-view-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-2.vfmesh", + "drawn_triangles": 306519, + "source_triangles": 399077, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 15.4495, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -0.5854667283796422, + 2.0469420670970315, + -370.039 + ], + "target_actual_m": [ + 4.748022366806118, + -0.9941734208107486, + -374.2872149486675 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-2-render.log", + "Saved/Linux/l110/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": [ + 5.121, + 0.955, + -374.86899999999997 + ], + "target": [ + 3.8155782838214094, + -5.86710697283762, + -375.73775232033626 + ], + "yaw": -169.1673035961806, + "pitch": -7.1292164823138044, + "focus": [ + 5.121, + 0.955, + -374.039 + ], + "center_z": -374.039, + "open_air_section": 2, + "route_distance_m": 15.4495, + "requested_route_distance_m": 15.4495, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-2-view-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-3.vfmesh", + "drawn_triangles": 312051, + "source_triangles": 405539, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 15.4495, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 5.121, + 0.955, + -374.86899999999997 + ], + "target_actual_m": [ + 3.8155782838214094, + -5.86710697283762, + -375.73775232033626 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-3-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-2-closeup-1", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-2/exterior-1", + "camera": [ + 12.055191928117088, + -0.371869362083484, + -374.039 + ], + "target": [ + 8.126471288957266, + 0.37989798187316415, + -374.039 + ], + "yaw": -79.16730359618062, + "pitch": 0.0, + "focus": [ + 5.121, + 0.955, + -374.039 + ], + "center_z": -374.039, + "open_air_section": 2, + "route_distance_m": 15.4495, + "requested_route_distance_m": 15.4495, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-2-closeup-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-closeup-1.vfmesh", + "drawn_triangles": 271138, + "source_triangles": 349366, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 15.4495, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.747613272067384, + "shell_standoff_actual_m": 4.000000000000004, + "camera_actual_m": [ + 9.68297320632228, + -1.657778793789229, + -371.0076055136974 + ], + "target_actual_m": [ + 7.005910873413086, + 0.75, + -372.75 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-closeup-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-closeup-1-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-2-closeup-1-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": [ + 11.141700220129849, + -8.875616589111877, + -373.90500000000003 + ], + "target": [ + 3.519, + -7.417, + -375.005 + ], + "yaw": -79.1673035961807, + "pitch": -8.067045700553148, + "focus": [ + 3.519, + -7.417, + -375.105 + ], + "center_z": -375.105, + "open_air_section": 3, + "route_distance_m": 24.046, + "requested_route_distance_m": 24.046, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-3-view-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-1.vfmesh", + "drawn_triangles": 251435, + "source_triangles": 320975, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 24.046, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 11.141700220129849, + -8.875616589111877, + -373.90500000000003 + ], + "target_actual_m": [ + 3.519, + -7.417, + -375.005 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-1-render.log", + "Saved/Linux/l110/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": [ + -2.630429980444914, + -6.2402961648718644, + -371.105 + ], + "target": [ + 3.1460223668061196, + -9.36617342081075, + -375.3532149486675 + ], + "yaw": 118.41965303912751, + "pitch": -32.89502331212217, + "focus": [ + 3.519, + -7.417, + -375.105 + ], + "center_z": -375.105, + "open_air_section": 3, + "route_distance_m": 24.046, + "requested_route_distance_m": 24.046, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-3-view-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-2.vfmesh", + "drawn_triangles": 298559, + "source_triangles": 387833, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 24.046, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -2.630429980444914, + -6.2402961648718644, + -371.105 + ], + "target_actual_m": [ + 3.1460223668061196, + -9.36617342081075, + -375.3532149486675 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-2-render.log", + "Saved/Linux/l110/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": [ + 3.519, + -7.417, + -376.386 + ], + "target": [ + 2.2135782838214184, + -14.239106972837622, + -377.2547523203363 + ], + "yaw": -169.16730359618072, + "pitch": -7.1292164823138044, + "focus": [ + 3.519, + -7.417, + -375.105 + ], + "center_z": -375.105, + "open_air_section": 3, + "route_distance_m": 24.046, + "requested_route_distance_m": 24.046, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-3-view-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-3.vfmesh", + "drawn_triangles": 350719, + "source_triangles": 461269, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 24.046, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 3.519, + -7.417, + -376.386 + ], + "target_actual_m": [ + 2.2135782838214184, + -14.239106972837622, + -377.2547523203363 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-3-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-3-closeup-1", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-3/exterior-1", + "camera": [ + 10.89615518018236, + -8.828631130114585, + -375.105 + ], + "target": [ + 6.967434541022536, + -8.076863786157944, + -375.105 + ], + "yaw": -79.16730359618072, + "pitch": 0.0, + "focus": [ + 3.519, + -7.417, + -375.105 + ], + "center_z": -375.105, + "open_air_section": 3, + "route_distance_m": 24.046, + "requested_route_distance_m": 24.046, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-3-closeup-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-closeup-1.vfmesh", + "drawn_triangles": 251435, + "source_triangles": 320975, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 24.046, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.3174329211432412, + "shell_standoff_actual_m": 4.000000000000002, + "camera_actual_m": [ + 8.784844843821993, + -8.024371826745075, + -378.8748726519025 + ], + "target_actual_m": [ + 6.0037455558776855, + -8.0, + -376.0 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-closeup-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-closeup-1-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-3-closeup-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-view-1", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-4/view-1", + "camera": [ + -32.482581468460985, + -9.34596705521348, + -597.4219999999999 + ], + "target": [ + -24.253, + -7.219, + -598.5219999999999 + ], + "yaw": 75.50879325593182, + "pitch": -7.373766361330367, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-4-view-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-1.vfmesh", + "drawn_triangles": 396359, + "source_triangles": 525499, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -32.482581468460985, + -9.34596705521348, + -597.4219999999999 + ], + "target_actual_m": [ + -24.253, + -7.219, + -598.5219999999999 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-1-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-view-2", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-4/view-2", + "camera": [ + -17.4756976142086, + -5.467380072177135, + -594.622 + ], + "target": [ + -24.74519610426594, + -5.314613221376807, + -598.9840138013261 + ], + "yaw": -88.79611947547781, + "pitch": -30.960000123282537, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-4-view-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-2.vfmesh", + "drawn_triangles": 507164, + "source_triangles": 688136, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -17.4756976142086, + -5.467380072177135, + -594.622 + ], + "target_actual_m": [ + -24.74519610426594, + -5.314613221376807, + -598.9840138013261 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-2-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-2-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-view-3", + "passage": "passage/0-1/0", + "kind": "open-air", + "station": "section-4/view-3", + "camera": [ + -24.253, + -7.219, + -600.6419999999999 + ], + "target": [ + -25.975686364930784, + -0.5536462748188242, + -601.9090483046415 + ], + "yaw": -14.491206744068183, + "pitch": -10.428414406509091, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-4-view-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-3.vfmesh", + "drawn_triangles": 412746, + "source_triangles": 553348, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -24.253, + -7.219, + -600.6419999999999 + ], + "target_actual_m": [ + -25.975686364930784, + -0.5536462748188242, + -601.9090483046415 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-3-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-view-3-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-closeup-1", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-4/exterior-1", + "camera": [ + -32.24053495468272, + -9.283409200648377, + -598.622 + ], + "target": [ + -28.367790734230493, + -8.28248352760674, + -598.622 + ], + "yaw": 75.50879325593182, + "pitch": 0.0, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-4-closeup-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-1.vfmesh", + "drawn_triangles": 396359, + "source_triangles": 525499, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.5391055239261153, + "shell_standoff_actual_m": 4.000000000000002, + "camera_actual_m": [ + -32.39206697988474, + -10.18606604490734, + -598.5226539356345 + ], + "target_actual_m": [ + -28.891904830932617, + -8.25, + -598.5 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-1-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-1-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-closeup-2", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-4/exterior-2", + "camera": [ + -17.55590230726807, + -5.488109284284067, + -594.1258461075878 + ], + "target": [ + -20.80297997647143, + -6.327329025237247, + -596.3057995099695 + ], + "yaw": -104.49120674406818, + "pitch": -33.023867555796805, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-4-closeup-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-2.vfmesh", + "drawn_triangles": 507164, + "source_triangles": 688136, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.6536498946924763, + "shell_standoff_actual_m": 3.9999999999999805, + "camera_actual_m": [ + -17.926300280593097, + -5.537687061290935, + -594.7438271005528 + ], + "target_actual_m": [ + -21.250337600708008, + -6.5, + -596.75 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-2-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-2-quality.log" + ] + }, + { + "name": "passage-0-1-0-openair-4-closeup-3", + "passage": "passage/0-1/0", + "kind": "open-air-closeup", + "station": "section-4/exterior-3", + "camera": [ + -28.62845935432694, + -8.349854337337211, + -591.7198971388163 + ], + "target": [ + -26.507024515865393, + -7.801561325294927, + -595.0663712533296 + ], + "yaw": 75.50879325593182, + "pitch": -56.78474850626309, + "focus": [ + -24.253, + -7.219, + -598.622 + ], + "center_z": -598.622, + "open_air_section": 4, + "route_distance_m": 1263.117, + "requested_route_distance_m": 1263.117, + "route_length_m": 2014.3972645129159, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-0-1-0-openair-4-closeup-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-3.vfmesh", + "drawn_triangles": 443786, + "source_triangles": 590658, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 1263.117, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.5417437525693242, + "shell_standoff_actual_m": 3.999999999999987, + "camera_actual_m": [ + -26.293809040402707, + -8.497801465980446, + -591.6112330837194 + ], + "target_actual_m": [ + -26.25, + -7.75, + -595.5404663085938 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-3-render.log", + "Saved/Linux/l110/captures/after/passage-0-1-0-openair-4-closeup-3-quality.log" + ] + }, + { + "name": "passage-1-2-0-upper-mouth", + "passage": "passage/1-2/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + 23.155674552687962, + -16.14908662400146, + -731.7810546875 + ], + "target": [ + 17.392833879360907, + -13.33402139627713, + -731.8810546875 + ], + "yaw": -63.965152623598414, + "pitch": -0.8932686436727578, + "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/l110/captures/after/passage-1-2-0-upper-mouth.vfmesh", + "drawn_triangles": 565755, + "source_triangles": 629963, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 23.155674552687962, + -16.14908662400146, + -731.7810546875 + ], + "target_actual_m": [ + 17.392833879360907, + -13.33402139627713, + -731.8810546875 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-1-2-0-upper-mouth-mesh.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-upper-mouth-render.log", + "Saved/Linux/l110/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.669370041560203, + -17.931687050798093, + -752.0090260818968 + ], + "target": [ + 17.37583574782943, + -13.414618104437244, + -753.05390625 + ], + "yaw": -66.30689197709175, + "pitch": -5.3105178623917535, + "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/l110/captures/after/passage-1-2-0-lower-mouth.vfmesh", + "drawn_triangles": 505668, + "source_triangles": 542834, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 27.669370041560203, + -17.931687050798093, + -752.0090260818968 + ], + "target_actual_m": [ + 17.37583574782943, + -13.414618104437244, + -753.05390625 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-1-2-0-lower-mouth-mesh.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-lower-mouth-render.log", + "Saved/Linux/l110/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": [ + 13.839984288397812, + 6.587904286061814, + -736.8018138353019 + ], + "target": [ + 2.363156319326185, + 14.183439358820996, + -739.2050534708565 + ], + "yaw": -56.5028177078219, + "pitch": -9.905162260563504, + "focus": [ + 14.477989100250685, + 6.982175588660137, + -735.631813835302 + ], + "center_z": -735.631813835302, + "route_distance_m": 28.46821190286393, + "route_length_m": 113.87284761145573, + "requested_route_distance_m": 28.46821190286393, + "variant": "after", + "capture": "captures/after/passage-1-2-0-station-25.png", + "scene": "Saved/Linux/l110/captures/after/passage-1-2-0-station-25.vfmesh", + "drawn_triangles": 655712, + "source_triangles": 762582, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 28.46821190286393, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 13.839984288397812, + 6.587904286061814, + -736.8018138353019 + ], + "target_actual_m": [ + 2.363156319326185, + 14.183439358820996, + -739.2050534708565 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-1-2-0-station-25-mesh.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-station-25-render.log", + "Saved/Linux/l110/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.371258739883528, + 11.724083505834441, + -742.0951650605518 + ], + "target": [ + -12.783765342228843, + -1.6446342816727475, + -744.4990059410221 + ], + "yaw": -161.73390326754287, + "pitch": -9.689827619924415, + "focus": [ + -8.819483630432973, + 12.325410744109856, + -740.9251650605519 + ], + "center_z": -740.9251650605519, + "route_distance_m": 56.93642380572786, + "route_length_m": 113.87284761145573, + "requested_route_distance_m": 56.93642380572786, + "variant": "after", + "capture": "captures/after/passage-1-2-0-station-50.png", + "scene": "Saved/Linux/l110/captures/after/passage-1-2-0-station-50.vfmesh", + "drawn_triangles": 590478, + "source_triangles": 681586, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 56.93642380572786, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -8.371258739883528, + 11.724083505834441, + -742.0951650605518 + ], + "target_actual_m": [ + -12.783765342228843, + -1.6446342816727475, + -744.4990059410221 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-1-2-0-station-50-mesh.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-station-50-render.log", + "Saved/Linux/l110/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.586769568915752, + -10.735033108069532, + -747.3888312649981 + ], + "target": [ + 7.430752597530391, + -10.891774630023567, + -749.7924798389191 + ], + "yaw": 90.6406448523091, + "pitch": -9.729542154499603, + "focus": [ + -6.9939308656579335, + -11.364889979457965, + -746.2188312649981 + ], + "center_z": -746.2188312649981, + "route_distance_m": 85.4046357085918, + "route_length_m": 113.87284761145573, + "requested_route_distance_m": 85.4046357085918, + "variant": "after", + "capture": "captures/after/passage-1-2-0-station-75.png", + "scene": "Saved/Linux/l110/captures/after/passage-1-2-0-station-75.vfmesh", + "drawn_triangles": 607464, + "source_triangles": 696616, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 85.4046357085918, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -6.586769568915752, + -10.735033108069532, + -747.3888312649981 + ], + "target_actual_m": [ + 7.430752597530391, + -10.891774630023567, + -749.7924798389191 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-1-2-0-station-75-mesh.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-station-75-render.log", + "Saved/Linux/l110/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": [ + 5.970328502711869, + -4.077984872526297, + -748.2339999999999 + ], + "target": [ + 9.136, + -11.613, + -749.334 + ], + "yaw": 157.21135612217134, + "pitch": -7.6653476882049, + "focus": [ + 9.136, + -11.613, + -749.434 + ], + "center_z": -749.434, + "open_air_section": 1, + "route_distance_m": 103.1595, + "requested_route_distance_m": 103.1595, + "route_length_m": 113.87284761145573, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-1-view-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-1.vfmesh", + "drawn_triangles": 624410, + "source_triangles": 721266, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 103.1595, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 5.970328502711869, + -4.077984872526297, + -748.2339999999999 + ], + "target_actual_m": [ + 9.136, + -11.613, + -749.334 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-1-render.log", + "Saved/Linux/l110/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": [ + 11.720672201321875, + -17.765105217867614, + -745.434 + ], + "target": [ + 10.94776719052517, + -10.851825714648527, + -749.8056360513408 + ], + "yaw": -6.379180837289254, + "pitch": -32.14682033821005, + "focus": [ + 9.136, + -11.613, + -749.434 + ], + "center_z": -749.434, + "open_air_section": 1, + "route_distance_m": 103.1595, + "requested_route_distance_m": 103.1595, + "route_length_m": 113.87284761145573, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-1-view-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-2.vfmesh", + "drawn_triangles": 582822, + "source_triangles": 654896, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 103.1595, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 11.720672201321875, + -17.765105217867614, + -745.434 + ], + "target_actual_m": [ + 10.94776719052517, + -10.851825714648527, + -749.8056360513408 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-2-render.log", + "Saved/Linux/l110/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.136, + -11.613, + -750.954 + ], + "target": [ + 15.477185166838094, + -8.948890001269849, + -752.2547261796929 + ], + "yaw": 67.21135612217135, + "pitch": -10.708828804851287, + "focus": [ + 9.136, + -11.613, + -749.434 + ], + "center_z": -749.434, + "open_air_section": 1, + "route_distance_m": 103.1595, + "requested_route_distance_m": 103.1595, + "route_length_m": 113.87284761145573, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-1-view-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-3.vfmesh", + "drawn_triangles": 611124, + "source_triangles": 698090, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 103.1595, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 9.136, + -11.613, + -750.954 + ], + "target_actual_m": [ + 15.477185166838094, + -8.948890001269849, + -752.2547261796929 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-3-render.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-view-3-quality.log" + ] + }, + { + "name": "passage-1-2-0-openair-1-closeup-1", + "passage": "passage/1-2/0", + "kind": "open-air-closeup", + "station": "section-1/exterior-1", + "camera": [ + 6.067161718706245, + -4.308469857460645, + -749.434 + ], + "target": [ + 7.616493174616256, + -7.996229616410212, + -749.434 + ], + "yaw": 157.21135612217137, + "pitch": 0.0, + "focus": [ + 9.136, + -11.613, + -749.434 + ], + "center_z": -749.434, + "open_air_section": 1, + "route_distance_m": 103.1595, + "requested_route_distance_m": 103.1595, + "route_length_m": 113.87284761145573, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-1-2-0-openair-1-closeup-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-closeup-1.vfmesh", + "drawn_triangles": 624410, + "source_triangles": 721266, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 103.1595, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.049312903238708, + "shell_standoff_actual_m": 4.0, + "camera_actual_m": [ + 7.483738721923237, + -5.037001998964348, + -749.5053478764611 + ], + "target_actual_m": [ + 7.5, + -9.036965370178223, + -749.5 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-closeup-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-closeup-1-render.log", + "Saved/Linux/l110/captures/after/passage-1-2-0-openair-1-closeup-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-upper-mouth", + "passage": "passage/2-3/0", + "kind": "mouth", + "station": "upper-mouth", + "camera": [ + -24.510890451086325, + -4.955138452601283, + -811.975390625 + ], + "target": [ + -18.085437577294964, + -5.118679784954985, + -812.075390625 + ], + "yaw": 91.4579836961561, + "pitch": -0.8913396541976134, + "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/l110/captures/after/passage-2-3-0-upper-mouth.vfmesh", + "drawn_triangles": 57772, + "source_triangles": 71470, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -24.510890451086325, + -4.955138452601283, + -811.975390625 + ], + "target_actual_m": [ + -18.085437577294964, + -5.118679784954985, + -812.075390625 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-upper-mouth-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-upper-mouth-render.log", + "Saved/Linux/l110/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": [ + -29.049715742915396, + -2.779103580443535, + -899.0170545422176 + ], + "target": [ + -18.170454580438843, + -5.550307963327683, + -900.0333984375 + ], + "yaw": 104.29068028993358, + "pitch": -5.172857326977102, + "focus": [ + -20.062499999999982, + -5.068359375000004, + -898.7133984375 + ], + "center_z": -898.7133984375, + "variant": "after", + "capture": "captures/after/passage-2-3-0-lower-mouth.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-lower-mouth.vfmesh", + "drawn_triangles": 291268, + "source_triangles": 315502, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": null, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -29.049715742915396, + -2.779103580443535, + -899.0170545422176 + ], + "target_actual_m": [ + -18.170454580438843, + -5.550307963327683, + -900.0333984375 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-lower-mouth-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-lower-mouth-render.log", + "Saved/Linux/l110/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.3629477943069905, + -13.28264789111628, + -833.6924223707634 + ], + "target": [ + 14.057544579024707, + -4.268177781320185, + -836.0006826204402 + ], + "yaw": 49.87247810025953, + "pitch": -9.371026953528995, + "focus": [ + 3.463454182082567, + -14.025883026195553, + -832.5224223707635 + ], + "center_z": -832.5224223707635, + "route_distance_m": 122.71082287166668, + "route_length_m": 490.8432914866667, + "requested_route_distance_m": 122.71082287166668, + "variant": "after", + "capture": "captures/after/passage-2-3-0-station-25.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-station-25.vfmesh", + "drawn_triangles": 53210, + "source_triangles": 66458, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 122.71082287166668, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 3.3629477943069905, + -13.28264789111628, + -833.6924223707634 + ], + "target_actual_m": [ + 14.057544579024707, + -4.268177781320185, + -836.0006826204402 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-station-25-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-station-25-render.log", + "Saved/Linux/l110/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": [ + 14.714964374766744, + 4.426031524861205, + -855.6817931947601 + ], + "target": [ + 3.8569544509891096, + 13.535757747237458, + -857.9904777239444 + ], + "yaw": -50.003796291172236, + "pitch": -9.251614459440251, + "focus": [ + 15.448414166573603, + 4.582720397786105, + -854.5117931947601 + ], + "center_z": -854.5117931947601, + "route_distance_m": 245.42164574333336, + "route_length_m": 490.8432914866667, + "requested_route_distance_m": 245.42164574333336, + "variant": "after", + "capture": "captures/after/passage-2-3-0-station-50.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-station-50.vfmesh", + "drawn_triangles": 454306, + "source_triangles": 478954, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 245.42164574333336, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 14.714964374766744, + 4.426031524861205, + -855.6817931947601 + ], + "target_actual_m": [ + 3.8569544509891096, + 13.535757747237458, + -857.9904777239444 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-station-50-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-station-50-render.log", + "Saved/Linux/l110/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.760169952738466, + 11.295442453574074, + -877.6716971250207 + ], + "target": [ + -12.206687475534688, + -0.996781882252304, + -879.9807693267177 + ], + "yaw": -152.32574657735572, + "pitch": -9.445159710566168, + "focus": [ + -6.190732087251391, + 11.909540367854586, + -876.5016971250208 + ], + "center_z": -876.5016971250208, + "route_distance_m": 368.13246861500005, + "route_length_m": 490.8432914866667, + "requested_route_distance_m": 368.13246861500005, + "variant": "after", + "capture": "captures/after/passage-2-3-0-station-75.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-station-75.vfmesh", + "drawn_triangles": 475134, + "source_triangles": 506578, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 368.13246861500005, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -5.760169952738466, + 11.295442453574074, + -877.6716971250207 + ], + "target_actual_m": [ + -12.206687475534688, + -0.996781882252304, + -879.9807693267177 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-station-75-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-station-75-render.log", + "Saved/Linux/l110/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": [ + -1.189937432971333, + -5.322285697427915, + -813.0459999999999 + ], + "target": [ + -2.846, + -13.149, + -814.146 + ], + "yaw": -168.05293971491665, + "pitch": -7.829076510059767, + "focus": [ + -2.846, + -13.149, + -814.246 + ], + "center_z": -814.246, + "open_air_section": 1, + "route_distance_m": 21.212, + "requested_route_distance_m": 21.212, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-1-view-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-1.vfmesh", + "drawn_triangles": 103940, + "source_triangles": 129366, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 21.212, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -1.189937432971333, + -5.322285697427915, + -813.0459999999999 + ], + "target_actual_m": [ + -2.846, + -13.149, + -814.146 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-1-render.log", + "Saved/Linux/l110/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": [ + -4.1915508357107925, + -19.508205370839818, + -810.246 + ], + "target": [ + -0.9210204431637441, + -13.556308413611612, + -814.6045436681405 + ], + "yaw": 28.788521091259426, + "pitch": -32.69176164676129, + "focus": [ + -2.846, + -13.149, + -814.246 + ], + "center_z": -814.246, + "open_air_section": 1, + "route_distance_m": 21.212, + "requested_route_distance_m": 21.212, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-1-view-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-2.vfmesh", + "drawn_triangles": 79774, + "source_triangles": 99432, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 21.212, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -4.1915508357107925, + -19.508205370839818, + -810.246 + ], + "target_actual_m": [ + -0.9210204431637441, + -13.556308413611612, + -814.6045436681405 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-2-render.log", + "Saved/Linux/l110/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": [ + -2.846, + -13.149, + -815.766 + ], + "target": [ + 3.891428448926896, + -14.574579447640645, + -817.0209028384919 + ], + "yaw": 101.94706028508335, + "pitch": -10.327349081567025, + "focus": [ + -2.846, + -13.149, + -814.246 + ], + "center_z": -814.246, + "open_air_section": 1, + "route_distance_m": 21.212, + "requested_route_distance_m": 21.212, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-1-view-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-3.vfmesh", + "drawn_triangles": 94306, + "source_triangles": 118068, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 21.212, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -2.846, + -13.149, + -815.766 + ], + "target_actual_m": [ + 3.891428448926896, + -14.574579447640645, + -817.0209028384919 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-3-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-1-closeup-1", + "passage": "passage/2-3/0", + "kind": "open-air-closeup", + "station": "section-1/exterior-1", + "camera": [ + -1.241689388190979, + -5.566870519383293, + -814.246 + ], + "target": [ + -2.0697206717053125, + -9.480227670669334, + -814.246 + ], + "yaw": -168.05293971491665, + "pitch": 0.0, + "focus": [ + -2.846, + -13.149, + -814.246 + ], + "center_z": -814.246, + "open_air_section": 1, + "route_distance_m": 21.212, + "requested_route_distance_m": 21.212, + "route_length_m": 490.8432914866667, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-1-closeup-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-closeup-1.vfmesh", + "drawn_triangles": 103940, + "source_triangles": 129366, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 21.212, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 2.4087947578183004, + "shell_standoff_actual_m": 4.000000000000034, + "camera_actual_m": [ + -1.5130278114293583, + -8.382592729320777, + -813.226365381883 + ], + "target_actual_m": [ + -2.75, + -11.0, + -815.9866333007812 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-closeup-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-closeup-1-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-1-closeup-1-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": [ + -2.9130850464832285, + 5.083885109955194, + -876.048 + ], + "target": [ + -9.545, + 9.558, + -877.148 + ], + "yaw": -55.995061323335754, + "pitch": -7.829076510059767, + "focus": [ + -9.545, + 9.558, + -877.248 + ], + "center_z": -877.248, + "open_air_section": 2, + "route_distance_m": 372.7845, + "requested_route_distance_m": 372.7845, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-2-view-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-1.vfmesh", + "drawn_triangles": 475504, + "source_triangles": 507394, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 372.7845, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -2.9130850464832285, + 5.083885109955194, + -876.048 + ], + "target_actual_m": [ + -9.545, + 9.558, + -877.148 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-1-render.log", + "Saved/Linux/l110/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.933430899732377, + 13.193218348161405, + -873.248 + ], + "target": [ + -10.645401808697681, + 7.926890520398333, + -877.6066052494994 + ], + "yaw": 140.84630886232915, + "pitch": -32.69214209091069, + "focus": [ + -9.545, + 9.558, + -877.248 + ], + "center_z": -877.248, + "open_air_section": 2, + "route_distance_m": 372.7845, + "requested_route_distance_m": 372.7845, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-2-view-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-2.vfmesh", + "drawn_triangles": 477208, + "source_triangles": 506164, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 372.7845, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -14.933430899732377, + 13.193218348161405, + -873.248 + ], + "target_actual_m": [ + -10.645401808697681, + 7.926890520398333, + -877.6066052494994 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-2-render.log", + "Saved/Linux/l110/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.545, + 9.558, + -878.768 + ], + "target": [ + -13.396406330441884, + 3.8491168213941664, + -880.0231183732476 + ], + "yaw": -145.99506132333573, + "pitch": -10.329142313691902, + "focus": [ + -9.545, + 9.558, + -877.248 + ], + "center_z": -877.248, + "open_air_section": 2, + "route_distance_m": 372.7845, + "requested_route_distance_m": 372.7845, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-2-view-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-3.vfmesh", + "drawn_triangles": 477208, + "source_triangles": 506164, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 372.7845, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -9.545, + 9.558, + -878.768 + ], + "target_actual_m": [ + -13.396406330441884, + 3.8491168213941664, + -880.0231183732476 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-3-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-2-closeup-1", + "passage": "passage/2-3/0", + "kind": "open-air-closeup", + "station": "section-2/exterior-1", + "camera": [ + -3.1203323887806276, + 5.223701200269094, + -877.248 + ], + "target": [ + -6.436289865539013, + 7.460758645291497, + -877.248 + ], + "yaw": -55.995061323335754, + "pitch": 0.0, + "focus": [ + -9.545, + 9.558, + -877.248 + ], + "center_z": -877.248, + "open_air_section": 2, + "route_distance_m": 372.7845, + "requested_route_distance_m": 372.7845, + "route_length_m": 490.8432914866667, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-2-closeup-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-closeup-1.vfmesh", + "drawn_triangles": 475504, + "source_triangles": 507394, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 372.7845, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 1.7191416770143297, + "shell_standoff_actual_m": 4.0, + "camera_actual_m": [ + -6.71216365920087, + 5.196582298001673, + -877.261698456538 + ], + "target_actual_m": [ + -6.25, + 9.16977596282959, + -877.25 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-closeup-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-closeup-1-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-2-closeup-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-3-view-1", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-3/view-1", + "camera": [ + -4.259540253679528, + -6.656854577309242, + -880.059 + ], + "target": [ + -11.172, + -10.684, + -881.159 + ], + "yaw": -120.224745904394, + "pitch": -7.829076510059767, + "focus": [ + -11.172, + -10.684, + -881.259 + ], + "center_z": -881.259, + "open_air_section": 3, + "route_distance_m": 395.169, + "requested_route_distance_m": 395.169, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-3-view-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-1.vfmesh", + "drawn_triangles": 484600, + "source_triangles": 518202, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 395.169, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -4.259540253679528, + -6.656854577309242, + -880.059 + ], + "target_actual_m": [ + -11.172, + -10.684, + -881.159 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-1-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-3-view-2", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-3/view-2", + "camera": [ + -16.788373543885385, + -13.95605565593624, + -877.259 + ], + "target": [ + -10.181507700208023, + -12.384146737382467, + -881.6173658401976 + ], + "yaw": 76.6169764950821, + "pitch": -32.69066303746625, + "focus": [ + -11.172, + -10.684, + -881.259 + ], + "center_z": -881.259, + "open_air_section": 3, + "route_distance_m": 395.169, + "requested_route_distance_m": 395.169, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-3-view-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-2.vfmesh", + "drawn_triangles": 475290, + "source_triangles": 497208, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 395.169, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -16.788373543885385, + -13.95605565593624, + -877.259 + ], + "target_actual_m": [ + -10.181507700208023, + -12.384146737382467, + -881.6173658401976 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-2-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-2-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-3-view-3", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-3/view-3", + "camera": [ + -11.172, + -10.684, + -882.779 + ], + "target": [ + -7.70527695072808, + -16.63451358083864, + -884.0332804406917 + ], + "yaw": 149.77525409560604, + "pitch": -10.322170838480888, + "focus": [ + -11.172, + -10.684, + -881.259 + ], + "center_z": -881.259, + "open_air_section": 3, + "route_distance_m": 395.169, + "requested_route_distance_m": 395.169, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-3-view-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-3.vfmesh", + "drawn_triangles": 488248, + "source_triangles": 519784, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 395.169, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + -11.172, + -10.684, + -882.779 + ], + "target_actual_m": [ + -7.70527695072808, + -16.63451358083864, + -884.0332804406917 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-3-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-3-closeup-1", + "passage": "passage/2-3/0", + "kind": "open-air-closeup", + "station": "section-3/exterior-1", + "camera": [ + -4.475554620752043, + -6.782702871768327, + -881.259 + ], + "target": [ + -7.9317844939122795, + -8.796275583113706, + -881.259 + ], + "yaw": -120.224745904394, + "pitch": 0.0, + "focus": [ + -11.172, + -10.684, + -881.259 + ], + "center_z": -881.259, + "open_air_section": 3, + "route_distance_m": 395.169, + "requested_route_distance_m": 395.169, + "route_length_m": 490.8432914866667, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-3-closeup-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-closeup-1.vfmesh", + "drawn_triangles": 484600, + "source_triangles": 518202, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 395.169, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.09145205832537352, + "shell_standoff_actual_m": 3.9999999999999996, + "camera_actual_m": [ + -8.243374548045272, + -4.863942990990031, + -881.2392626951312 + ], + "target_actual_m": [ + -8.0, + -8.856517791748047, + -881.25 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-closeup-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-closeup-1-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-3-closeup-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-4-view-1", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-4/view-1", + "camera": [ + 5.6333128025989625, + 3.3735740461566257, + -889.2199999999999 + ], + "target": [ + 9.72, + 10.251, + -890.3199999999999 + ], + "yaw": 30.71952465304602, + "pitch": -7.8290765100597675, + "focus": [ + 9.72, + 10.251, + -890.42 + ], + "center_z": -890.42, + "open_air_section": 4, + "route_distance_m": 446.293, + "requested_route_distance_m": 446.293, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-4-view-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-1.vfmesh", + "drawn_triangles": 475290, + "source_triangles": 507004, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 446.293, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 5.6333128025989625, + 3.3735740461566257, + -889.2199999999999 + ], + "target_actual_m": [ + 9.72, + 10.251, + -890.3199999999999 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-1-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-1-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-4-view-2", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-4/view-2", + "camera": [ + 13.040433347888344, + 15.838908587497741, + -886.42 + ], + "target": [ + 8.028477501069965, + 11.25613235429748, + -890.7784139868335 + ], + "yaw": -132.43882376014432, + "pitch": -32.69096048480686, + "focus": [ + 9.72, + 10.251, + -890.42 + ], + "center_z": -890.42, + "open_air_section": 4, + "route_distance_m": 446.293, + "requested_route_distance_m": 446.293, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-4-view-2.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-2.vfmesh", + "drawn_triangles": 494736, + "source_triangles": 530400, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 446.293, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 13.040433347888344, + 15.838908587497741, + -886.42 + ], + "target_actual_m": [ + 8.028477501069965, + 11.25613235429748, + -890.7784139868335 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-2-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-2-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-2-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-4-view-3", + "passage": "passage/2-3/0", + "kind": "open-air", + "station": "section-4/view-3", + "camera": [ + 9.72, + 10.251, + -891.9399999999999 + ], + "target": [ + 3.7996712537448776, + 13.768963240041181, + -893.1944489539172 + ], + "yaw": -59.280475346953985, + "pitch": -10.32357283123646, + "focus": [ + 9.72, + 10.251, + -890.42 + ], + "center_z": -890.42, + "open_air_section": 4, + "route_distance_m": 446.293, + "requested_route_distance_m": 446.293, + "route_length_m": 490.8432914866667, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-4-view-3.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-3.vfmesh", + "drawn_triangles": 495410, + "source_triangles": 531316, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "low_contrast_geometry_visible", + "route_distance_actual_m": 446.293, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": null, + "shell_standoff_actual_m": null, + "camera_actual_m": [ + 9.72, + 10.251, + -891.9399999999999 + ], + "target_actual_m": [ + 3.7996712537448776, + 13.768963240041181, + -893.1944489539172 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-3-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-3-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-view-3-quality.log" + ] + }, + { + "name": "passage-2-3-0-openair-4-closeup-1", + "passage": "passage/2-3/0", + "kind": "open-air-closeup", + "station": "section-4/exterior-1", + "camera": [ + 5.761021777517746, + 3.588493607214231, + -890.42 + ], + "target": [ + 7.804365376218264, + 7.027206584135918, + -890.42 + ], + "yaw": 30.719524653046015, + "pitch": 0.0, + "focus": [ + 9.72, + 10.251, + -890.42 + ], + "center_z": -890.42, + "open_air_section": 4, + "route_distance_m": 446.293, + "requested_route_distance_m": 446.293, + "route_length_m": 490.8432914866667, + "shell_standoff_m": 4.0, + "variant": "after", + "capture": "captures/after/passage-2-3-0-openair-4-closeup-1.png", + "scene": "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-closeup-1.vfmesh", + "drawn_triangles": 475290, + "source_triangles": 507004, + "verified": true, + "render_tile_skirts": "off", + "pixel_quality_status": "pass", + "route_distance_actual_m": 446.293, + "route_station_adjustment_m": 0.0, + "fallback_kind": null, + "fallback_surface_distance_m": 0.343753310012064, + "shell_standoff_actual_m": 3.9999999999999614, + "camera_actual_m": [ + 7.413494649349525, + 7.104643671833882, + -886.0972185466462 + ], + "target_actual_m": [ + 7.75, + 7.0, + -890.0816650390625 + ], + "logs": [ + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-closeup-1-mesh.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-closeup-1-render.log", + "Saved/Linux/l110/captures/after/passage-2-3-0-openair-4-closeup-1-quality.log" + ] + } + ] +} diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/capture-verification.json b/Standalone/Research/WorldAssemblerM3/Linux110/captures/capture-verification.json new file mode 100644 index 0000000..585f7f9 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/captures/capture-verification.json @@ -0,0 +1,30 @@ +{ + "status": "PASS", + "capture_count": 106, + "open_air_sections": 9, + "per_variant_kind_counts": { + "before": { + "mouth": 6, + "open-air": 27, + "open-air-closeup": 11, + "station": 9 + }, + "after": { + "mouth": 6, + "open-air": 27, + "open-air-closeup": 11, + "station": 9 + } + }, + "paired_image_bytes": { + "mouth_changed": 4, + "mouth_identical": 2, + "open-air-closeup_changed": 10, + "open-air-closeup_identical": 1, + "open-air_changed": 24, + "open-air_identical": 3, + "station_changed": 1, + "station_identical": 8 + }, + "errors": [] +} diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/INDEX.md b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/INDEX.md new file mode 100644 index 0000000..5a72afd --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/INDEX.md @@ -0,0 +1,14 @@ +# L110 capture contact sheets + +- [before openair-view-1](before-openair-view-1.png) — 9 views +- [before openair-view-2](before-openair-view-2.png) — 9 views +- [before openair-view-3](before-openair-view-3.png) — 9 views +- [before openair-closeups](before-openair-closeups.png) — 11 views +- [before mouths](before-mouths.png) — 6 views +- [before stations](before-stations.png) — 9 views +- [after openair-view-1](after-openair-view-1.png) — 9 views +- [after openair-view-2](after-openair-view-2.png) — 9 views +- [after openair-view-3](after-openair-view-3.png) — 9 views +- [after openair-closeups](after-openair-closeups.png) — 11 views +- [after mouths](after-mouths.png) — 6 views +- [after stations](after-stations.png) — 9 views diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-mouths.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-mouths.png new file mode 100644 index 0000000..2b34af2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-mouths.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-closeups.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-closeups.png new file mode 100644 index 0000000..a8f3873 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-closeups.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-view-1.png new file mode 100644 index 0000000..7537e6f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-view-2.png new file mode 100644 index 0000000..3e9ddd9 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-view-3.png new file mode 100644 index 0000000..d45165f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-openair-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-stations.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-stations.png new file mode 100644 index 0000000..8e8e291 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/after-stations.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-mouths.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-mouths.png new file mode 100644 index 0000000..f474ab1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-mouths.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-closeups.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-closeups.png new file mode 100644 index 0000000..b56dc29 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-closeups.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-view-1.png new file mode 100644 index 0000000..5a93af0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-view-2.png new file mode 100644 index 0000000..39992ad Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-view-3.png new file mode 100644 index 0000000..5830c5c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-openair-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-stations.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-stations.png new file mode 100644 index 0000000..aad1c6d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/before-stations.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/mouths-and-stations.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/mouths-and-stations.png new file mode 100644 index 0000000..a7060d4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/mouths-and-stations.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-closeups.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-closeups.png new file mode 100644 index 0000000..3c16869 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-closeups.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-view-1.png new file mode 100644 index 0000000..adb3274 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-view-2.png new file mode 100644 index 0000000..3494ef7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-view-3.png new file mode 100644 index 0000000..5039063 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/contact-sheets/open-air-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-blend/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-blend/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..854a7f3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-blend/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-blend/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-blend/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..4881bc1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-blend/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-blend/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-blend/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..ecf213f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-blend/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-smooth/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-smooth/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..a79f040 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-smooth/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-smooth/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-smooth/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..93208b3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-smooth/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-smooth/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-smooth/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..d209aca Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-adjacent-smooth/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..0979ed4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..f9e1903 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..aad1436 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..d465691 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..a9825d5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-route/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..74e17a2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..f9e1903 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..aad1436 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..7f69956 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..a9825d5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-c2-shellfloor/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-lower-mouth.png new file mode 100644 index 0000000..db20d77 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-closeup-1-skirts-off.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-closeup-1-skirts-off.png new file mode 100644 index 0000000..aae4d22 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-closeup-1-skirts-off.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-closeup-1-tile-edges.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-closeup-1-tile-edges.png new file mode 100644 index 0000000..bc39136 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-closeup-1-tile-edges.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..18b8f5b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..86d5ca2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-station-50-skirts-off.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-station-50-skirts-off.png new file mode 100644 index 0000000..0f2710c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-station-50-skirts-off.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..e34d2d5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-catmull/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..b4667e9 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..c5a40d6 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..7bfd915 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..7aaac77 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..42c7ecf Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-closest-curve/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..f75b9dd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..0e9024d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..e53ea00 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..8ed4970 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..80e4195 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-curved/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..16bef8a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..476f098 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..baa3a85 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..7cb83a0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..a3ebd7e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-filtered-curve/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..2100678 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..9cbe420 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..5d9de3a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..620622e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..2bda24c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-global-shell/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-no-relief/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-no-relief/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..e26d724 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-no-relief/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-no-relief/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-no-relief/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..9a04937 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-no-relief/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-no-relief/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-no-relief/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..0f920b2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-no-relief/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..682289e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..555fba0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..b81f860 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..9e52455 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..9226feb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-outer-relief/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..33c33eb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..51949e8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..6a1bdda Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..9558c61 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..18d0cfa Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..4292783 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..583728a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..aa1ff1c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..5a7832f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..2bda24c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap0/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..18cd4bd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..c7a0d80 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..a7d707a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..b76888e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..d56901f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-overlap8/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..ddafe8c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..9a2d827 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..e15f42f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..9e8e77c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..1e37507 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..42e2933 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..ae4b211 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-relief-shell/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..9f290d4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..3705edc Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..a563b75 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..f9ac5b1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..96e23fc Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..ab75929 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-route-filter/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..16165c5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..fbce6b5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..42e86a4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..204de38 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..4f7e8c7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-boundaries/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..ca99eef Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..c925a7c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..62eb795 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..1149362 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..61b14ee Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..3d09251 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-c2/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-closeup-1.png new file mode 100644 index 0000000..6826c94 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-view-1.png new file mode 100644 index 0000000..3c778c8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-view-2.png new file mode 100644 index 0000000..cbf6e43 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-view-3.png new file mode 100644 index 0000000..8039d29 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-closeup-1.png new file mode 100644 index 0000000..0560e98 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-view-1.png new file mode 100644 index 0000000..cc615bc Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-view-2.png new file mode 100644 index 0000000..58b7f4b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-view-3.png new file mode 100644 index 0000000..fc080cb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-closeup-1.png new file mode 100644 index 0000000..5c14c94 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-view-1.png new file mode 100644 index 0000000..b297329 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-view-2.png new file mode 100644 index 0000000..a077c37 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-view-3.png new file mode 100644 index 0000000..6edf638 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-3-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..caef52c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..223eabc Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..3044f71 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..1514fd3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..67fa79a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..96f46ef Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-closeup-1.png new file mode 100644 index 0000000..4f7c8ab Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-view-1.png new file mode 100644 index 0000000..2d4d2de Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-view-2.png new file mode 100644 index 0000000..7031378 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-view-3.png new file mode 100644 index 0000000..bd130d0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-1-2-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-closeup-1.png new file mode 100644 index 0000000..80e96ed Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-view-1.png new file mode 100644 index 0000000..ab71a39 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-view-2.png new file mode 100644 index 0000000..a8f1512 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-view-3.png new file mode 100644 index 0000000..056350e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-1-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-closeup-1.png new file mode 100644 index 0000000..3f1c948 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-view-1.png new file mode 100644 index 0000000..fb88cf7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-view-2.png new file mode 100644 index 0000000..8a919fb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-view-3.png new file mode 100644 index 0000000..bf9fe9b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-2-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-closeup-1.png new file mode 100644 index 0000000..4ab5ce1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-view-1.png new file mode 100644 index 0000000..d96be91 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-view-2.png new file mode 100644 index 0000000..90ef352 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-view-3.png new file mode 100644 index 0000000..0f4416a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-3-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-closeup-1.png new file mode 100644 index 0000000..d91ece7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-view-1.png new file mode 100644 index 0000000..a3a97ed Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-view-2.png new file mode 100644 index 0000000..ebb198d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-view-3.png new file mode 100644 index 0000000..e04ab3f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/after/passage-2-3-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/closeups.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/closeups.png new file mode 100644 index 0000000..b55f5bb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/closeups.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/view-1.png new file mode 100644 index 0000000..760be6f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/view-2.png new file mode 100644 index 0000000..d7e404d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/view-3.png new file mode 100644 index 0000000..8a585e3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse-mouth/contact-sheets/view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..caef52c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..223eabc Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..3044f71 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..1514fd3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..67fa79a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..96f46ef Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-coarse/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..accebdf Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..5917728 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..3f47f2d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..d0418b5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..d0f7f2e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..46c8e11 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..ae4b211 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-detail/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..123d5a5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..142ae03 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..99e1f8a Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..820ca8b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..a02dc13 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..5aac794 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter2/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..e036dd2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..db69908 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..7c0c6f0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..154890d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..f6f2916 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..f1a7dde Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-filter4/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..bf3c85f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..276a724 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..27dba54 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..de96583 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..45d67b1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-final/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..a231c6d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..ed9cb2e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..ee2a5f2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..7180c55 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..371bea8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-fine/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-strong/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-strong/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..341b424 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-strong/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-strong/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-strong/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..09d2a52 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-strong/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-strong/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-strong/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..09fc054 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-relief-strong/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..0430674 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..7e5d5d8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..f9e9a85 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..c030b80 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..54e691f Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..ddb5737 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-shortscale/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..cefc802 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..a57e4f0 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..c21b9e8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..2840c91 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..1860e47 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..358f3bb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..ae4b211 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smin/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..e8b79e2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..09d2a52 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..09fc054 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..61d9e4c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..bb800dc Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..fdfc954 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth-floor/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..26ca4d2 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..0c728eb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..5fccec4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..853d6d9 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..0a20ada Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..239c7e4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..ae4b211 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-smooth3/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-sweep-off/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-sweep-off/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..f02449c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-sweep-off/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..a76e7b6 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..bcd2538 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..6bb9c65 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..bcddb21 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-shell-wall-thick/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-openair-4-closeup-1-skirts-off.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-openair-4-closeup-1-skirts-off.png new file mode 100644 index 0000000..007b7c7 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-openair-4-closeup-1-skirts-off.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..5393be5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..321fe82 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..02458b5 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth-3m/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-lower-mouth.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-lower-mouth.png new file mode 100644 index 0000000..f4eebac Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-lower-mouth.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..f109763 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..49348bd Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..dd5c181 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-smooth/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v238/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v238/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..cdeab68 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v238/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/after/passage-0-1-0-openair-4-closeup-1-skirts-off.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/after/passage-0-1-0-openair-4-closeup-1-skirts-off.png new file mode 100644 index 0000000..3f919f4 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/after/passage-0-1-0-openair-4-closeup-1-skirts-off.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/after/passage-0-1-0-openair-4-closeup-1-tile-edges.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/after/passage-0-1-0-openair-4-closeup-1-tile-edges.png new file mode 100644 index 0000000..82d4913 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/after/passage-0-1-0-openair-4-closeup-1-tile-edges.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..53fdaed Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/before/passage-0-1-0-openair-4-closeup-1-skirts-off.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/before/passage-0-1-0-openair-4-closeup-1-skirts-off.png new file mode 100644 index 0000000..6ba5dee Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v241/before/passage-0-1-0-openair-4-closeup-1-skirts-off.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v242/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v242/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..53fdaed Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v242/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v242/exp-v242-after-closeup-skirts-off.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v242/exp-v242-after-closeup-skirts-off.png new file mode 100644 index 0000000..f3690c9 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v242/exp-v242-after-closeup-skirts-off.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v243/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v243/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..c32a9a1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v243/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v243/exp-v243-after-closeup-skirts-off.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v243/exp-v243-after-closeup-skirts-off.png new file mode 100644 index 0000000..8d7de5e Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v243/exp-v243-after-closeup-skirts-off.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v246/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v246/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..7ea21eb Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v246/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v246/exp-v246-after-closeup-skirts-off.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v246/exp-v246-after-closeup-skirts-off.png new file mode 100644 index 0000000..814bc2d Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v246/exp-v246-after-closeup-skirts-off.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/clearance-shell.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/clearance-shell.png new file mode 100644 index 0000000..9da5f6b Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/clearance-shell.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/curved-only.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/curved-only.png new file mode 100644 index 0000000..87f7008 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/curved-only.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/filtered-shell.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/filtered-shell.png new file mode 100644 index 0000000..761a5d8 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/filtered-shell.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/low-pass-shell.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/low-pass-shell.png new file mode 100644 index 0000000..794aeb3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/low-pass-shell.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/natural-spline-fixed.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/natural-spline-fixed.png new file mode 100644 index 0000000..d816c55 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/natural-spline-fixed.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/natural-spline-shell.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/natural-spline-shell.png new file mode 100644 index 0000000..794aeb3 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/natural-spline-shell.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/no-curve-extension.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/no-curve-extension.png new file mode 100644 index 0000000..dda9344 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/no-curve-extension.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/no-join.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/no-join.png new file mode 100644 index 0000000..d24f88c Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/no-join.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/wide-join-6m.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/wide-join-6m.png new file mode 100644 index 0000000..13e2683 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-v247/wide-join-6m.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-closeup-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-closeup-1.png new file mode 100644 index 0000000..0e74c36 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-closeup-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-closeup-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-closeup-2.png new file mode 100644 index 0000000..14af6c1 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-closeup-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-closeup-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-closeup-3.png new file mode 100644 index 0000000..615d0a9 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-closeup-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-view-1.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-view-1.png new file mode 100644 index 0000000..4079e63 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-view-1.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-view-2.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-view-2.png new file mode 100644 index 0000000..98bdc96 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-view-2.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-view-3.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-view-3.png new file mode 100644 index 0000000..dc955aa Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-openair-4-view-3.png differ diff --git a/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-station-50.png b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-station-50.png new file mode 100644 index 0000000..1a96e59 Binary files /dev/null and b/Standalone/Research/WorldAssemblerM3/Linux110/captures/exp-width3/after/passage-0-1-0-station-50.png differ diff --git a/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v218.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v218.baseline new file mode 100644 index 0000000..3203ffa --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v218.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0x91931a57a067fd92 mesh=0xa818654be89790ac payload=0x370ff80451105a39 topology=0x06e507557aa70173 +[PipelineWholeViewHash] tiles=2370 density=0x658fcf59852f4df4 mesh=0xdf862c740c38e2f9 payload=0x0b56c964731d5b53 topology=0x9295c51d8225f4e3 +[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=0x58b015a500dc4525 mesh=0xd76fa686a3635697 payload=0xb2b43303cef39d72 topology=0x6947f942fd20627d +[PipelineLODHash] lod=3 tiles=208 density=0x51772c80e55d9c8c mesh=0xf94cb04d8857d076 payload=0xe0f0fb3a1ba23bdf topology=0x8784245abc908364 +[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-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..8ff2b55 --- /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=0x953b8f956687cf43 mesh=0x2de9549bd5e41a2c payload=0x9b51358a4160ec27 topology=0xb32de1c877f4eb89 +[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=0xdbb93b51f1d1658f mesh=0x128f787f3d159aec payload=0xf82d82f461b6f777 topology=0x9396eda43be10d0d +[PipelineLODHash] lod=3 tiles=208 density=0x2969eb113f1f2b59 mesh=0x364e06b736eb77d0 payload=0x618f76d91c39a1ce topology=0x1bcb041e67a8757e +[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-floating-islands-style2-v231.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v231.baseline new file mode 100644 index 0000000..7a53b33 --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v231.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0x91931a57a067fd92 mesh=0xa818654be89790ac payload=0x370ff80451105a39 topology=0x06e507557aa70173 +[PipelineWholeViewHash] tiles=2370 density=0xe1afd3cb14c88903 mesh=0xdd7df780902abde7 payload=0x254d0bc90f1165c1 topology=0xec376f9887a1f79d +[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=0x1c1f11d56ac6d3f1 mesh=0x4006ddafeb80d95b payload=0x25c1ab01214e2763 topology=0x76c8fdddbd25adeb +[PipelineLODHash] lod=3 tiles=208 density=0x373d224c9587acc3 mesh=0x0e238ac593804290 payload=0x12c946b23c5318f0 topology=0x76de93bd0876d1fc +[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-floating-islands-style2-v233.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v233.baseline new file mode 100644 index 0000000..7a53b33 --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v233.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0x91931a57a067fd92 mesh=0xa818654be89790ac payload=0x370ff80451105a39 topology=0x06e507557aa70173 +[PipelineWholeViewHash] tiles=2370 density=0xe1afd3cb14c88903 mesh=0xdd7df780902abde7 payload=0x254d0bc90f1165c1 topology=0xec376f9887a1f79d +[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=0x1c1f11d56ac6d3f1 mesh=0x4006ddafeb80d95b payload=0x25c1ab01214e2763 topology=0x76c8fdddbd25adeb +[PipelineLODHash] lod=3 tiles=208 density=0x373d224c9587acc3 mesh=0x0e238ac593804290 payload=0x12c946b23c5318f0 topology=0x76de93bd0876d1fc +[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-floating-islands-style2-v234.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v234.baseline new file mode 100644 index 0000000..7a53b33 --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v234.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0x91931a57a067fd92 mesh=0xa818654be89790ac payload=0x370ff80451105a39 topology=0x06e507557aa70173 +[PipelineWholeViewHash] tiles=2370 density=0xe1afd3cb14c88903 mesh=0xdd7df780902abde7 payload=0x254d0bc90f1165c1 topology=0xec376f9887a1f79d +[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=0x1c1f11d56ac6d3f1 mesh=0x4006ddafeb80d95b payload=0x25c1ab01214e2763 topology=0x76c8fdddbd25adeb +[PipelineLODHash] lod=3 tiles=208 density=0x373d224c9587acc3 mesh=0x0e238ac593804290 payload=0x12c946b23c5318f0 topology=0x76de93bd0876d1fc +[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-floating-islands-style2-v246.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v246.baseline new file mode 100644 index 0000000..5a93436 --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v246.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0x91931a57a067fd92 mesh=0xa818654be89790ac payload=0x370ff80451105a39 topology=0x06e507557aa70173 +[PipelineWholeViewHash] tiles=2370 density=0x9f27a78a8755f91d mesh=0xecfbf5c27a698c86 payload=0xac0780d61034e2fd topology=0x4725c390ecb3cf50 +[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=0x87f09b2eafcf6ce6 mesh=0xce18a258eacfa891 payload=0xfe3090475cc45c3e topology=0x649bc6ac9ed7a747 +[PipelineLODHash] lod=3 tiles=208 density=0xf44a61b5e69b6186 mesh=0x5db4029e5a71519b payload=0xfae200b638e203ed topology=0xf1f1bf163bded6f5 +[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-floating-islands-style2-v256.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v256.baseline new file mode 100644 index 0000000..57b2e24 --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v256.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0x91931a57a067fd92 mesh=0xa818654be89790ac payload=0x370ff80451105a39 topology=0x06e507557aa70173 +[PipelineWholeViewHash] tiles=2370 density=0x2198d1e1e73f36d9 mesh=0x656de9a5732ef2fa payload=0x54941b7d163efc75 topology=0x127a6263e2f01b95 +[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=0x92ae76b4955cdc4c mesh=0x5bd113d46c03402d payload=0xe886b9d36685c235 topology=0xf2f54e740be27f18 +[PipelineLODHash] lod=3 tiles=208 density=0x492f4679ad900150 mesh=0x7241e0bdcac5cdfb payload=0x763da0042148850a topology=0x64f329e4e37a428f +[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-floating-islands-style2-v257.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v257.baseline new file mode 100644 index 0000000..55b042e --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-floating-islands-style2-v257.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0x91931a57a067fd92 mesh=0xa818654be89790ac payload=0x370ff80451105a39 topology=0x06e507557aa70173 +[PipelineWholeViewHash] tiles=2370 density=0x171ae866b2869b65 mesh=0x6ee1919f1c4a1525 payload=0xb2ef03c3488f1cfa topology=0xa176b748ae64e789 +[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=0xa728cfad00abbf74 mesh=0x2569f4f77bf570cd payload=0xe8b96c35755676ad topology=0xa0b714a7023ff5bd +[PipelineLODHash] lod=3 tiles=208 density=0x43419d263473d3ac mesh=0x09d195ef1253a4ac payload=0x4d5d4d3fee7014f5 topology=0xaf105b77cebb9b32 +[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-v218.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v218.baseline new file mode 100644 index 0000000..4bbd093 --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v218.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0xace56c8f205238ad mesh=0xa9c603a1248de6b8 payload=0xea55f1f4fcc6a894 topology=0x5ea7bc78a1b678ae +[PipelineWholeViewHash] tiles=2370 density=0xdf90b1421e42bbff mesh=0x683201e0707355f9 payload=0x3c26caa45da3f188 topology=0x919535b3698f96e9 +[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=0xc593ee9645aa1c5b mesh=0x323757955cec0b2f payload=0xf0a4643331d3dbc9 topology=0x3e492c14ffd08713 +[PipelineLODHash] lod=3 tiles=208 density=0xf20fa3224ef1ae10 mesh=0x9d70376364269cb2 payload=0x6dc3cce868b62d14 topology=0xca28d85724f20517 +[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/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..e16e8a7 --- /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=0x3eeaf0d4e78b9900 mesh=0x20bddf3529f5ea37 payload=0xcedb8cb788f21190 topology=0xaa29ed1ac2f9ffce +[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=0x600148cbe643b155 mesh=0x3627f903d13416fd payload=0x2dd1350e704fe268 topology=0xf9b6bc363d71e191 +[PipelineLODHash] lod=3 tiles=208 density=0x6d4be0beda06ffd9 mesh=0xcf238f1bbfe570d2 payload=0x955aaff3a1f9aaf9 topology=0x52fe950c4190a362 +[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/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v231.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v231.baseline new file mode 100644 index 0000000..3477c8f --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v231.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0xace56c8f205238ad mesh=0xa9c603a1248de6b8 payload=0xea55f1f4fcc6a894 topology=0x5ea7bc78a1b678ae +[PipelineWholeViewHash] tiles=2370 density=0xaa54f74cb942c76f mesh=0xee0f2bad5f42b768 payload=0x74a18a2f0ad2940b topology=0xa57a419d5160ea0c +[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=0x600148cbe643b155 mesh=0x3627f903d13416fd payload=0x2dd1350e704fe268 topology=0xf9b6bc363d71e191 +[PipelineLODHash] lod=3 tiles=208 density=0x61bde110aff6b2ea mesh=0x7428a0f12f00ab15 payload=0x48d4482d53823e5e topology=0x9e8fb239d82cad70 +[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/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v233.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v233.baseline new file mode 100644 index 0000000..3477c8f --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v233.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0xace56c8f205238ad mesh=0xa9c603a1248de6b8 payload=0xea55f1f4fcc6a894 topology=0x5ea7bc78a1b678ae +[PipelineWholeViewHash] tiles=2370 density=0xaa54f74cb942c76f mesh=0xee0f2bad5f42b768 payload=0x74a18a2f0ad2940b topology=0xa57a419d5160ea0c +[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=0x600148cbe643b155 mesh=0x3627f903d13416fd payload=0x2dd1350e704fe268 topology=0xf9b6bc363d71e191 +[PipelineLODHash] lod=3 tiles=208 density=0x61bde110aff6b2ea mesh=0x7428a0f12f00ab15 payload=0x48d4482d53823e5e topology=0x9e8fb239d82cad70 +[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/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v234.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v234.baseline new file mode 100644 index 0000000..3477c8f --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v234.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0xace56c8f205238ad mesh=0xa9c603a1248de6b8 payload=0xea55f1f4fcc6a894 topology=0x5ea7bc78a1b678ae +[PipelineWholeViewHash] tiles=2370 density=0xaa54f74cb942c76f mesh=0xee0f2bad5f42b768 payload=0x74a18a2f0ad2940b topology=0xa57a419d5160ea0c +[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=0x600148cbe643b155 mesh=0x3627f903d13416fd payload=0x2dd1350e704fe268 topology=0xf9b6bc363d71e191 +[PipelineLODHash] lod=3 tiles=208 density=0x61bde110aff6b2ea mesh=0x7428a0f12f00ab15 payload=0x48d4482d53823e5e topology=0x9e8fb239d82cad70 +[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/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v246.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v246.baseline new file mode 100644 index 0000000..c889fd2 --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v246.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0xace56c8f205238ad mesh=0xa9c603a1248de6b8 payload=0xea55f1f4fcc6a894 topology=0x5ea7bc78a1b678ae +[PipelineWholeViewHash] tiles=2370 density=0x7b1ef7e29b0d0acc mesh=0x4073d563af379a27 payload=0xd65b0e69182bc3e9 topology=0xb22ea5e99d2455fa +[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=0x600148cbe643b155 mesh=0x3627f903d13416fd payload=0x2dd1350e704fe268 topology=0xf9b6bc363d71e191 +[PipelineLODHash] lod=3 tiles=208 density=0xabd16637abf71785 mesh=0xee42cddfad6432b6 payload=0xd4b200e7da0cc264 topology=0xd6535129f4c7bd3e +[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/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v256.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v256.baseline new file mode 100644 index 0000000..1173fe3 --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v256.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0xace56c8f205238ad mesh=0xa9c603a1248de6b8 payload=0xea55f1f4fcc6a894 topology=0x5ea7bc78a1b678ae +[PipelineWholeViewHash] tiles=2370 density=0x950c66ef9ddea358 mesh=0xa1ef03d2659222cd payload=0x68ec85429832b633 topology=0x94e4050ac0a3034f +[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=0x600148cbe643b155 mesh=0x3627f903d13416fd payload=0x2dd1350e704fe268 topology=0xf9b6bc363d71e191 +[PipelineLODHash] lod=3 tiles=208 density=0x84a133a8a20ebc71 mesh=0xd646ce8c1dd5b648 payload=0x74ed6ef5f4412d86 topology=0xdadce444fbf5bca7 +[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/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v257.baseline b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v257.baseline new file mode 100644 index 0000000..e65f4fd --- /dev/null +++ b/Standalone/Tools/verify/baselines/owner-hash/canonical/owner-hash-surface-world-style1-v257.baseline @@ -0,0 +1,12 @@ +[PipelineFullDetailHash] tiles=960 density=0xace56c8f205238ad mesh=0xa9c603a1248de6b8 payload=0xea55f1f4fcc6a894 topology=0x5ea7bc78a1b678ae +[PipelineWholeViewHash] tiles=2370 density=0xb4c6705350e7da3a mesh=0x53e0951439db391e payload=0xfdf629c42d0f6275 topology=0x54bd69bee0d0bf9b +[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=0x600148cbe643b155 mesh=0x3627f903d13416fd payload=0x2dd1350e704fe268 topology=0xf9b6bc363d71e191 +[PipelineLODHash] lod=3 tiles=208 density=0x333f82467364848b mesh=0x48e749e21e7b7353 payload=0xa4e2544b3e3ac388 topology=0xc9497e42c4062613 +[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 6ccb6de..3a5a3ef 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-v217.baseline", - "L109-v217-flat-floor-hollow-shell") + return (BASELINES / "owner-hash/canonical/owner-hash-surface-world-style1-v257.baseline", + "L110-v257-smoothed-openair-shell") if recipe == "floating-islands" and style == 2: - return (BASELINES / "owner-hash/canonical/owner-hash-floating-islands-style2-v217.baseline", - "L109-v217-flat-floor-hollow-shell") + return (BASELINES / "owner-hash/canonical/owner-hash-floating-islands-style2-v257.baseline", + "L110-v257-smoothed-openair-shell") raise VerificationFailure(f"no pinned owner hash baseline for {recipe} style {style}") @@ -696,7 +696,7 @@ def run_hash_pairs(runner: VerificationRunner, diagnostic = {"name": "owner-hash-surface-world-matches-L52-diagnostic", "status": "DIAGNOSTIC", "detail": f"matches={hashes[12] == l52_hashes} L52 rows={len(l52_hashes)}; " - "the v217 flat-floor hollow-shell geometry has its own pinned baseline"} + "the v257 smoothed open-air shell has its own pinned baseline"} runner.steps.append(diagnostic) print(f"[{runner.tier}] {diagnostic['name']} {diagnostic['detail']}", flush=True) baseline = BASELINES / "owner-hash/l46" / f"owner-hash-{recipe}-style{style}-w12.baseline"