wip: cave planner route support fixed (L134 design 3); clearance at edge joints open
Arrival edge floor aligned to the passage mouth, 0.75 m backbone floor-support budget, anchors on the planned floor: 0 unsupported, 0 grade failures. Open: 196/50,967 capsule samples blocked where a higher descending edge's floor backing meets the next edge (route-edge-6/7). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
1 parent
75c6ad251d
commit
379093401e
8 files changed
+102
-54
No files matched your search
@@ -1684,7 +1684,7 @@ namespace StandaloneStreamBenchmark
|
||||
if(mouthBinding)
|
||||
{
|
||||
const auto qOffset=static_cast<std::int64_t>(std::llround(
|
||||
250000.0*WorldAssemblySubvoxelsPerVoxel/layout.coreVoxelSizeMicrometres));
|
||||
1000000.0*WorldAssemblySubvoxelsPerVoxel/layout.coreVoxelSizeMicrometres));
|
||||
const auto& start=routeAnchors.front()->values;
|
||||
const auto& end=routeAnchors.back()->values;
|
||||
mouthBinding=start[0]==arrival->lowerMouthSubvoxels[0]
|
||||
@@ -5071,7 +5071,7 @@ namespace StandaloneStreamBenchmark
|
||||
return equalPosition(authored,mouth);
|
||||
auto expected=mouth;
|
||||
expected[2]+=static_cast<std::int64_t>(std::llround(
|
||||
250000.0*VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel
|
||||
1000000.0*VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel
|
||||
/World.CoreVoxelSizeMicrons));
|
||||
return equalPosition(authored,expected);
|
||||
};
|
||||
|
||||
@@ -1137,6 +1137,8 @@ namespace StandaloneWorldAssemblyPrototype
|
||||
toMicrometres(params.CaveWarpStrength));
|
||||
settings.smoothWidthMicrometres=std::max<std::int64_t>(1500000,
|
||||
toMicrometres(params.SDFBlendRadius));
|
||||
settings.floorSupportDepthMicrometres=std::clamp<std::int64_t>(
|
||||
settings.smoothWidthMicrometres/2,750000,2000000);
|
||||
settings.irregularityAmplitudeMicrometres=std::max<std::int64_t>(0,
|
||||
toMicrometres(params.SurfaceRoughness));
|
||||
settings.irregularityWavelengthMicrometres=params.RoughnessFrequency>0.0f
|
||||
@@ -1202,9 +1204,9 @@ namespace StandaloneWorldAssemblyPrototype
|
||||
anchor.values={point[0],point[1],point[2]};
|
||||
stratum->anchors.push_back(std::move(anchor));
|
||||
};
|
||||
constexpr std::int64_t PlayerCenterAboveMouthFloorMicrometres=250000;
|
||||
constexpr std::int64_t PlayerCenterAboveFloorMicrometres=1000000;
|
||||
auto start=arrival->lowerMouthSubvoxels;
|
||||
start[2]+=toCoreSubvoxels(PlayerCenterAboveMouthFloorMicrometres);
|
||||
start[2]+=toCoreSubvoxels(PlayerCenterAboveFloorMicrometres);
|
||||
appendRoutePoint("000-arrival",start);
|
||||
for(std::size_t edgeIndex=0;edgeIndex<256;++edgeIndex)
|
||||
{
|
||||
@@ -1216,14 +1218,36 @@ namespace StandaloneWorldAssemblyPrototype
|
||||
{return value.strateIndex==slot.StrateIndex
|
||||
&&value.stableId==stableId;});
|
||||
if(edge==layout.cavernEdges.end())break;
|
||||
if(edgeIndex==0)
|
||||
{
|
||||
auto inner=edge->controlPointsMicrometres.front();
|
||||
inner[2]+=PlayerCenterAboveFloorMicrometres;
|
||||
appendRoutePoint("000-edge-start",
|
||||
{toCoreSubvoxels(inner[0]),toCoreSubvoxels(inner[1]),
|
||||
toCoreSubvoxels(inner[2])});
|
||||
}
|
||||
auto point=edge->controlPointsMicrometres.back();
|
||||
point[2]+=1000000;
|
||||
point[2]+=PlayerCenterAboveFloorMicrometres;
|
||||
appendRoutePoint(std::to_string(edgeIndex+1),
|
||||
{toCoreSubvoxels(point[0]),toCoreSubvoxels(point[1]),
|
||||
toCoreSubvoxels(point[2])});
|
||||
}
|
||||
const std::string departureEdgeId="tunnel-network/strate-"
|
||||
+std::to_string(slot.StrateIndex)+"/departure-edge";
|
||||
const auto departureEdge=std::find_if(layout.cavernEdges.begin(),
|
||||
layout.cavernEdges.end(),[&](const auto& value)
|
||||
{return value.strateIndex==slot.StrateIndex
|
||||
&&value.stableId==departureEdgeId;});
|
||||
if(departureEdge!=layout.cavernEdges.end())
|
||||
{
|
||||
auto inner=departureEdge->controlPointsMicrometres.front();
|
||||
inner[2]+=PlayerCenterAboveFloorMicrometres;
|
||||
appendRoutePoint("998-departure-inner",
|
||||
{toCoreSubvoxels(inner[0]),toCoreSubvoxels(inner[1]),
|
||||
toCoreSubvoxels(inner[2])});
|
||||
}
|
||||
auto end=departure->upperMouthSubvoxels;
|
||||
end[2]+=toCoreSubvoxels(PlayerCenterAboveMouthFloorMicrometres);
|
||||
end[2]+=toCoreSubvoxels(PlayerCenterAboveFloorMicrometres);
|
||||
appendRoutePoint("999-departure",end);
|
||||
}
|
||||
return layout.finalize(error);
|
||||
|
||||
Reference in new issue
Block a user