wip(assembler): M2 round 4 -- WorldAssemblerHybridV2: exact contacts, tagged tiles 1.18-1.27x MC
The round-3 'field contact error' measured hit-to-anchor distance; V2 contacts are 0 cm and on the zero isosurface. Tagged-tile cost 5.7-6.7x -> 1.175-1.270x MC; organic 0.998x. Bound, shelf-thickness and route audits rerun with negative controls; W1/W8/W16 stable; V1 and MarchingCubesV1 unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
No files matched your search
@@ -682,17 +682,20 @@ driven by `EditorBrush*` props.
|
|||||||
position → seamless across chunk borders (both sides use identical pure samples). NO per-vertex
|
position → seamless across chunk borders (both sides use identical pure samples). NO per-vertex
|
||||||
`GetDensityAt` (was ~6/vertex, often as costly as the whole grid). `ComputeGradientNormal` is now
|
`GetDensityAt` (was ~6/vertex, often as costly as the whole grid). `ComputeGradientNormal` is now
|
||||||
unused. Only NORMALS changed vs the old path; geometry is identical.
|
unused. Only NORMALS changed vs the old path; geometry is identical.
|
||||||
- **Core hybrid sharp mesher (M2 round 3)** (`CoreMesherRecipe` / `MesherRecipe`): the property is
|
- **Core hybrid sharp mesher (M2)** (`CoreMesherRecipe` / `MesherRecipe`): the property remains
|
||||||
opt-in and defaults to `MarchingCubesV1`; `bUseVoxelForgeCore` remains separately default-off.
|
opt-in and defaults to `MarchingCubesV1`; `bUseVoxelForgeCore` remains separately default-off.
|
||||||
Reuse the existing density grid and route only LOD0 interior cells touched by stable type-2 plan
|
V1 preserves the round-3 feature-aware dual-contouring path for repeatability. V2 reuses the
|
||||||
boxes through feature-aware dual contouring. A cell touching a tile boundary and every LOD1+ cell
|
existing density grid and MC case/triangle topology, then projects eligible LOD0 edge roots onto
|
||||||
stay MC; existing skirts remain enabled. Do not alter density queries, worker task/epoch handling,
|
exact type-2 plan-box planes with feature-split normals. Only edges whose complete incident-cell
|
||||||
thread-local MC grid caches, or LOD0-only collision policy for this recipe. The canonical feature
|
ring is inside the tile can snap; border roots and every LOD1+ cell stay MC, with skirts unchanged.
|
||||||
list and fixed cell order remain deterministic. BuildHost measurements show tagged corner/doorway/
|
The recipe version participates in Core content identity. Do not alter density queries, worker
|
||||||
riser/ledge tiles about 5.6–7.4× the production MC meshing time, while an organic cave fixture is
|
task/epoch handling, thread-local MC grid caches, or LOD0-only collision policy. Keep
|
||||||
bit-identical and its measured time is unchanged within noise; keep the recipe opt-in and use tags
|
`MarchingCubesV1` and the Core-off legacy path unchanged. V1 measured 5.58–7.11× MC on tagged
|
||||||
only where the feature warrants that tile cost. MC-to-MC LOD borders still have five standalone
|
fixtures; V2 measured at most 1.27× and passed five exact cooked contacts plus the independent
|
||||||
doorway topology failures, so skirts are a visual repair, not a topology guarantee.
|
same-LOD border check. Keep both recipes opt-in. The standalone stitched-transition suite still
|
||||||
|
has five MC doorway topology failures. Production skirts cover these seams in the static audit
|
||||||
|
view but their strips are visible; the owner should review them at the target camera. Skirts do not
|
||||||
|
make the mesh topologically watertight.
|
||||||
- **Surface column cache (T1.a)** (density path: the surface stack's `FSurfaceColumnSource` memo;
|
- **Surface column cache (T1.a)** (density path: the surface stack's `FSurfaceColumnSource` memo;
|
||||||
`ClassifyTile`: `FSurfaceColumnCache` = LRU of `FSurfaceColumnBox`): the heightfield + sky-cap + biome blend are a PURE function of (XY, seed,
|
`ClassifyTile`: `FSurfaceColumnCache` = LRU of `FSurfaceColumnBox`): the heightfield + sky-cap + biome blend are a PURE function of (XY, seed,
|
||||||
strate) — **ZERO Z dependence** (climate/Voronoi are pure-XY; surface params are per-strate constant
|
strate) — **ZERO Z dependence** (climate/Voronoi are pure-XY; surface params are per-strate constant
|
||||||
|
|||||||
@@ -896,12 +896,12 @@ sign/size, geometry and per-tile-kind pawn-lag checks; see round 6 in
|
|||||||
|
|
||||||
M2 round 3 adds `EVoxelForgeCoreMesherRecipe` / `CoreMesherRecipe` in
|
M2 round 3 adds `EVoxelForgeCoreMesherRecipe` / `CoreMesherRecipe` in
|
||||||
[`Source/VoxelForge/Public/VoxelWorld.h`](Source/VoxelForge/Public/VoxelWorld.h), defaulting to
|
[`Source/VoxelForge/Public/VoxelWorld.h`](Source/VoxelForge/Public/VoxelWorld.h), defaulting to
|
||||||
`MarchingCubesV1`; `VoxelWorld.cpp` maps the opt-in `WorldAssemblerHybridV1` choice to the Core
|
`MarchingCubesV1`; `VoxelWorld.cpp` maps opt-in hybrid choices to Core `MesherRecipe` values and
|
||||||
`MesherRecipe` and adds that choice to the Core content identity only while selected. Core extracts
|
adds the selected version to Core content identity. V1 retains the original feature-aware DC path.
|
||||||
stable type-2 world-plan boxes as sharp features at LOD0; the production mesher routes tagged
|
V2 keeps MC topology and snaps only eligible interior LOD0 edge roots to exact type-2 box planes;
|
||||||
interior cells through `VoxelHybridSharpMesher.h`, while border-touching cells and LOD1+ remain MC.
|
the mesher support is in `VoxelHybridSharpMesher.h` and `VoxelMarchingCubesMesher.cpp`. Coarse LODs
|
||||||
The same-LOD border path stays independent and skirted. `VoxelForgeExploreCommandlet.cpp` owns the
|
and roots whose incident cells reach a tile border remain MC. `VoxelForgeExploreCommandlet.cpp`
|
||||||
five production-mesher fixtures, border probes and Core actor collision contacts. BuildHost evidence
|
owns the five production-mesher fixtures, border probes and Core actor collision contacts. BuildHost evidence
|
||||||
and remaining doorway transition failures are recorded in
|
and remaining doorway transition failures are recorded in
|
||||||
[`Standalone/UNREAL_INTEGRATION_REPORT.md`](Standalone/UNREAL_INTEGRATION_REPORT.md) and
|
[`Standalone/UNREAL_INTEGRATION_REPORT.md`](Standalone/UNREAL_INTEGRATION_REPORT.md) and
|
||||||
[`Standalone/Research/WorldAssemblerM2/REPORT.md`](Standalone/Research/WorldAssemblerM2/REPORT.md).
|
[`Standalone/Research/WorldAssemblerM2/REPORT.md`](Standalone/Research/WorldAssemblerM2/REPORT.md).
|
||||||
|
|||||||
@@ -43,6 +43,11 @@ namespace VoxelHybridSharpMesher
|
|||||||
else V.Z = Value;
|
else V.Z = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline int32 IntAxisValue(const FIntVector& V, int32 Axis)
|
||||||
|
{
|
||||||
|
return Axis == 0 ? V.X : (Axis == 1 ? V.Y : V.Z);
|
||||||
|
}
|
||||||
|
|
||||||
struct FPlane
|
struct FPlane
|
||||||
{
|
{
|
||||||
uint64 Id = 0;
|
uint64 Id = 0;
|
||||||
@@ -229,6 +234,109 @@ namespace VoxelHybridSharpMesher
|
|||||||
return SDF;
|
return SDF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct FPreparedFeatureBox
|
||||||
|
{
|
||||||
|
uint64 StableId = 0;
|
||||||
|
double Minimum[3]{};
|
||||||
|
double Maximum[3]{};
|
||||||
|
};
|
||||||
|
|
||||||
|
inline std::vector<FPreparedFeatureBox> PrepareFeatureBoxes(
|
||||||
|
const TArray<FVoxelHybridSharpFeatureBox>& Features)
|
||||||
|
{
|
||||||
|
std::vector<FPreparedFeatureBox> Prepared;
|
||||||
|
Prepared.reserve(static_cast<std::size_t>(Features.Num()));
|
||||||
|
for (const FVoxelHybridSharpFeatureBox& Feature : Features)
|
||||||
|
{
|
||||||
|
FPreparedFeatureBox Box;
|
||||||
|
Box.StableId = Feature.StableId;
|
||||||
|
for (int32 Axis = 0; Axis < 3; ++Axis)
|
||||||
|
{
|
||||||
|
Box.Minimum[Axis] = static_cast<double>(Feature.MinimumSubvoxels[Axis])
|
||||||
|
/ SubvoxelsPerVoxel;
|
||||||
|
Box.Maximum[Axis] = static_cast<double>(Feature.MaximumSubvoxels[Axis])
|
||||||
|
/ SubvoxelsPerVoxel;
|
||||||
|
}
|
||||||
|
Prepared.push_back(Box);
|
||||||
|
}
|
||||||
|
return Prepared;
|
||||||
|
}
|
||||||
|
|
||||||
|
// MC interpolates the sampled field. A finite hard box is only included by the field at
|
||||||
|
// samples inside it, so an edge can interpolate away from the box plane when the box face
|
||||||
|
// lies between lattice points. For V2, keep the MC connectivity and move only roots whose
|
||||||
|
// lattice edge crosses a tagged analytic face. This is deterministic and leaves tile edges
|
||||||
|
// to the unchanged MC/skirt path.
|
||||||
|
inline bool TrySnapFeatureEdge(const std::vector<FPreparedFeatureBox>& Features,
|
||||||
|
const FIntVector& OriginVoxels, const FIntVector& LocalStart, int32 Axis,
|
||||||
|
const FVector& ChunkWorldPos, float GeometryVoxelSize,
|
||||||
|
FVector& InOutWorldPosition, FVector& OutNormal, uint64& OutSplitKey)
|
||||||
|
{
|
||||||
|
const double EdgeStart = static_cast<double>(IntAxisValue(OriginVoxels, Axis)
|
||||||
|
+ IntAxisValue(LocalStart, Axis));
|
||||||
|
const double EdgeEnd = EdgeStart + 1.0;
|
||||||
|
const double EdgeLow = FMath::Min(EdgeStart, EdgeEnd);
|
||||||
|
const double EdgeHigh = FMath::Max(EdgeStart, EdgeEnd);
|
||||||
|
const double RootVoxel = static_cast<double>(IntAxisValue(OriginVoxels, Axis))
|
||||||
|
+ (AxisValue(InOutWorldPosition, Axis) - AxisValue(ChunkWorldPos, Axis))
|
||||||
|
/ GeometryVoxelSize;
|
||||||
|
constexpr double Tolerance = 1.0e-9;
|
||||||
|
double BestDistance = std::numeric_limits<double>::infinity();
|
||||||
|
uint64 BestStableId = std::numeric_limits<uint64>::max();
|
||||||
|
uint64 BestFaceId = 0;
|
||||||
|
double BestPlane = 0.0;
|
||||||
|
int32 BestSide = 0;
|
||||||
|
|
||||||
|
for (const FPreparedFeatureBox& Feature : Features)
|
||||||
|
{
|
||||||
|
bool bWithinFaceSpan = true;
|
||||||
|
for (int32 OtherAxis = 0; OtherAxis < 3; ++OtherAxis)
|
||||||
|
{
|
||||||
|
if (OtherAxis == Axis) continue;
|
||||||
|
const double Coordinate = static_cast<double>(IntAxisValue(OriginVoxels, OtherAxis)
|
||||||
|
+ IntAxisValue(LocalStart, OtherAxis));
|
||||||
|
if (Coordinate < Feature.Minimum[OtherAxis] - Tolerance
|
||||||
|
|| Coordinate > Feature.Maximum[OtherAxis] + Tolerance)
|
||||||
|
{
|
||||||
|
bWithinFaceSpan = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!bWithinFaceSpan) continue;
|
||||||
|
|
||||||
|
for (int32 Side = 0; Side < 2; ++Side)
|
||||||
|
{
|
||||||
|
const double Plane = Side == 0
|
||||||
|
? Feature.Minimum[Axis] : Feature.Maximum[Axis];
|
||||||
|
if (Plane < EdgeLow - Tolerance || Plane > EdgeHigh + Tolerance) continue;
|
||||||
|
const double Distance = FMath::Abs(Plane - RootVoxel);
|
||||||
|
const uint64 FaceId = Feature.StableId ^ (0x9e3779b97f4a7c15ull
|
||||||
|
+ static_cast<uint64>(Axis * 2 + Side + 1));
|
||||||
|
if (Distance > BestDistance + Tolerance
|
||||||
|
|| (FMath::Abs(Distance - BestDistance) <= Tolerance
|
||||||
|
&& std::tie(Feature.StableId, FaceId)
|
||||||
|
>= std::tie(BestStableId, BestFaceId)))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
BestDistance = Distance;
|
||||||
|
BestStableId = Feature.StableId;
|
||||||
|
BestFaceId = FaceId != 0 ? FaceId : static_cast<uint64>(Axis + 1);
|
||||||
|
BestPlane = Plane;
|
||||||
|
BestSide = Side;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BestFaceId == 0) return false;
|
||||||
|
SetAxisValue(InOutWorldPosition, Axis, AxisValue(ChunkWorldPos, Axis)
|
||||||
|
+ (BestPlane - static_cast<double>(IntAxisValue(OriginVoxels, Axis)))
|
||||||
|
* GeometryVoxelSize);
|
||||||
|
OutNormal = FVector::ZeroVector;
|
||||||
|
SetAxisValue(OutNormal, Axis, BestSide == 0 ? -1.0 : 1.0);
|
||||||
|
OutSplitKey = BestFaceId;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
inline uint64 SelectFeature(const FRoot& Root, int32 Axis)
|
inline uint64 SelectFeature(const FRoot& Root, int32 Axis)
|
||||||
{
|
{
|
||||||
if (Root.Planes.empty()) return 0;
|
if (Root.Planes.empty()) return 0;
|
||||||
|
|||||||
@@ -1073,8 +1073,9 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
// Le DC reste limite aux surfaces LOD0 balisees; les patches connectes au bord restent MC.
|
// Le DC reste limite aux surfaces LOD0 balisees; les patches connectes au bord restent MC.
|
||||||
VoxelHybridSharpMesher::FResult HybridResult;
|
VoxelHybridSharpMesher::FResult HybridResult;
|
||||||
MeshData.HybridFeatureCount = HybridSharpFeatures.Num();
|
MeshData.HybridFeatureCount = HybridSharpFeatures.Num();
|
||||||
if (bUseHybridSharpMesher && Step == 1 && CellsPerAxis == CHUNK_SIZE
|
const bool bHybridLod0Interior = Step == 1 && CellsPerAxis == CHUNK_SIZE
|
||||||
&& CzLo == 0 && CzHi == CellsPerAxis - 1 && !HybridSharpFeatures.IsEmpty())
|
&& CzLo == 0 && CzHi == CellsPerAxis - 1 && !HybridSharpFeatures.IsEmpty();
|
||||||
|
if (bUseHybridSharpMesher && bHybridLod0Interior)
|
||||||
{
|
{
|
||||||
MeshData.bHybridMesherInvoked = true;
|
MeshData.bHybridMesherInvoked = true;
|
||||||
HybridResult = VoxelHybridSharpMesher::Generate(
|
HybridResult = VoxelHybridSharpMesher::Generate(
|
||||||
@@ -1083,6 +1084,12 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
[&](int32 X, int32 Y, int32 Z) { return SampleG(X, Y, Z); },
|
[&](int32 X, int32 Y, int32 Z) { return SampleG(X, Y, Z); },
|
||||||
[&](int32 X, int32 Y, int32 Z) { return GradAt(X, Y, Z); });
|
[&](int32 X, int32 Y, int32 Z) { return GradAt(X, Y, Z); });
|
||||||
}
|
}
|
||||||
|
const bool bHybridSharpSnap = bUseHybridSharpFeatureSnap && bHybridLod0Interior;
|
||||||
|
const std::vector<VoxelHybridSharpMesher::FPreparedFeatureBox> PreparedSharpFeatures =
|
||||||
|
bHybridSharpSnap
|
||||||
|
? VoxelHybridSharpMesher::PrepareFeatureBoxes(HybridSharpFeatures)
|
||||||
|
: std::vector<VoxelHybridSharpMesher::FPreparedFeatureBox>{};
|
||||||
|
if (bHybridSharpSnap) MeshData.bHybridMesherInvoked = true;
|
||||||
MeshData.HybridSharpCellCount = HybridResult.SharpCells;
|
MeshData.HybridSharpCellCount = HybridResult.SharpCells;
|
||||||
MeshData.HybridDualCellCount = HybridResult.DualCells;
|
MeshData.HybridDualCellCount = HybridResult.DualCells;
|
||||||
MeshData.HybridActiveEdgeRootCount = HybridResult.ActiveEdgeRoots;
|
MeshData.HybridActiveEdgeRootCount = HybridResult.ActiveEdgeRoots;
|
||||||
@@ -1182,6 +1189,7 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
? FPlatformTime::Cycles64() : 0;
|
? FPlatformTime::Cycles64() : 0;
|
||||||
FVector EdgeVertices[12];
|
FVector EdgeVertices[12];
|
||||||
FVector EdgeNormals[12];
|
FVector EdgeNormals[12];
|
||||||
|
uint64 EdgeSplitKeys[12]{};
|
||||||
for (int32 i = 0; i < 12; i++)
|
for (int32 i = 0; i < 12; i++)
|
||||||
{
|
{
|
||||||
if (MCEdgeTable[CaseIndex] & (1 << i))
|
if (MCEdgeTable[CaseIndex] & (1 << i))
|
||||||
@@ -1194,6 +1202,28 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
: FMath::Clamp((IsoLevel - D1) / (D2 - D1), 0.0f, 1.0f);
|
: FMath::Clamp((IsoLevel - D1) / (D2 - D1), 0.0f, 1.0f);
|
||||||
EdgeVertices[i] = Positions[A] + T * (Positions[B] - Positions[A]);
|
EdgeVertices[i] = Positions[A] + T * (Positions[B] - Positions[A]);
|
||||||
EdgeNormals[i] = Gradients[A] + T * (Gradients[B] - Gradients[A]);
|
EdgeNormals[i] = Gradients[A] + T * (Gradients[B] - Gradients[A]);
|
||||||
|
if (bHybridSharpSnap)
|
||||||
|
{
|
||||||
|
const int32 Axis = CornerOffsets[A].X != CornerOffsets[B].X ? 0
|
||||||
|
: (CornerOffsets[A].Y != CornerOffsets[B].Y ? 1 : 2);
|
||||||
|
const FIntVector LocalStart(cx + CornerOffsets[A].X,
|
||||||
|
cy + CornerOffsets[A].Y, cz + CornerOffsets[A].Z);
|
||||||
|
// Every cell incident to this lattice edge must be interior so all
|
||||||
|
// copies of the shared root take the same exact or MC path.
|
||||||
|
const bool bCanSnapEdge = bHybridSharpSnap
|
||||||
|
&& LocalStart.X >= 2 && LocalStart.Y >= 2 && LocalStart.Z >= 2
|
||||||
|
&& LocalStart.X <= CellsPerAxis - 2
|
||||||
|
&& LocalStart.Y <= CellsPerAxis - 2
|
||||||
|
&& LocalStart.Z <= CellsPerAxis - 2;
|
||||||
|
FVector AnalyticNormal;
|
||||||
|
if (bCanSnapEdge && VoxelHybridSharpMesher::TrySnapFeatureEdge(
|
||||||
|
PreparedSharpFeatures, OriginVoxels, LocalStart, Axis,
|
||||||
|
ChunkWorldPos, GeometryVoxelSize, EdgeVertices[i],
|
||||||
|
AnalyticNormal, EdgeSplitKeys[i]))
|
||||||
|
{
|
||||||
|
EdgeNormals[i] = AnalyticNormal;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bSampleCell)
|
if (bSampleCell)
|
||||||
@@ -1216,9 +1246,12 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const int32 Idx0 = GetOrCreateVertex(EdgeVertices[E0], EdgeNormals[E0]);
|
const int32 Idx0 = GetOrCreateVertex(
|
||||||
const int32 Idx1 = GetOrCreateVertex(EdgeVertices[E1], EdgeNormals[E1]);
|
EdgeVertices[E0], EdgeNormals[E0], EdgeSplitKeys[E0]);
|
||||||
const int32 Idx2 = GetOrCreateVertex(EdgeVertices[E2], EdgeNormals[E2]);
|
const int32 Idx1 = GetOrCreateVertex(
|
||||||
|
EdgeVertices[E1], EdgeNormals[E1], EdgeSplitKeys[E1]);
|
||||||
|
const int32 Idx2 = GetOrCreateVertex(
|
||||||
|
EdgeVertices[E2], EdgeNormals[E2], EdgeSplitKeys[E2]);
|
||||||
|
|
||||||
// F17 — vote majoritaire (≥ 2 vertex sky-cap ⇒ triangle sky-cap).
|
// F17 — vote majoritaire (≥ 2 vertex sky-cap ⇒ triangle sky-cap).
|
||||||
const int32 CapVotes = (int32)VertexClasses[Idx0]
|
const int32 CapVotes = (int32)VertexClasses[Idx0]
|
||||||
|
|||||||
@@ -11449,9 +11449,18 @@ void AVoxelWorld::LoadCoreTile(const FVoxelTileKey& Tile, EVoxelTileWorkPriority
|
|||||||
|
|
||||||
const VoxelForgeCore::TileKey CoreKey{{Tile.Coord.X, Tile.Coord.Y, Tile.Coord.Z}, Tile.Level};
|
const VoxelForgeCore::TileKey CoreKey{{Tile.Coord.X, Tile.Coord.Y, Tile.Coord.Z}, Tile.Level};
|
||||||
VoxelForgeCore::TileGenerationOptions Options;
|
VoxelForgeCore::TileGenerationOptions Options;
|
||||||
Options.mesherRecipe = CoreMesherRecipe == EVoxelForgeCoreMesherRecipe::WorldAssemblerHybridV1
|
switch (CoreMesherRecipe)
|
||||||
? VoxelForgeCore::MesherRecipe::worldAssemblerHybridV1
|
{
|
||||||
: VoxelForgeCore::MesherRecipe::marchingCubesV1;
|
case EVoxelForgeCoreMesherRecipe::WorldAssemblerHybridV1:
|
||||||
|
Options.mesherRecipe = VoxelForgeCore::MesherRecipe::worldAssemblerHybridV1;
|
||||||
|
break;
|
||||||
|
case EVoxelForgeCoreMesherRecipe::WorldAssemblerHybridV2:
|
||||||
|
Options.mesherRecipe = VoxelForgeCore::MesherRecipe::worldAssemblerHybridV2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Options.mesherRecipe = VoxelForgeCore::MesherRecipe::marchingCubesV1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
Options.hashDensity = bCaptureHashes;
|
Options.hashDensity = bCaptureHashes;
|
||||||
std::string CoreError;
|
std::string CoreError;
|
||||||
std::optional<VoxelForgeCore::TileMesh> CoreMesh;
|
std::optional<VoxelForgeCore::TileMesh> CoreMesh;
|
||||||
@@ -13290,7 +13299,7 @@ FString AVoxelWorld::GetCurrentSeasonContentHash() const
|
|||||||
{
|
{
|
||||||
return FString();
|
return FString();
|
||||||
}
|
}
|
||||||
const bool bHybridMesher = CoreMesherRecipe == EVoxelForgeCoreMesherRecipe::WorldAssemblerHybridV1;
|
const bool bHybridMesher = CoreMesherRecipe != EVoxelForgeCoreMesherRecipe::MarchingCubesV1;
|
||||||
if (AssemblyHash.IsEmpty() && !bHybridMesher)
|
if (AssemblyHash.IsEmpty() && !bHybridMesher)
|
||||||
{
|
{
|
||||||
return SeasonHash;
|
return SeasonHash;
|
||||||
@@ -13316,10 +13325,14 @@ FString AVoxelWorld::GetCurrentSeasonContentHash() const
|
|||||||
Payload += TEXT("|world_assembly=");
|
Payload += TEXT("|world_assembly=");
|
||||||
Payload += AssemblyHash;
|
Payload += AssemblyHash;
|
||||||
}
|
}
|
||||||
if (bHybridMesher)
|
if (CoreMesherRecipe == EVoxelForgeCoreMesherRecipe::WorldAssemblerHybridV1)
|
||||||
{
|
{
|
||||||
Payload += TEXT("|core_mesher=WorldAssemblerHybridV1");
|
Payload += TEXT("|core_mesher=WorldAssemblerHybridV1");
|
||||||
}
|
}
|
||||||
|
else if (CoreMesherRecipe == EVoxelForgeCoreMesherRecipe::WorldAssemblerHybridV2)
|
||||||
|
{
|
||||||
|
Payload += TEXT("|core_mesher=WorldAssemblerHybridV2");
|
||||||
|
}
|
||||||
FTCHARToUTF8 Utf8Payload(*Payload);
|
FTCHARToUTF8 Utf8Payload(*Payload);
|
||||||
uint8 Digest[FSHA1::DigestSize];
|
uint8 Digest[FSHA1::DigestSize];
|
||||||
FSHA1::HashBuffer(Utf8Payload.Get(), Utf8Payload.Length(), Digest);
|
FSHA1::HashBuffer(Utf8Payload.Get(), Utf8Payload.Length(), Digest);
|
||||||
|
|||||||
@@ -120,6 +120,15 @@ public:
|
|||||||
bUseHybridSharpMesher = true;
|
bUseHybridSharpMesher = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Version 2 keeps MC topology and projects eligible LOD0 edge roots onto the exact
|
||||||
|
// analytic box planes. It avoids the tile-wide dual-contouring reconstruction in V1.
|
||||||
|
// La version 2 conserve la topologie MC et projette les racines LOD0 sur les plans exacts.
|
||||||
|
void SetHybridSharpFeatureSnap(TArray<FVoxelHybridSharpFeatureBox>&& InFeatures)
|
||||||
|
{
|
||||||
|
HybridSharpFeatures = MoveTemp(InFeatures);
|
||||||
|
bUseHybridSharpFeatureSnap = true;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FORCEINLINE bool ShouldAbortWork() const
|
FORCEINLINE bool ShouldAbortWork() const
|
||||||
{
|
{
|
||||||
@@ -130,6 +139,7 @@ private:
|
|||||||
const FVoxelSharedDensityGrid* SharedDensityGrid = nullptr;
|
const FVoxelSharedDensityGrid* SharedDensityGrid = nullptr;
|
||||||
TArray<FVoxelHybridSharpFeatureBox> HybridSharpFeatures;
|
TArray<FVoxelHybridSharpFeatureBox> HybridSharpFeatures;
|
||||||
bool bUseHybridSharpMesher = false;
|
bool bUseHybridSharpMesher = false;
|
||||||
|
bool bUseHybridSharpFeatureSnap = false;
|
||||||
float GeometryVoxelSizeCm = VOXEL_SIZE;
|
float GeometryVoxelSizeCm = VOXEL_SIZE;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -78,7 +78,8 @@ UENUM(BlueprintType)
|
|||||||
enum class EVoxelForgeCoreMesherRecipe : uint8
|
enum class EVoxelForgeCoreMesherRecipe : uint8
|
||||||
{
|
{
|
||||||
MarchingCubesV1 UMETA(DisplayName = "Marching Cubes V1"),
|
MarchingCubesV1 UMETA(DisplayName = "Marching Cubes V1"),
|
||||||
WorldAssemblerHybridV1 UMETA(DisplayName = "World Assembler Hybrid V1")
|
WorldAssemblerHybridV1 UMETA(DisplayName = "World Assembler Hybrid V1"),
|
||||||
|
WorldAssemblerHybridV2 UMETA(DisplayName = "World Assembler Hybrid V2")
|
||||||
};
|
};
|
||||||
|
|
||||||
/** A non-player streaming center: keep a small box of level-0 tiles loaded around Actor so it has
|
/** A non-player streaming center: keep a small box of level-0 tiles loaded around Actor so it has
|
||||||
|
|||||||
@@ -792,7 +792,9 @@ struct FExploreArguments
|
|||||||
FString StrateReference;
|
FString StrateReference;
|
||||||
FString SettingsReference;
|
FString SettingsReference;
|
||||||
FString CoreWorldAssemblyManifestPath;
|
FString CoreWorldAssemblyManifestPath;
|
||||||
|
int32 CoreHybridMesherVersion = 0;
|
||||||
bool bCoreHybridMesher = false;
|
bool bCoreHybridMesher = false;
|
||||||
|
bool bCoreHybridMesherV2 = false;
|
||||||
bool bCoreHybridFixturePlacement = false;
|
bool bCoreHybridFixturePlacement = false;
|
||||||
bool bCoreHybridCliffOnly = false;
|
bool bCoreHybridCliffOnly = false;
|
||||||
bool bCoreHybridFixturesOnly = false;
|
bool bCoreHybridFixturesOnly = false;
|
||||||
@@ -910,7 +912,14 @@ bool ParseArguments(const FString& Params, FExploreArguments& OutArguments, FStr
|
|||||||
OutArguments.bCoreWorldTest = CoreWorldTest != 0;
|
OutArguments.bCoreWorldTest = CoreWorldTest != 0;
|
||||||
int32 CoreHybridMesher = 0;
|
int32 CoreHybridMesher = 0;
|
||||||
FParse::Value(*Params, TEXT("corehybridmesher="), CoreHybridMesher);
|
FParse::Value(*Params, TEXT("corehybridmesher="), CoreHybridMesher);
|
||||||
|
if (CoreHybridMesher < 0 || CoreHybridMesher > 2)
|
||||||
|
{
|
||||||
|
OutError = TEXT("corehybridmesher supports only 0 (MC), 1 (hybrid V1), or 2 (hybrid V2).");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
OutArguments.CoreHybridMesherVersion = CoreHybridMesher;
|
||||||
OutArguments.bCoreHybridMesher = CoreHybridMesher != 0;
|
OutArguments.bCoreHybridMesher = CoreHybridMesher != 0;
|
||||||
|
OutArguments.bCoreHybridMesherV2 = CoreHybridMesher == 2;
|
||||||
int32 CoreHybridFixturePlacement = 0;
|
int32 CoreHybridFixturePlacement = 0;
|
||||||
FParse::Value(*Params, TEXT("corehybridfixtureplacement="), CoreHybridFixturePlacement);
|
FParse::Value(*Params, TEXT("corehybridfixtureplacement="), CoreHybridFixturePlacement);
|
||||||
OutArguments.bCoreHybridFixturePlacement = CoreHybridFixturePlacement != 0;
|
OutArguments.bCoreHybridFixturePlacement = CoreHybridFixturePlacement != 0;
|
||||||
@@ -14026,7 +14035,7 @@ bool SameHybridMeshArrays(const FVoxelMeshData& A, const FVoxelMeshData& B)
|
|||||||
|
|
||||||
bool GenerateHybridFixtureMesh(UVoxelGenerator* Generator, const FHybridAnalyticFixture& Fixture,
|
bool GenerateHybridFixtureMesh(UVoxelGenerator* Generator, const FHybridAnalyticFixture& Fixture,
|
||||||
const FVector& Phase, const FIntVector& Origin, int32 Step, int32 Cells,
|
const FVector& Phase, const FIntVector& Origin, int32 Step, int32 Cells,
|
||||||
bool bHybrid, FVoxelMeshData& OutMesh, double* OutMeshingMilliseconds,
|
int32 HybridRecipe, FVoxelMeshData& OutMesh, double* OutMeshingMilliseconds,
|
||||||
FString& OutError)
|
FString& OutError)
|
||||||
{
|
{
|
||||||
if (Generator == nullptr || Step <= 0 || Cells <= 0)
|
if (Generator == nullptr || Step <= 0 || Cells <= 0)
|
||||||
@@ -14049,7 +14058,7 @@ bool GenerateHybridFixtureMesh(UVoxelGenerator* Generator, const FHybridAnalytic
|
|||||||
}
|
}
|
||||||
|
|
||||||
TArray<FVoxelHybridSharpFeatureBox> SharpFeatures;
|
TArray<FVoxelHybridSharpFeatureBox> SharpFeatures;
|
||||||
if (bHybrid)
|
if (HybridRecipe != 0)
|
||||||
{
|
{
|
||||||
for (const FHybridAnalyticBox& Feature : Fixture.Boxes)
|
for (const FHybridAnalyticBox& Feature : Fixture.Boxes)
|
||||||
{
|
{
|
||||||
@@ -14078,7 +14087,10 @@ bool GenerateHybridFixtureMesh(UVoxelGenerator* Generator, const FHybridAnalytic
|
|||||||
Mesher->SetGenerator(Generator);
|
Mesher->SetGenerator(Generator);
|
||||||
Mesher->SetGeometryVoxelSizeCm(25.0f);
|
Mesher->SetGeometryVoxelSizeCm(25.0f);
|
||||||
Mesher->bGenerateSkirts = false;
|
Mesher->bGenerateSkirts = false;
|
||||||
if (bHybrid) Mesher->SetHybridSharpFeatures(MoveTemp(SharpFeatures));
|
if (HybridRecipe == 2)
|
||||||
|
Mesher->SetHybridSharpFeatureSnap(MoveTemp(SharpFeatures));
|
||||||
|
else if (HybridRecipe == 1)
|
||||||
|
Mesher->SetHybridSharpFeatures(MoveTemp(SharpFeatures));
|
||||||
const double StartSeconds = FPlatformTime::Seconds();
|
const double StartSeconds = FPlatformTime::Seconds();
|
||||||
OutMesh = Mesher->GenerateMesh(Origin, Step, Cells, nullptr,
|
OutMesh = Mesher->GenerateMesh(Origin, Step, Cells, nullptr,
|
||||||
INT32_MIN, INT32_MAX, nullptr, nullptr, &Grid);
|
INT32_MIN, INT32_MAX, nullptr, nullptr, &Grid);
|
||||||
@@ -14207,7 +14219,8 @@ double HybridContourSetMismatchCm(const FHybridContourSet& A, const FHybridConto
|
|||||||
return Maximum;
|
return Maximum;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RunHybridPluginMesherFixtures(UVoxelGenerator* Generator, FString& OutError)
|
bool RunHybridPluginMesherFixtures(UVoxelGenerator* Generator, bool bIncludeV2,
|
||||||
|
FString& OutError)
|
||||||
{
|
{
|
||||||
const FVector Phase(0.27, 0.41, 0.33);
|
const FVector Phase(0.27, 0.41, 0.33);
|
||||||
const TCHAR* FixtureNames[] = {
|
const TCHAR* FixtureNames[] = {
|
||||||
@@ -14268,6 +14281,58 @@ bool RunHybridPluginMesherFixtures(UVoxelGenerator* Generator, FString& OutError
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bIncludeV2)
|
||||||
|
{
|
||||||
|
int32 SnapSharpDifferences = 0;
|
||||||
|
for (const TCHAR* FixtureName : FixtureNames)
|
||||||
|
{
|
||||||
|
const FHybridAnalyticFixture Fixture = MakeHybridAnalyticFixture(FixtureName, Phase);
|
||||||
|
std::vector<double> McTimes, SnapTimes;
|
||||||
|
FVoxelMeshData McMesh, SnapMesh, RepeatedSnapMesh;
|
||||||
|
for (int32 Repeat = 0; Repeat < 3; ++Repeat)
|
||||||
|
{
|
||||||
|
double ElapsedMs = 0.0;
|
||||||
|
if (!GenerateHybridFixtureMesh(Generator, Fixture, Phase, FIntVector::ZeroValue,
|
||||||
|
1, CHUNK_SIZE, 0, McMesh, &ElapsedMs, OutError)) return false;
|
||||||
|
McTimes.push_back(ElapsedMs);
|
||||||
|
if (!GenerateHybridFixtureMesh(Generator, Fixture, Phase, FIntVector::ZeroValue,
|
||||||
|
1, CHUNK_SIZE, 2, SnapMesh, &ElapsedMs, OutError)) return false;
|
||||||
|
SnapTimes.push_back(ElapsedMs);
|
||||||
|
if (Repeat == 0) RepeatedSnapMesh = SnapMesh;
|
||||||
|
}
|
||||||
|
const bool bExpectedEqual = Fixture.Boxes.empty();
|
||||||
|
const bool bStable = SameHybridMeshArrays(RepeatedSnapMesh, SnapMesh);
|
||||||
|
const bool bMatchesExpected = bExpectedEqual
|
||||||
|
? SameHybridMeshArrays(McMesh, SnapMesh)
|
||||||
|
: !SameHybridMeshArrays(McMesh, SnapMesh);
|
||||||
|
const bool bInvocationMatchesExpected = bExpectedEqual
|
||||||
|
? !SnapMesh.bHybridMesherInvoked : SnapMesh.bHybridMesherInvoked;
|
||||||
|
if (!bStable || !bMatchesExpected || !bInvocationMatchesExpected)
|
||||||
|
{
|
||||||
|
OutError = FString::Printf(
|
||||||
|
TEXT("Production hybrid V2 fixture failed: %s stable=%d expected_mc_identity=%d invoked=%d."),
|
||||||
|
FixtureName, bStable ? 1 : 0, bExpectedEqual ? 1 : 0,
|
||||||
|
SnapMesh.bHybridMesherInvoked ? 1 : 0);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!bExpectedEqual) ++SnapSharpDifferences;
|
||||||
|
std::sort(McTimes.begin(), McTimes.end());
|
||||||
|
std::sort(SnapTimes.begin(), SnapTimes.end());
|
||||||
|
UE_LOG(LogTemp, Display,
|
||||||
|
TEXT("[WorldAssemblerHybridPluginFixtureV2] name=%s lod=0 cells=%d mc_ms=%.3f hybrid_ms=%.3f ratio=%.3f mc_triangles=%d hybrid_triangles=%d exact_repeat=1"),
|
||||||
|
FixtureName, CHUNK_SIZE, McTimes[1], SnapTimes[1],
|
||||||
|
McTimes[1] > 0.0 ? SnapTimes[1] / McTimes[1] : 0.0,
|
||||||
|
McMesh.Triangles.Num() / 3, SnapMesh.Triangles.Num() / 3);
|
||||||
|
}
|
||||||
|
if (SnapSharpDifferences != 4)
|
||||||
|
{
|
||||||
|
OutError = FString::Printf(
|
||||||
|
TEXT("Expected four analytic sharp fixtures to exercise hybrid V2; got %d."),
|
||||||
|
SnapSharpDifferences);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Coarse LOD uses MC regardless of the selected recipe, so its full arrays must match.
|
// Coarse LOD uses MC regardless of the selected recipe, so its full arrays must match.
|
||||||
// Le LOD grossier reste sur MC, meme si la recette hybride est activee.
|
// Le LOD grossier reste sur MC, meme si la recette hybride est activee.
|
||||||
const FHybridAnalyticFixture CoarseFixture = MakeHybridAnalyticFixture(TEXT("doorway"), Phase);
|
const FHybridAnalyticFixture CoarseFixture = MakeHybridAnalyticFixture(TEXT("doorway"), Phase);
|
||||||
@@ -14281,6 +14346,17 @@ bool RunHybridPluginMesherFixtures(UVoxelGenerator* Generator, FString& OutError
|
|||||||
OutError = TEXT("Hybrid altered a coarse LOD mesh; DC must remain LOD0-only.");
|
OutError = TEXT("Hybrid altered a coarse LOD mesh; DC must remain LOD0-only.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (bIncludeV2)
|
||||||
|
{
|
||||||
|
FVoxelMeshData CoarseSnap;
|
||||||
|
if (!GenerateHybridFixtureMesh(Generator, CoarseFixture, Phase, FIntVector::ZeroValue,
|
||||||
|
2, CHUNK_SIZE, 2, CoarseSnap, nullptr, OutError)
|
||||||
|
|| !SameHybridMeshArrays(CoarseMc, CoarseSnap))
|
||||||
|
{
|
||||||
|
OutError = TEXT("Hybrid V2 altered a coarse LOD mesh; snapping must remain LOD0-only.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Independent same-LOD neighbors share the exact sampled contour at their common face.
|
// Independent same-LOD neighbors share the exact sampled contour at their common face.
|
||||||
// Des voisins LOD identique independants doivent partager exactement leur contour commun.
|
// Des voisins LOD identique independants doivent partager exactement leur contour commun.
|
||||||
@@ -14314,6 +14390,24 @@ bool RunHybridPluginMesherFixtures(UVoxelGenerator* Generator, FString& OutError
|
|||||||
UE_LOG(LogTemp, Display,
|
UE_LOG(LogTemp, Display,
|
||||||
TEXT("[WorldAssemblerHybridPluginBorder] same_lod=PASS independent=1 mc_segments=%d hybrid_segments=%d border_fallback_mc_identity=1"),
|
TEXT("[WorldAssemblerHybridPluginBorder] same_lod=PASS independent=1 mc_segments=%d hybrid_segments=%d border_fallback_mc_identity=1"),
|
||||||
static_cast<int32>(McLeftBorder.size()), static_cast<int32>(HybridLeftBorder.size()));
|
static_cast<int32>(McLeftBorder.size()), static_cast<int32>(HybridLeftBorder.size()));
|
||||||
|
if (bIncludeV2)
|
||||||
|
{
|
||||||
|
FVoxelMeshData SnapLeft, SnapRight;
|
||||||
|
if (!GenerateHybridFixtureMesh(Generator, BorderFixture, BorderPhase, FIntVector(0, 0, 0),
|
||||||
|
1, CHUNK_SIZE, 2, SnapLeft, nullptr, OutError)
|
||||||
|
|| !GenerateHybridFixtureMesh(Generator, BorderFixture, BorderPhase, FIntVector(32, 0, 0),
|
||||||
|
1, CHUNK_SIZE, 2, SnapRight, nullptr, OutError)
|
||||||
|
|| ExtractHybridBoundaryContour(SnapLeft, 800.0) != McLeftBorder
|
||||||
|
|| ExtractHybridBoundaryContour(SnapRight, 800.0) != McRightBorder
|
||||||
|
|| ExtractHybridBoundaryContour(SnapLeft, 800.0)
|
||||||
|
!= ExtractHybridBoundaryContour(SnapRight, 800.0))
|
||||||
|
{
|
||||||
|
OutError = TEXT("Hybrid V2 changed an interior-only same-LOD border fixture.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UE_LOG(LogTemp, Display,
|
||||||
|
TEXT("[WorldAssemblerHybridPluginBorderV2] same_lod=PASS independent=1 mc_identity=1"));
|
||||||
|
}
|
||||||
|
|
||||||
// Compare the raw doorway contours at the 2:1 seam over all 125 sub-cell phases.
|
// Compare the raw doorway contours at the 2:1 seam over all 125 sub-cell phases.
|
||||||
// Comparer les contours bruts de la porte sur la couture 2:1 pour 125 phases.
|
// Comparer les contours bruts de la porte sur la couture 2:1 pour 125 phases.
|
||||||
@@ -14339,7 +14433,7 @@ bool RunHybridPluginMesherFixtures(UVoxelGenerator* Generator, FString& OutError
|
|||||||
};
|
};
|
||||||
for (double PhaseX : Phases)
|
for (double PhaseX : Phases)
|
||||||
for (double PhaseY : Phases)
|
for (double PhaseY : Phases)
|
||||||
for (double PhaseZ : Phases)
|
for (double PhaseZ : Phases)
|
||||||
{
|
{
|
||||||
const FVector SweepPhase(PhaseX, PhaseY, PhaseZ);
|
const FVector SweepPhase(PhaseX, PhaseY, PhaseZ);
|
||||||
const FHybridAnalyticFixture Doorway =
|
const FHybridAnalyticFixture Doorway =
|
||||||
@@ -14364,6 +14458,17 @@ bool RunHybridPluginMesherFixtures(UVoxelGenerator* Generator, FString& OutError
|
|||||||
OutError = TEXT("The production doorway border probe did not produce a contour on both LODs.");
|
OutError = TEXT("The production doorway border probe did not produce a contour on both LODs.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (bIncludeV2)
|
||||||
|
{
|
||||||
|
FVoxelMeshData FineSnap;
|
||||||
|
if (!GenerateHybridFixtureMesh(Generator, Doorway, SweepPhase, FIntVector(0, 0, 0),
|
||||||
|
1, CHUNK_SIZE, 2, FineSnap, nullptr, OutError)
|
||||||
|
|| ExtractHybridBoundaryContour(FineSnap, 800.0) != FineContour)
|
||||||
|
{
|
||||||
|
OutError = TEXT("Hybrid V2 changed a raw LOD border contour in the 125-phase doorway sweep.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
int32 OverBudgetProbes = 0;
|
int32 OverBudgetProbes = 0;
|
||||||
const double MismatchCm = HybridContourSetMismatchCm(
|
const double MismatchCm = HybridContourSetMismatchCm(
|
||||||
FineContour, CoarseContour, OverBudgetProbes);
|
FineContour, CoarseContour, OverBudgetProbes);
|
||||||
@@ -14426,7 +14531,8 @@ bool RunCoreWorldActorIntegrationTest(const FExploreArguments& Arguments, FStrin
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
FixtureGenerator->InitializeSettings(AuthoredSettings);
|
FixtureGenerator->InitializeSettings(AuthoredSettings);
|
||||||
if (!RunHybridPluginMesherFixtures(FixtureGenerator, OutError)) return false;
|
if (!RunHybridPluginMesherFixtures(
|
||||||
|
FixtureGenerator, Arguments.bCoreHybridMesherV2, OutError)) return false;
|
||||||
UE_LOG(LogTemp, Display, TEXT("[WorldAssemblerHybridPluginFixture] fixture_only=PASS"));
|
UE_LOG(LogTemp, Display, TEXT("[WorldAssemblerHybridPluginFixture] fixture_only=PASS"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -14728,7 +14834,9 @@ bool RunCoreWorldActorIntegrationTest(const FExploreArguments& Arguments, FStrin
|
|||||||
McOptions.hashDensity = true;
|
McOptions.hashDensity = true;
|
||||||
McOptions.mesherRecipe = VoxelForgeCore::MesherRecipe::marchingCubesV1;
|
McOptions.mesherRecipe = VoxelForgeCore::MesherRecipe::marchingCubesV1;
|
||||||
VoxelForgeCore::TileGenerationOptions HybridOptions = McOptions;
|
VoxelForgeCore::TileGenerationOptions HybridOptions = McOptions;
|
||||||
HybridOptions.mesherRecipe = VoxelForgeCore::MesherRecipe::worldAssemblerHybridV1;
|
HybridOptions.mesherRecipe = Arguments.bCoreHybridMesherV2
|
||||||
|
? VoxelForgeCore::MesherRecipe::worldAssemblerHybridV2
|
||||||
|
: VoxelForgeCore::MesherRecipe::worldAssemblerHybridV1;
|
||||||
const auto McMesh = ReferenceWorld.generateTile(CliffKey, McOptions, CoreError);
|
const auto McMesh = ReferenceWorld.generateTile(CliffKey, McOptions, CoreError);
|
||||||
const auto HybridMesh = ReferenceWorld.generateTile(CliffKey, HybridOptions, CoreError);
|
const auto HybridMesh = ReferenceWorld.generateTile(CliffKey, HybridOptions, CoreError);
|
||||||
if (!McMesh || !HybridMesh || !McMesh->hasMeshHash || !HybridMesh->hasMeshHash)
|
if (!McMesh || !HybridMesh || !McMesh->hasMeshHash || !HybridMesh->hasMeshHash)
|
||||||
@@ -14768,9 +14876,12 @@ bool RunCoreWorldActorIntegrationTest(const FExploreArguments& Arguments, FStrin
|
|||||||
|
|
||||||
VoxelForgeCore::TileGenerationOptions Options;
|
VoxelForgeCore::TileGenerationOptions Options;
|
||||||
Options.hashDensity = true;
|
Options.hashDensity = true;
|
||||||
Options.mesherRecipe = Arguments.bCoreHybridMesher
|
if (Arguments.CoreHybridMesherVersion == 2)
|
||||||
? VoxelForgeCore::MesherRecipe::worldAssemblerHybridV1
|
Options.mesherRecipe = VoxelForgeCore::MesherRecipe::worldAssemblerHybridV2;
|
||||||
: VoxelForgeCore::MesherRecipe::marchingCubesV1;
|
else if (Arguments.CoreHybridMesherVersion == 1)
|
||||||
|
Options.mesherRecipe = VoxelForgeCore::MesherRecipe::worldAssemblerHybridV1;
|
||||||
|
else
|
||||||
|
Options.mesherRecipe = VoxelForgeCore::MesherRecipe::marchingCubesV1;
|
||||||
std::vector<FStandaloneCoreAdapterTileHashes> AggregateRows;
|
std::vector<FStandaloneCoreAdapterTileHashes> AggregateRows;
|
||||||
AggregateRows.reserve(Desired.size());
|
AggregateRows.reserve(Desired.size());
|
||||||
bool bFoundCarveVertex = false;
|
bool bFoundCarveVertex = false;
|
||||||
@@ -15594,9 +15705,11 @@ bool RunCoreWorldActorIntegrationTest(const FExploreArguments& Arguments, FStrin
|
|||||||
Actor->Settings = AuthoredSettings;
|
Actor->Settings = AuthoredSettings;
|
||||||
Actor->bManageAtmosphere = false;
|
Actor->bManageAtmosphere = false;
|
||||||
Actor->bUseVoxelForgeCore = true;
|
Actor->bUseVoxelForgeCore = true;
|
||||||
Actor->CoreMesherRecipe = Arguments.bCoreHybridMesher
|
Actor->CoreMesherRecipe = Arguments.CoreHybridMesherVersion == 2
|
||||||
? EVoxelForgeCoreMesherRecipe::WorldAssemblerHybridV1
|
? EVoxelForgeCoreMesherRecipe::WorldAssemblerHybridV2
|
||||||
: EVoxelForgeCoreMesherRecipe::MarchingCubesV1;
|
: (Arguments.CoreHybridMesherVersion == 1
|
||||||
|
? EVoxelForgeCoreMesherRecipe::WorldAssemblerHybridV1
|
||||||
|
: EVoxelForgeCoreMesherRecipe::MarchingCubesV1);
|
||||||
Actor->CoreClipRadius = 3;
|
Actor->CoreClipRadius = 3;
|
||||||
Actor->CoreMaxClipLevel = 8;
|
Actor->CoreMaxClipLevel = 8;
|
||||||
Actor->bCaptureVoxelForgeCoreHashesForValidation = true;
|
Actor->bCaptureVoxelForgeCoreHashesForValidation = true;
|
||||||
@@ -15611,11 +15724,14 @@ bool RunCoreWorldActorIntegrationTest(const FExploreArguments& Arguments, FStrin
|
|||||||
Actor->SetActorTickEnabled(true);
|
Actor->SetActorTickEnabled(true);
|
||||||
UE_LOG(LogTemp, Display,
|
UE_LOG(LogTemp, Display,
|
||||||
TEXT("[VoxelForgeCoreWorldTest] world_initialized=1 recipe=%s world_begun=%d actor_initialized=%d actor_beginplay=%d"),
|
TEXT("[VoxelForgeCoreWorldTest] world_initialized=1 recipe=%s world_begun=%d actor_initialized=%d actor_beginplay=%d"),
|
||||||
Arguments.bCoreHybridMesher ? TEXT("WorldAssemblerHybridV1") : TEXT("MarchingCubesV1"),
|
Arguments.CoreHybridMesherVersion == 2 ? TEXT("WorldAssemblerHybridV2")
|
||||||
|
: (Arguments.CoreHybridMesherVersion == 1 ? TEXT("WorldAssemblerHybridV1")
|
||||||
|
: TEXT("MarchingCubesV1")),
|
||||||
TestWorld->HasBegunPlay() ? 1 : 0, Actor->IsActorInitialized() ? 1 : 0,
|
TestWorld->HasBegunPlay() ? 1 : 0, Actor->IsActorInitialized() ? 1 : 0,
|
||||||
Actor->HasActorBegunPlay() ? 1 : 0);
|
Actor->HasActorBegunPlay() ? 1 : 0);
|
||||||
if (Arguments.bCoreHybridMesher
|
if (Arguments.bCoreHybridMesher
|
||||||
&& !RunHybridPluginMesherFixtures(Actor->Generator, OutError))
|
&& !RunHybridPluginMesherFixtures(
|
||||||
|
Actor->Generator, Arguments.bCoreHybridMesherV2, OutError))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -16255,9 +16371,14 @@ bool RunCoreWorldActorIntegrationTest(const FExploreArguments& Arguments, FStrin
|
|||||||
&& PawnCapsuleHit.GetComponent() == FixtureComponent;
|
&& PawnCapsuleHit.GetComponent() == FixtureComponent;
|
||||||
const FHitResult* ContactHit = bPawnLineContact ? &PawnHit
|
const FHitResult* ContactHit = bPawnLineContact ? &PawnHit
|
||||||
: (bPawnCapsuleContact ? &PawnCapsuleHit : nullptr);
|
: (bPawnCapsuleContact ? &PawnCapsuleHit : nullptr);
|
||||||
const double ContactErrorCm = ContactHit != nullptr
|
const FVector ContactDeltaCm = ContactHit != nullptr
|
||||||
|
? ContactHit->ImpactPoint - Probe.Expected : FVector::ZeroVector;
|
||||||
|
const double ExpectedPointErrorCm = ContactHit != nullptr
|
||||||
? FVector::Dist(ContactHit->ImpactPoint, Probe.Expected)
|
? FVector::Dist(ContactHit->ImpactPoint, Probe.Expected)
|
||||||
: TNumericLimits<double>::Max();
|
: TNumericLimits<double>::Max();
|
||||||
|
float DensityAtContact = TNumericLimits<float>::Max();
|
||||||
|
const bool bCoreDensityAtContact = ContactHit != nullptr
|
||||||
|
&& Actor->QueryVoxelForgeCoreDensityAt(ContactHit->ImpactPoint, DensityAtContact);
|
||||||
FHitResult ComponentHit;
|
FHitResult ComponentHit;
|
||||||
const bool bComponentHit = IsValid(FixtureComponent)
|
const bool bComponentHit = IsValid(FixtureComponent)
|
||||||
&& FixtureComponent->LineTraceComponent(
|
&& FixtureComponent->LineTraceComponent(
|
||||||
@@ -16278,9 +16399,10 @@ bool RunCoreWorldActorIntegrationTest(const FExploreArguments& Arguments, FStrin
|
|||||||
&& bRenderCollisionBoundsMatch;
|
&& bRenderCollisionBoundsMatch;
|
||||||
// Le trace direct du composant et le BodySetup cuisine doivent suivre la meme section RMC.
|
// Le trace direct du composant et le BodySetup cuisine doivent suivre la meme section RMC.
|
||||||
// The direct component trace and cooked BodySetup must agree with the same RMC render section.
|
// The direct component trace and cooked BodySetup must agree with the same RMC render section.
|
||||||
constexpr double AnalyticContactToleranceCm = CoreVoxelSizeCm;
|
const double AnalyticContactToleranceCm = Arguments.bCoreHybridMesherV2
|
||||||
|
? 1.0 : CoreVoxelSizeCm;
|
||||||
constexpr double ComponentTraceToleranceCm = 2.0;
|
constexpr double ComponentTraceToleranceCm = 2.0;
|
||||||
if (ContactHit == nullptr || ContactErrorCm > AnalyticContactToleranceCm
|
if (ContactHit == nullptr || ExpectedPointErrorCm > AnalyticContactToleranceCm
|
||||||
|| !bVisualHit || VisualContactErrorCm > ComponentTraceToleranceCm)
|
|| !bVisualHit || VisualContactErrorCm > ComponentTraceToleranceCm)
|
||||||
{
|
{
|
||||||
const FTransform ComponentTransform = IsValid(FixtureComponent)
|
const FTransform ComponentTransform = IsValid(FixtureComponent)
|
||||||
@@ -16400,12 +16522,14 @@ bool RunCoreWorldActorIntegrationTest(const FExploreArguments& Arguments, FStrin
|
|||||||
bCoreDensityEnd ? 1 : 0,
|
bCoreDensityEnd ? 1 : 0,
|
||||||
DensityStart, DensityExpected, DensityEnd);
|
DensityStart, DensityExpected, DensityEnd);
|
||||||
HybridCollisionContactFailures += FString::Printf(
|
HybridCollisionContactFailures += FString::Printf(
|
||||||
TEXT("Hybrid cooked Pawn collision contact failed for %s: pawn_hit=%d pawn_capsule_hit=%d capsule_actor_match=%d capsule_component_match=%d component_trace_hit=%d component_trace_error_cm=%.3f bounds_match=%d field_contact_error_cm=%.3f visibility_hit=%d world_static_hit=%d expected=(%.2f,%.2f,%.2f) pawn_impact=(%.2f,%.2f,%.2f) capsule_impact=(%.2f,%.2f,%.2f)."),
|
TEXT("Hybrid cooked Pawn collision contact failed for %s: pawn_hit=%d pawn_capsule_hit=%d capsule_actor_match=%d capsule_component_match=%d component_trace_hit=%d component_trace_error_cm=%.3f bounds_match=%d expected_point_error_cm=%.3f expected_delta_cm=(%.3f,%.3f,%.3f) density_at_contact=%.6f density_query=%d visibility_hit=%d world_static_hit=%d expected=(%.2f,%.2f,%.2f) pawn_impact=(%.2f,%.2f,%.2f) capsule_impact=(%.2f,%.2f,%.2f)."),
|
||||||
*Probe.Name, bPawnHit ? 1 : 0, bPawnCapsuleHit ? 1 : 0,
|
*Probe.Name, bPawnHit ? 1 : 0, bPawnCapsuleHit ? 1 : 0,
|
||||||
bPawnCapsuleHit && PawnCapsuleHit.GetActor() == Actor ? 1 : 0,
|
bPawnCapsuleHit && PawnCapsuleHit.GetActor() == Actor ? 1 : 0,
|
||||||
bPawnCapsuleHit && PawnCapsuleHit.GetComponent() == FixtureComponent ? 1 : 0,
|
bPawnCapsuleHit && PawnCapsuleHit.GetComponent() == FixtureComponent ? 1 : 0,
|
||||||
bComponentHit ? 1 : 0, VisualContactErrorCm,
|
bComponentHit ? 1 : 0, VisualContactErrorCm,
|
||||||
bRenderCollisionBoundsMatch ? 1 : 0, ContactErrorCm,
|
bRenderCollisionBoundsMatch ? 1 : 0, ExpectedPointErrorCm,
|
||||||
|
ContactDeltaCm.X, ContactDeltaCm.Y, ContactDeltaCm.Z,
|
||||||
|
DensityAtContact, bCoreDensityAtContact ? 1 : 0,
|
||||||
bVisibilityHit ? 1 : 0, bWorldStaticHit ? 1 : 0,
|
bVisibilityHit ? 1 : 0, bWorldStaticHit ? 1 : 0,
|
||||||
Probe.Expected.X, Probe.Expected.Y, Probe.Expected.Z,
|
Probe.Expected.X, Probe.Expected.Y, Probe.Expected.Z,
|
||||||
bPawnHit ? PawnHit.ImpactPoint.X : 0.0,
|
bPawnHit ? PawnHit.ImpactPoint.X : 0.0,
|
||||||
@@ -16419,8 +16543,11 @@ bool RunCoreWorldActorIntegrationTest(const FExploreArguments& Arguments, FStrin
|
|||||||
}
|
}
|
||||||
const TCHAR* ContactMethod = bPawnLineContact ? TEXT("PawnLine") : TEXT("PawnCapsule");
|
const TCHAR* ContactMethod = bPawnLineContact ? TEXT("PawnLine") : TEXT("PawnCapsule");
|
||||||
UE_LOG(LogTemp, Display,
|
UE_LOG(LogTemp, Display,
|
||||||
TEXT("[VoxelForgeHybridCollisionContact] fixture=%s method=%s channel=Pawn hit=1 actor_match=1 component_match=1 actor_core_hash_match=1 render_collision_bounds_match=1 component_trace_error_cm=%.3f field_contact_error_cm=%.3f impact=(%.2f,%.2f,%.2f) component_impact=(%.2f,%.2f,%.2f)"),
|
TEXT("[VoxelForgeHybridCollisionContact] fixture=%s method=%s channel=Pawn hit=1 actor_match=1 component_match=1 actor_core_hash_match=1 render_collision_bounds_match=1 component_trace_error_cm=%.3f expected_point_error_cm=%.3f expected_delta_cm=(%.3f,%.3f,%.3f) density_at_contact=%.6f density_query=%d expected=(%.2f,%.2f,%.2f) impact=(%.2f,%.2f,%.2f) component_impact=(%.2f,%.2f,%.2f)"),
|
||||||
*Probe.Name, ContactMethod, VisualContactErrorCm, ContactErrorCm,
|
*Probe.Name, ContactMethod, VisualContactErrorCm, ExpectedPointErrorCm,
|
||||||
|
ContactDeltaCm.X, ContactDeltaCm.Y, ContactDeltaCm.Z,
|
||||||
|
DensityAtContact, bCoreDensityAtContact ? 1 : 0,
|
||||||
|
Probe.Expected.X, Probe.Expected.Y, Probe.Expected.Z,
|
||||||
ContactHit->ImpactPoint.X, ContactHit->ImpactPoint.Y, ContactHit->ImpactPoint.Z,
|
ContactHit->ImpactPoint.X, ContactHit->ImpactPoint.Y, ContactHit->ImpactPoint.Z,
|
||||||
VisualImpact.X, VisualImpact.Y, VisualImpact.Z);
|
VisualImpact.X, VisualImpact.Y, VisualImpact.Z);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,14 +62,14 @@ namespace VoxelForgeCore
|
|||||||
std::uint32_t skirtTriangleCount = 0;
|
std::uint32_t skirtTriangleCount = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Versioned render-mesher choices. marchingCubesV1 preserves the production Core path;
|
// Versioned render-mesher choices. V1 is the original feature-aware DC path. V2 keeps MC
|
||||||
// worldAssemblerHybridV1 applies feature-aware DC only to tagged type-2 plan boxes at LOD0.
|
// topology and snaps eligible LOD0 roots to tagged type-2 box planes.
|
||||||
// Choix versionnes du mailleur. marchingCubesV1 conserve la voie Core actuelle;
|
// Choix versionnes du mailleur. V1 est la voie DC initiale; V2 conserve MC et cale les racines.
|
||||||
// worldAssemblerHybridV1 applique le DC aux boites type 2 balisees, uniquement en LOD0.
|
|
||||||
enum class MesherRecipe : std::uint8_t
|
enum class MesherRecipe : std::uint8_t
|
||||||
{
|
{
|
||||||
marchingCubesV1 = 0,
|
marchingCubesV1 = 0,
|
||||||
worldAssemblerHybridV1 = 1
|
worldAssemblerHybridV1 = 1,
|
||||||
|
worldAssemblerHybridV2 = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SharpFeatureBox
|
struct SharpFeatureBox
|
||||||
|
|||||||
@@ -904,10 +904,11 @@ namespace VoxelForgeCore
|
|||||||
const FVoxelTileKey nativeKey=ToNative(key);
|
const FVoxelTileKey nativeKey=ToNative(key);
|
||||||
const FIntVector origin=nativeKey.OriginVoxels();
|
const FIntVector origin=nativeKey.OriginVoxels();
|
||||||
if(options.mesherRecipe!=MesherRecipe::marchingCubesV1
|
if(options.mesherRecipe!=MesherRecipe::marchingCubesV1
|
||||||
&&options.mesherRecipe!=MesherRecipe::worldAssemblerHybridV1)
|
&&options.mesherRecipe!=MesherRecipe::worldAssemblerHybridV1
|
||||||
|
&&options.mesherRecipe!=MesherRecipe::worldAssemblerHybridV2)
|
||||||
{error="tile mesher recipe version is unsupported";return std::nullopt;}
|
{error="tile mesher recipe version is unsupported";return std::nullopt;}
|
||||||
TArray<FVoxelHybridSharpFeatureBox> sharpFeatures;
|
TArray<FVoxelHybridSharpFeatureBox> sharpFeatures;
|
||||||
if(options.mesherRecipe==MesherRecipe::worldAssemblerHybridV1&&level==0&&impl_->worldAssembly)
|
if(options.mesherRecipe!=MesherRecipe::marchingCubesV1&&level==0&&impl_->worldAssembly)
|
||||||
{
|
{
|
||||||
constexpr std::int64_t SubvoxelsPerVoxel=WorldAssemblySubvoxelsPerVoxel;
|
constexpr std::int64_t SubvoxelsPerVoxel=WorldAssemblySubvoxelsPerVoxel;
|
||||||
const std::array<std::int64_t,3> tileMin={
|
const std::array<std::int64_t,3> tileMin={
|
||||||
@@ -946,7 +947,10 @@ namespace VoxelForgeCore
|
|||||||
// Les pages analytiques omettent le plan natif ; utiliser la base uniquement pour
|
// Les pages analytiques omettent le plan natif ; utiliser la base uniquement pour
|
||||||
// les tuiles balisees afin d'echantillonner le champ correspondant aux tags.
|
// les tuiles balisees afin d'echantillonner le champ correspondant aux tags.
|
||||||
tileShapeContext=impl_->shape.get();
|
tileShapeContext=impl_->shape.get();
|
||||||
mesher.SetHybridSharpFeatures(MoveTemp(sharpFeatures));
|
if(options.mesherRecipe==MesherRecipe::worldAssemblerHybridV2)
|
||||||
|
mesher.SetHybridSharpFeatureSnap(MoveTemp(sharpFeatures));
|
||||||
|
else
|
||||||
|
mesher.SetHybridSharpFeatures(MoveTemp(sharpFeatures));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const FStandaloneShapeWorld& tileShape=*tileShapeContext;
|
const FStandaloneShapeWorld& tileShape=*tileShapeContext;
|
||||||
|
|||||||
@@ -971,3 +971,19 @@ No process crashed, no `0xC0000142` retry occurred, and no new UECC directory ap
|
|||||||
push, or stash.
|
push, or stash.
|
||||||
|
|
||||||
— Luna
|
— Luna
|
||||||
|
|
||||||
|
## Luna, M2 round 4 — exact hybrid roots and sub-1.5× tagged cost
|
||||||
|
|
||||||
|
Hi Claude,
|
||||||
|
|
||||||
|
The contact table’s “field-contact error” name was inaccurate: it was cooked impact point to expected anchor distance. The same five anchors now hit exactly with V2, with 0.000 cm point error and zero Core density at each contact. The old offset came from MC interpolating roots across sub-voxel type-2 box faces; the field applies the solid-box branch only inside the feature. The probes were in the interior LOD0 fixture tile, so they were not LOD or tile-border fallback hits. V2 snaps those eligible roots to the analytic face plane. Render and cooked Chaos bounds match on all five contacts.
|
||||||
|
|
||||||
|
I added `WorldAssemblerHybridV2` without changing V1, Core-off, or MC output. It keeps MC connectivity and only snaps eligible interior LOD0 feature-face roots. Use V2 for the owner preview; V1 is retained unchanged for comparison. On the full BuildHost fixture run the four tagged tiles measured 1.17–1.27× MC; the organic cave measured 0.998×. That meets the 1.5× target.
|
||||||
|
|
||||||
|
The full null-RHI actor run passed in about 11.5 minutes at 3.69 GiB peak sampled private memory. W1/W8/W16 retained the round-6 hashes. The native type-4 SurfaceWorld cliff passed a separate V2/MC bit-identity check. The rebuilt standalone audit passed bounds (298 boxes / 8,046 samples), shelf thickness (29,929 columns, zero sub-voxel runs), and route sweep (530 centers / 143,630 field samples); all three negative controls were detected.
|
||||||
|
|
||||||
|
I also regenerated the five MC doorway failure phases with independently sampled fine/coarse meshes and the normal-extruded skirts enabled. The topology suite still reports 3 open seam edges, 1 nonmanifold edge, and 1 unmatched loop for each. Their raw contour mismatch is at most 20.48 cm. The 576×1,230 CPU-rendered contact sheet shows the seam covered in the static view, with the skirt strips themselves visible around the doorway. This is not a live game-camera or movement test.
|
||||||
|
|
||||||
|
The report has the full metrics, audit logs, skirt captures, source inventory, and failed-run ledger at [WorldAssemblerM2/REPORT.md](../../WorldAssemblerM2/REPORT.md). UBT failed twice while I corrected an undeclared check variable and standalone compatibility indexing, then passed; there was no `0xC0000142` retry, new UECC folder, owner editor/project access, `.uasset` edit, commit, push, or stash. The temporary skirt-export helper was removed; no permanent source file was added.
|
||||||
|
|
||||||
|
— Luna
|
||||||
@@ -257,3 +257,90 @@ BuildHost work. The final passing commandlet and focused checks are described ab
|
|||||||
|
|
||||||
No new UECC folder, process crash, or `0xC0000142` retry occurred in round 3. No owner project/editor was
|
No new UECC folder, process crash, or `0xC0000142` retry occurred in round 3. No owner project/editor was
|
||||||
opened or built; no `.uasset` was edited; no commit, push, or stash was made.
|
opened or built; no `.uasset` was edited; no commit, push, or stash was made.
|
||||||
|
|
||||||
|
## Round-4 exact, low-cost hybrid (2026-10-10)
|
||||||
|
|
||||||
|
### Decision and contact diagnosis
|
||||||
|
|
||||||
|
Added `WorldAssemblerHybridV2` as a separately versioned, opt-in recipe. It keeps MC connectivity and snaps only interior LOD0 MC edge roots that cross a tagged type-2 box face to that face’s exact sub-voxel plane. Stable face keys and axis normals keep shared edge roots deterministic. Tile-border cells and LOD1+ remain MC. V1 code/output, Core-off behavior, and `MarchingCubesV1` remain unchanged; select V2 when previewing the hybrid.
|
||||||
|
|
||||||
|
The previous table’s “field-contact error” label was wrong: it measured Euclidean distance from the cooked Pawn trace hit to a hand-authored expected point, not the signed field residual. The fixture anchors were correct: the same five anchors now produce exact hits with V2. The old offset came from MC interpolating across a type-2 box face between lattice samples. `Heightfield2D::point` applies the box only inside it (`min(base,-depth)`); outside it returns the base field, so the sampled edge root need not lie on the analytic face. The riser’s face happened to align with the lattice. These probes were all interior LOD0 contacts in tile `(1,5,-63)`, which rules out the border/LOD1 fallback. V2 snaps the eligible MC roots directly; its correction does not use a QEF clamp or center penalty.
|
||||||
|
|
||||||
|
The commandlet now logs `expected_point_error_cm`, the hit-to-anchor delta, and `density_at_contact` separately.
|
||||||
|
|
||||||
|
| Cooked Pawn contact | Expected-point error | Core density at hit | Render/cooked bounds |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Corner top | 0.000 cm | 0.000000 | match |
|
||||||
|
| Doorway lintel | 0.000 cm | 0.000000 | match |
|
||||||
|
| Riser face | 0.000 cm | 0.000000 | match |
|
||||||
|
| Ledge top | 0.000 cm | 0.000000 | match |
|
||||||
|
| Ledge underside | 0.000 cm | 0.000000 | match |
|
||||||
|
|
||||||
|
Each trace hit the actor and target RMC component on the Pawn channel; the actor Core hash matched the expected mesh. The full V2 actor run passed all five contacts, the Core-off content gate, and the existing initial, anchor, edit, carve/fill, surface-travel, and surface-strate-travel checks.
|
||||||
|
|
||||||
|
### Tagged-tile cost
|
||||||
|
|
||||||
|
Full actor-run production mesher timings for 32³ LOD0 tiles, measured after field sampling:
|
||||||
|
|
||||||
|
| Fixture | MC during V1 | V1 | V1 / MC | MC during V2 | V2 | V2 / MC |
|
||||||
|
|---|---:|---:|---:|---:|---:|---:|
|
||||||
|
| 90° corner | 2.263 ms | 16.082 ms | 7.106× | 2.204 ms | 2.799 ms | 1.270× |
|
||||||
|
| Doorway | 1.808 ms | 11.416 ms | 6.313× | 1.797 ms | 2.112 ms | 1.175× |
|
||||||
|
| 1 m riser | 1.936 ms | 11.416 ms | 5.898× | 1.922 ms | 2.264 ms | 1.178× |
|
||||||
|
| Cliff ledge | 2.225 ms | 12.418 ms | 5.580× | 2.209 ms | 2.748 ms | 1.244× |
|
||||||
|
| Organic cave | 1.992 ms | 1.990 ms | 0.999× | 2.031 ms | 2.026 ms | 0.998× |
|
||||||
|
|
||||||
|
All four tagged fixtures are under the 1.5× target. V1 remains available for versioned comparison and retains its 5.58–7.11× cost; use V2 for the owner preview. V2 triangle counts match MC on these fixtures, and every fixture repeat was deterministic. The same-LOD independent border check passed; the V2 border mesh matched MC exactly.
|
||||||
|
|
||||||
|
### Final-code audits and identity checks
|
||||||
|
|
||||||
|
The rebuilt standalone audit reran the requested audits with negative controls:
|
||||||
|
|
||||||
|
| Audit | Final result | Negative control |
|
||||||
|
|---|---|---|
|
||||||
|
| Bounds | 298 boxes, 8,046 samples; 0 missed and 0 unknown bounds | Deliberately wrong bound detected |
|
||||||
|
| Shelf thickness | 29,929 columns; minimum 2.000 voxels; 0 sub-voxel runs | Legacy control found 20,963 sub-voxel runs in 19,251 columns |
|
||||||
|
| Route sweep | 33 points, 32 segments, 530 centers and 143,630 field samples; 0 blocked, unsupported, or grade failures | Raised-route control found 530 unsupported centers |
|
||||||
|
|
||||||
|
All three audits passed. The evaluator stayed deterministic at W1/W8/W16 (`c5e0371612e927af` each). The BuildHost actor hash matrix also remained at the round-6 hashes for density `0x8cc18e2981c50c4e`, mesh `0x78e9c8ea42ff2965`, payload `0x380e8e11e76b47ca`, and topology `0x24e40452e99fe482`.
|
||||||
|
|
||||||
|
V2 also passed the native SurfaceWorld cliff check: type-4-only tile `(-22,13,-58)`, 10,231 vertices, 10,360 triangles, hash `0xfc7bd7a3cf997992`, bit-identical to MC. The full actor SurfaceWorld run checked 2,553 desired tiles, 3,438 neighbor faces, 432 LOD transitions, and 1,016 skirt tiles.
|
||||||
|
|
||||||
|
Evidence: [standalone audit log](round4/audit.stdout.log), [focused V2 fixture and 125-phase doorway log](../../../Saved/BuildHost/HostProject/Plugins/VoxelForge/Saved/CoreWorldValidation/Logs/CoreWorldValidation-backup-2026.10.10-08.06.37.log), [full BuildHost actor log](../../../Saved/BuildHost/HostProject/Plugins/VoxelForge/Saved/CoreWorldValidation/Logs/CoreWorldValidation-backup-2026.10.10-08.20.33.log), and [V2 cliff check log](../../../Saved/BuildHost/HostProject/Plugins/VoxelForge/Saved/CoreWorldValidation/Logs/CoreWorldValidation.log).
|
||||||
|
|
||||||
|
### Doorway LOD failures with skirts
|
||||||
|
|
||||||
|
The five MC doorway failures remain topological failures of the standalone stitched-transition candidate. Every row has 3 seam-band boundary edges, 1 nonmanifold edge, and 1 unmatched loop. The raw fine/coarse contour mismatch is 18.57–20.48 cm and the transition-surface residual is 15.00–20.00 cm, below the 50 cm contour budget.
|
||||||
|
|
||||||
|
| Phase `(x,y,z)` m | Raw contour mismatch | Transition residual | Boundary / nonmanifold / unmatched |
|
||||||
|
|---|---:|---:|---:|
|
||||||
|
| `(0,0.15,0.15)` | 20.480 cm | 20.000 cm | 3 / 1 / 1 |
|
||||||
|
| `(0,0.20,0.20)` | 18.570 cm | 15.000 cm | 3 / 1 / 1 |
|
||||||
|
| `(0.05,0.15,0.15)` | 20.480 cm | 20.000 cm | 3 / 1 / 1 |
|
||||||
|
| `(0.05,0.20,0.20)` | 18.570 cm | 15.000 cm | 3 / 1 / 1 |
|
||||||
|
| `(0.10,0.15,0.15)` | 20.480 cm | 20.000 cm | 3 / 1 / 1 |
|
||||||
|
|
||||||
|
I regenerated the five failing phase pairs from independently meshed MC LOD0/LOD1 doorway tiles, then added the plugin’s normal-extruded, double-sided seam skirts at the round-2 comparison depths (1 m fine, 2 m coarse). In the matched CPU orthographic captures the seam opening is covered, but the skirt strips themselves are visible around the doorway. So the topology failures do not appear as open daylight gaps in this view; skirts can still be seen and may pop with camera movement. This is a static software-rendered diagnostic, not a live Unreal camera test.
|
||||||
|
|
||||||
|
Cases and meshes are in [the 750-row doorway sweep](round4/skirt-audit/seams.csv); the downscaled [skirts off/on contact sheet](round4/skirt-audit/captures/doorway_skirts_on_off_contact_sheet.jpg) shows all five failing phases. The production V2 policy still relies on skirts at LOD borders and keeps LOD1+ on MC.
|
||||||
|
|
||||||
|
### Build, source inventory, and run ledger
|
||||||
|
|
||||||
|
BuildHost UBT and the Core link-safety audit passed. The standalone Core/viewer build passed and produced `VoxelForgeM2Round4Audit.exe`; `vcvars64` printed a non-fatal missing-`vswhere.exe` message, and MSVC reported existing narrowing warnings in `VoxelStrateManager.cpp:3974–3975`. No build or test exceeded 15 minutes.
|
||||||
|
|
||||||
|
No permanent new source files were added. Modified implementation files are `Source/VoxelForge/Public/VoxelWorld.h`, `Source/VoxelForge/Private/VoxelWorld.cpp`, `Source/VoxelForge/Public/VoxelMarchingCubesMesher.h`, `Source/VoxelForge/Private/VoxelMarchingCubesMesher.cpp`, `Source/VoxelForge/Private/VoxelHybridSharpMesher.h`, the mirrored three files under `Standalone/Source/VoxelForge`, `Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h`, `Standalone/Core/src/VoxelForgeCore.cpp`, `Source/VoxelForgeEditor/Private/VoxelForgeExploreCommandlet.cpp`, and `Tools/TestVoxelForgeCoreWorldHost.ps1`. `ARCHITECTURE.md` and `CODEMAP.md` were updated. A temporary standalone skirt-export helper was built under `Saved/BuildHost` and removed after capture generation.
|
||||||
|
|
||||||
|
Likely compile touchpoints are the reflected enum in `VoxelWorld.h` (UHT), the VoxelForge runtime module, VoxelForgeCore, the VoxelForgeEditor commandlet, and the standalone `Build.ps1 -Target All` target.
|
||||||
|
|
||||||
|
| Run | Result |
|
||||||
|
|---|---|
|
||||||
|
| UBT attempt 1 | Failed in 50.5 s: `bCanSnapCell` was undeclared; changed the check to the V2 snap flag. |
|
||||||
|
| UBT attempt 2 | Failed in 8.8 s: standalone compatibility vectors do not support `operator[]`; added axis access helpers. |
|
||||||
|
| Final UBT + Core link audit | Passed; 16 parallel actions and Core symbol safety passed. |
|
||||||
|
| V2 fixture-only BuildHost | Passed, including fixture repeats, same-LOD border, and 125 doorway phases; commandlet reported 0 errors. |
|
||||||
|
| Full V2 actor BuildHost | Passed in about 11.5 min; peak sampled private memory 3,966,750,720 bytes (3.69 GiB); 0 engine errors. |
|
||||||
|
| V2 native cliff BuildHost | Passed in about 17 s; peak sampled private memory 2,130,636,800 bytes. |
|
||||||
|
| Standalone all-target build and bound/shelf/route audit | Passed; audit 24.2 s and peak sampled private memory 53,837,824 bytes. |
|
||||||
|
| Doorway skirt audit | Passed in 241.4 s; peak sampled private memory 214,925,312 bytes; CPU-only. |
|
||||||
|
|
||||||
|
No process crashed, no `0xC0000142` retry occurred, and no new `UECC-*` folder appeared. The only crash folder remains the older 2026-09-17 one. No owner project file or `.uasset` was changed, the owner’s editor/project was not opened or built, and no commit, push, or stash was made.
|
||||||
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 78 KiB |
@@ -0,0 +1,4 @@
|
|||||||
|
method,phase_x_m,phase_y_m,phase_z_m,contour_expected,unmatched_probes,contour_mean_m,contour_max_m,boundary_edges,nonmanifold_edges,edges_before,nonmanifold_before,transition_triangles,paired_loops,capped_loops,unmatched_loops,transition_surface_max_m,fine_segments,coarse_segments
|
||||||
|
MC,0.25,0.1,0.1,true,0,0.11871,0.249977,0,0,78,0,234,1,0,0,0.233333,52,26
|
||||||
|
Hybrid,0.25,0.1,0.1,true,0,0.0929318,0.419411,0,0,82,0,246,1,0,0,0.238888,56,26
|
||||||
|
DC,0.25,0.1,0.1,true,0,0.0929318,0.419411,0,0,82,0,246,1,0,0,0.238888,56,26
|
||||||
|
@@ -0,0 +1,751 @@
|
|||||||
|
piece,method,phase_x_m,phase_y_m,phase_z_m,tile_contour_expected,tile_unmatched_probes,tile_edge_mean_m,tile_edge_max_m,tile_boundary_edges,tile_nonmanifold_edges,tile_repair_triangles,tile_repair_max_residual_m,lod01_contour_expected,lod01_unmatched_probes,lod01_edge_mean_m,lod01_edge_max_m,lod01_boundary_edges,lod01_nonmanifold_edges,lod_internal_boundary_edges,lod_internal_nonmanifold_edges,lod_open_edges_before,lod_nonmanifold_before,lod_transition_triangles,lod_paired_loops,lod_capped_loops,lod_unmatched_loops,lod_transition_surface_max_m,lod_raw_contour_max_m,tile_left_segments,tile_right_segments,fine_segments,coarse_segments
|
||||||
|
corner90,MC,0,0,0,true,0,0,0,0,0,0,0,true,0,0.0199543,0.176782,0,0,0,0,88,0,264,1,0,0,0.250006,0.176782,60,60,60,28
|
||||||
|
corner90,Hybrid,0,0,0,true,0,0,0,0,0,0,0,true,0,2.1096e-06,5.3948e-06,0,0,0,0,176,0,528,1,0,0,1.71661e-05,5.3948e-06,120,120,120,56
|
||||||
|
corner90,DC,0,0,0,true,0,0,0,0,0,0,0,true,0,2.1096e-06,5.3948e-06,0,0,0,0,176,0,528,1,0,0,1.71661e-05,5.3948e-06,120,120,120,56
|
||||||
|
corner90,MC,0,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0156998,0.192057,0,0,0,0,92,0,276,1,0,0,0.241666,0.192057,62,62,62,30
|
||||||
|
corner90,Hybrid,0,0,0.05,true,0,0,0,0,0,0,0,true,0,0.00709725,0.0249977,0,0,0,0,184,0,552,1,0,0,0.0262518,0.0249977,124,124,124,60
|
||||||
|
corner90,DC,0,0,0.05,true,0,0,0,0,0,0,0,true,0,0.00709725,0.0249977,0,0,0,0,184,0,552,1,0,0,0.0262518,0.0249977,124,124,124,60
|
||||||
|
corner90,MC,0,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0178897,0.203433,0,0,0,0,92,0,276,1,0,0,0.221428,0.203433,62,62,62,30
|
||||||
|
corner90,Hybrid,0,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0106961,0.0419993,0,0,0,0,184,0,552,1,0,0,0.049001,0.0419993,124,124,124,60
|
||||||
|
corner90,DC,0,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0106961,0.0419993,0,0,0,0,184,0,552,1,0,0,0.049001,0.0419993,124,124,124,60
|
||||||
|
corner90,MC,0,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0175182,0.211993,0,0,0,0,92,0,276,1,0,0,0.19375,0.211993,62,62,62,30
|
||||||
|
corner90,Hybrid,0,0,0.15,true,0,0,0,0,0,0,0,true,0,0.00475148,0.0281219,0,0,0,0,184,0,552,1,0,0,0.0281254,0.0281219,124,124,124,60
|
||||||
|
corner90,DC,0,0,0.15,true,0,0,0,0,0,0,0,true,0,0.00475148,0.0281219,0,0,0,0,184,0,552,1,0,0,0.0281254,0.0281219,124,124,124,60
|
||||||
|
corner90,MC,0,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0153705,0.218522,0,0,0,0,92,0,276,1,0,0,0.166679,0.218522,62,62,62,30
|
||||||
|
corner90,Hybrid,0,0,0.2,true,0,0,0,0,0,0,0,true,0,0.00281727,0.0166664,0,0,0,0,184,0,552,1,0,0,0.0166672,0.0166664,124,124,124,60
|
||||||
|
corner90,DC,0,0,0.2,true,0,0,0,0,0,0,0,true,0,0.00281727,0.0166664,0,0,0,0,184,0,552,1,0,0,0.0166672,0.0166664,124,124,124,60
|
||||||
|
corner90,MC,0,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0102316,0.185821,0,0,0,0,92,0,276,1,0,0,0.225,0.185821,62,62,62,30
|
||||||
|
corner90,Hybrid,0,0.05,0,true,0,0,0,0,0,0,0,true,0,0.00377198,0.022503,0,0,0,0,184,0,552,1,0,0,0.0225021,0.022503,124,124,124,60
|
||||||
|
corner90,DC,0,0.05,0,true,0,0,0,0,0,0,0,true,0,0.00377198,0.022503,0,0,0,0,184,0,552,1,0,0,0.0225021,0.022503,124,124,124,60
|
||||||
|
corner90,MC,0,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0163448,0.176777,0,0,0,0,94,0,288,1,0,0,0.225,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0122571,0.0352838,0,0,0,0,192,0,576,1,0,0,0.0458331,0.0352838,128,128,128,64
|
||||||
|
corner90,DC,0,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0122571,0.0352838,0,0,0,0,192,0,576,1,0,0,0.0458331,0.0352838,128,128,128,64
|
||||||
|
corner90,MC,0,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0186139,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0161941,0.0926836,0,0,0,0,192,0,576,1,0,0,0.0833336,0.0926836,128,128,128,64
|
||||||
|
corner90,DC,0,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0161941,0.0926836,0,0,0,0,192,0,576,1,0,0,0.0833336,0.0926836,128,128,128,64
|
||||||
|
corner90,MC,0,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0185343,0.182204,0,0,0,0,96,0,288,1,0,0,0.175001,0.182204,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0108818,0.0622272,0,0,0,0,192,0,576,1,0,0,0.0666654,0.0622272,128,128,128,64
|
||||||
|
corner90,DC,0,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0108818,0.0622272,0,0,0,0,192,0,576,1,0,0,0.0666654,0.0622272,128,128,128,64
|
||||||
|
corner90,MC,0,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0168895,0.188443,0,0,0,0,96,0,288,1,0,0,0.164287,0.188443,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.00969372,0.0527038,0,0,0,0,192,0,576,1,0,0,0.0458316,0.0527038,128,128,128,64
|
||||||
|
corner90,DC,0,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.00969372,0.0527038,0,0,0,0,192,0,576,1,0,0,0.0458316,0.0527038,128,128,128,64
|
||||||
|
corner90,MC,0,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0108436,0.195213,0,0,0,0,92,0,276,1,0,0,0.199999,0.195213,62,62,62,30
|
||||||
|
corner90,Hybrid,0,0.1,0,true,0,0,0,0,0,0,0,true,0,0.00689352,0.0419998,0,0,0,0,184,0,552,1,0,0,0.0420009,0.0419998,124,124,124,60
|
||||||
|
corner90,DC,0,0.1,0,true,0,0,0,0,0,0,0,true,0,0.00689352,0.0419998,0,0,0,0,184,0,552,1,0,0,0.0420009,0.0419998,124,124,124,60
|
||||||
|
corner90,MC,0,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0169891,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0156368,0.0985491,0,0,0,0,192,0,576,1,0,0,0.1485,0.0985491,128,128,128,64
|
||||||
|
corner90,DC,0,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0156368,0.0985491,0,0,0,0,192,0,576,1,0,0,0.1485,0.0985491,128,128,128,64
|
||||||
|
corner90,MC,0,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.018027,0.176777,0,0,0,0,94,0,288,1,0,0,0.199999,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0205446,0.100146,0,0,0,0,192,0,576,1,0,0,0.0906668,0.100146,128,128,128,64
|
||||||
|
corner90,DC,0,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0205446,0.100146,0,0,0,0,192,0,576,1,0,0,0.0906668,0.100146,128,128,128,64
|
||||||
|
corner90,MC,0,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.017898,0.176533,0,0,0,0,96,0,288,1,0,0,0.175001,0.176533,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.016512,0.103878,0,0,0,0,192,0,576,1,0,0,0.0906668,0.103878,128,128,128,64
|
||||||
|
corner90,DC,0,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.016512,0.103878,0,0,0,0,192,0,576,1,0,0,0.0906668,0.103878,128,128,128,64
|
||||||
|
corner90,MC,0,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0155736,0.169188,0,0,0,0,96,0,288,1,0,0,0.15,0.169188,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0152424,0.0655636,0,0,0,0,192,0,576,1,0,0,0.0860002,0.0655636,128,128,128,64
|
||||||
|
corner90,DC,0,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0152424,0.0655636,0,0,0,0,192,0,576,1,0,0,0.0860002,0.0655636,128,128,128,64
|
||||||
|
corner90,MC,0,0.15,0,true,0,0,0,0,0,0,0,true,0,0.0113465,0.2048,0,0,0,0,92,0,276,1,0,0,0.175001,0.2048,62,62,62,30
|
||||||
|
corner90,Hybrid,0,0.15,0,true,0,0,0,0,0,0,0,true,0,2.6654e-06,1.90735e-05,0,0,0,0,184,0,552,1,0,0,3.29759e-05,1.90735e-05,124,124,124,60
|
||||||
|
corner90,DC,0,0.15,0,true,0,0,0,0,0,0,0,true,0,2.6654e-06,1.90735e-05,0,0,0,0,184,0,552,1,0,0,3.29759e-05,1.90735e-05,124,124,124,60
|
||||||
|
corner90,MC,0,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0176153,0.182204,0,0,0,0,96,0,288,1,0,0,0.175001,0.182204,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0099645,0.0623345,0,0,0,0,192,0,576,1,0,0,0.0687499,0.0623345,128,128,128,64
|
||||||
|
corner90,DC,0,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0099645,0.0623345,0,0,0,0,192,0,576,1,0,0,0.0687499,0.0623345,128,128,128,64
|
||||||
|
corner90,MC,0,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0185544,0.176533,0,0,0,0,96,0,288,1,0,0,0.175001,0.176533,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0144407,0.0995234,0,0,0,0,192,0,576,1,0,0,0.0887757,0.0995234,128,128,128,64
|
||||||
|
corner90,DC,0,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0144407,0.0995234,0,0,0,0,192,0,576,1,0,0,0.0887757,0.0995234,128,128,128,64
|
||||||
|
corner90,MC,0,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0162384,0.176777,0,0,0,0,94,0,288,1,0,0,0.175001,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.00942311,0.0969606,0,0,0,0,192,0,576,1,0,0,0.0883924,0.0969606,128,128,128,64
|
||||||
|
corner90,DC,0,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.00942311,0.0969606,0,0,0,0,192,0,576,1,0,0,0.0883924,0.0969606,128,128,128,64
|
||||||
|
corner90,MC,0,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0139116,0.171888,0,0,0,0,96,0,288,1,0,0,0.15,0.171888,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.00772457,0.061747,0,0,0,0,192,0,576,1,0,0,0.0777203,0.061747,128,128,128,64
|
||||||
|
corner90,DC,0,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.00772457,0.061747,0,0,0,0,192,0,576,1,0,0,0.0777203,0.061747,128,128,128,64
|
||||||
|
corner90,MC,0,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0117132,0.214354,0,0,0,0,92,0,276,1,0,0,0.166677,0.214354,62,62,62,30
|
||||||
|
corner90,Hybrid,0,0.2,0,true,0,0,0,0,0,0,0,true,0,2.8973e-06,3.43323e-05,0,0,0,0,184,0,552,1,0,0,4.64122e-05,3.43323e-05,124,124,124,60
|
||||||
|
corner90,DC,0,0.2,0,true,0,0,0,0,0,0,0,true,0,2.8973e-06,3.43323e-05,0,0,0,0,184,0,552,1,0,0,4.64122e-05,3.43323e-05,124,124,124,60
|
||||||
|
corner90,MC,0,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0182465,0.185696,0,0,0,0,96,0,288,1,0,0,0.164287,0.185696,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.00924494,0.049965,0,0,0,0,192,0,576,1,0,0,0.0473841,0.049965,128,128,128,64
|
||||||
|
corner90,DC,0,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.00924494,0.049965,0,0,0,0,192,0,576,1,0,0,0.0473841,0.049965,128,128,128,64
|
||||||
|
corner90,MC,0,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0181442,0.169188,0,0,0,0,96,0,288,1,0,0,0.15,0.169188,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0147727,0.0659577,0,0,0,0,192,0,576,1,0,0,0.0750004,0.0659577,128,128,128,64
|
||||||
|
corner90,DC,0,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0147727,0.0659577,0,0,0,0,192,0,576,1,0,0,0.0750004,0.0659577,128,128,128,64
|
||||||
|
corner90,MC,0,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0158199,0.171888,0,0,0,0,96,0,288,1,0,0,0.15,0.171888,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.00902165,0.0625193,0,0,0,0,192,0,576,1,0,0,0.0749996,0.0625193,128,128,128,64
|
||||||
|
corner90,DC,0,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.00902165,0.0625193,0,0,0,0,192,0,576,1,0,0,0.0749996,0.0625193,128,128,128,64
|
||||||
|
corner90,MC,0,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.011995,0.176777,0,0,0,0,94,0,288,1,0,0,0.15,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.00423718,0.0372958,0,0,0,0,192,0,576,1,0,0,0.04695,0.0372958,128,128,128,64
|
||||||
|
corner90,DC,0,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.00423718,0.0372958,0,0,0,0,192,0,576,1,0,0,0.04695,0.0372958,128,128,128,64
|
||||||
|
corner90,MC,0.05,0,0,true,0,0,0,0,0,0,0,true,0,0.0199577,0.176787,0,0,0,0,88,0,264,1,0,0,0.250006,0.176787,60,60,60,28
|
||||||
|
corner90,Hybrid,0.05,0,0,true,0,0,0,0,0,0,0,true,125,5.73164e-06,1.61844e-05,119,1,0,0,175,1,168,0,1,4,1.24975,1.61844e-05,120,120,119,56
|
||||||
|
corner90,DC,0.05,0,0,true,0,0,0,0,0,0,0,true,125,5.73164e-06,1.61844e-05,119,1,0,0,175,1,168,0,1,4,1.24975,1.61844e-05,120,120,119,56
|
||||||
|
corner90,MC,0.05,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0178985,0.195222,0,0,0,0,92,0,276,1,0,0,0.225,0.195222,62,62,62,30
|
||||||
|
corner90,Hybrid,0.05,0,0.05,true,0,0,0,0,0,0,0,true,0,0.00680108,0.0388908,0,0,0,0,184,0,552,1,0,0,0.0888886,0.0388908,124,124,124,60
|
||||||
|
corner90,DC,0.05,0,0.05,true,0,0,0,0,0,0,0,true,0,0.00680108,0.0388908,0,0,0,0,184,0,552,1,0,0,0.0888886,0.0388908,124,124,124,60
|
||||||
|
corner90,MC,0.05,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0210403,0.208016,0,0,0,0,92,0,276,1,0,0,0.2,0.208016,62,62,62,30
|
||||||
|
corner90,Hybrid,0.05,0,0.1,true,0,0,0,0,0,0,0,true,0,0.00827383,0.0518532,0,0,0,0,184,0,552,1,0,0,0.0518533,0.0518532,124,124,124,60
|
||||||
|
corner90,DC,0.05,0,0.1,true,0,0,0,0,0,0,0,true,0,0.00827383,0.0518532,0,0,0,0,184,0,552,1,0,0,0.0518533,0.0518532,124,124,124,60
|
||||||
|
corner90,MC,0.05,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0210644,0.217058,0,0,0,0,92,0,276,1,0,0,0.2,0.217058,62,62,62,30
|
||||||
|
corner90,Hybrid,0.05,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0076251,0.0499992,0,0,0,0,184,0,552,1,0,0,0.0500012,0.0499992,124,124,124,60
|
||||||
|
corner90,DC,0.05,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0076251,0.0499992,0,0,0,0,184,0,552,1,0,0,0.0500012,0.0499992,124,124,124,60
|
||||||
|
corner90,MC,0.05,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0190446,0.223594,0,0,0,0,92,0,276,1,0,0,0.175,0.223594,62,62,62,30
|
||||||
|
corner90,Hybrid,0.05,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0035718,0.0257097,0,0,0,0,184,0,552,1,0,0,0.0388899,0.0257097,124,124,124,60
|
||||||
|
corner90,DC,0.05,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0035718,0.0257097,0,0,0,0,184,0,552,1,0,0,0.0388899,0.0257097,124,124,124,60
|
||||||
|
corner90,MC,0.05,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0102335,0.185821,0,0,0,0,92,0,276,1,0,0,0.225,0.185821,62,62,62,30
|
||||||
|
corner90,Hybrid,0.05,0.05,0,true,0,0,0,0,0,0,0,true,0,0.000924738,0.0057975,0,0,0,0,184,0,552,1,0,0,0.146514,0.0057975,124,124,124,60
|
||||||
|
corner90,DC,0.05,0.05,0,true,0,0,0,0,0,0,0,true,0,0.000924738,0.0057975,0,0,0,0,184,0,552,1,0,0,0.146514,0.0057975,124,124,124,60
|
||||||
|
corner90,MC,0.05,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0184415,0.176777,0,0,0,0,94,0,288,1,0,0,0.225,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.00846187,0.0388908,0,0,0,0,192,0,576,1,0,0,0.0458334,0.0388908,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.00846187,0.0388908,0,0,0,0,192,0,576,1,0,0,0.0458334,0.0388908,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0216202,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0117542,0.0926836,0,0,0,0,192,0,576,1,0,0,0.0833336,0.0926836,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0117542,0.0926836,0,0,0,0,192,0,576,1,0,0,0.0833336,0.0926836,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0219208,0.182204,0,0,0,0,96,0,288,1,0,0,0.175001,0.182204,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0104884,0.0622272,0,0,0,0,192,0,576,1,0,0,0.0666654,0.0622272,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0104884,0.0622272,0,0,0,0,192,0,576,1,0,0,0.0666654,0.0622272,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0204009,0.191566,0,0,0,0,96,0,288,1,0,0,0.164287,0.191566,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0073201,0.0499222,0,0,0,0,192,0,576,1,0,0,0.0458316,0.0499222,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0073201,0.0499222,0,0,0,0,192,0,576,1,0,0,0.0458316,0.0499222,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0108456,0.195213,0,0,0,0,92,0,276,1,0,0,0.199999,0.195213,62,62,62,30
|
||||||
|
corner90,Hybrid,0.05,0.1,0,true,0,0,0,0,0,0,0,true,0,4.80489e-06,2.38314e-05,0,0,0,0,184,0,552,1,0,0,4.78956e-05,2.38314e-05,124,124,124,60
|
||||||
|
corner90,DC,0.05,0.1,0,true,0,0,0,0,0,0,0,true,0,4.80489e-06,2.38314e-05,0,0,0,0,184,0,552,1,0,0,4.78956e-05,2.38314e-05,124,124,124,60
|
||||||
|
corner90,MC,0.05,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0190766,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0093761,0.0997102,0,0,0,0,192,0,576,1,0,0,0.0984132,0.0997102,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0093761,0.0997102,0,0,0,0,192,0,576,1,0,0,0.0984132,0.0997102,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0210137,0.176777,0,0,0,0,94,0,288,1,0,0,0.199999,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.011699,0.103991,0,0,0,0,192,0,576,1,0,0,0.0888891,0.103991,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.011699,0.103991,0,0,0,0,192,0,576,1,0,0,0.0888891,0.103991,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0212599,0.176533,0,0,0,0,96,0,288,1,0,0,0.175001,0.176533,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0127781,0.112538,0,0,0,0,192,0,576,1,0,0,0.0888891,0.112538,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0127781,0.112538,0,0,0,0,192,0,576,1,0,0,0.0888891,0.112538,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0190597,0.169188,0,0,0,0,96,0,288,1,0,0,0.15,0.169188,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.00965018,0.0729773,0,0,0,0,192,0,576,1,0,0,0.083867,0.0729773,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.00965018,0.0729773,0,0,0,0,192,0,576,1,0,0,0.083867,0.0729773,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.15,0,true,0,0,0,0,0,0,0,true,0,0.0113485,0.2048,0,0,0,0,92,0,276,1,0,0,0.175001,0.2048,62,62,62,30
|
||||||
|
corner90,Hybrid,0.05,0.15,0,true,0,0,0,0,0,0,0,true,0,4.51797e-06,1.90735e-05,0,0,0,0,184,0,552,1,0,0,3.35987e-05,1.90735e-05,124,124,124,60
|
||||||
|
corner90,DC,0.05,0.15,0,true,0,0,0,0,0,0,0,true,0,4.51797e-06,1.90735e-05,0,0,0,0,184,0,552,1,0,0,3.35987e-05,1.90735e-05,124,124,124,60
|
||||||
|
corner90,MC,0.05,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0196989,0.182204,0,0,0,0,96,0,288,1,0,0,0.175001,0.182204,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00938784,0.0623782,0,0,0,0,192,0,576,1,0,0,0.0699997,0.0623782,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00938784,0.0623782,0,0,0,0,192,0,576,1,0,0,0.0699997,0.0623782,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0215318,0.176533,0,0,0,0,96,0,288,1,0,0,0.175001,0.176533,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0124398,0.0996569,0,0,0,0,192,0,576,1,0,0,0.091112,0.0996569,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0124398,0.0996569,0,0,0,0,192,0,576,1,0,0,0.091112,0.0996569,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0195891,0.176777,0,0,0,0,94,0,288,1,0,0,0.175001,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0119981,0.0975273,0,0,0,0,192,0,576,1,0,0,0.0909525,0.0975273,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0119981,0.0975273,0,0,0,0,192,0,576,1,0,0,0.0909525,0.0975273,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0173873,0.171888,0,0,0,0,96,0,288,1,0,0,0.15,0.171888,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.00818702,0.061747,0,0,0,0,192,0,576,1,0,0,0.0796417,0.061747,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.00818702,0.061747,0,0,0,0,192,0,576,1,0,0,0.0796417,0.061747,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0117151,0.214354,0,0,0,0,92,0,276,1,0,0,0.166677,0.214354,62,62,62,30
|
||||||
|
corner90,Hybrid,0.05,0.2,0,true,0,0,0,0,0,0,0,true,0,4.79236e-06,3.43323e-05,0,0,0,0,184,0,552,1,0,0,4.64122e-05,3.43323e-05,124,124,124,60
|
||||||
|
corner90,DC,0.05,0.2,0,true,0,0,0,0,0,0,0,true,0,4.79236e-06,3.43323e-05,0,0,0,0,184,0,552,1,0,0,4.64122e-05,3.43323e-05,124,124,124,60
|
||||||
|
corner90,MC,0.05,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0203281,0.185696,0,0,0,0,96,0,288,1,0,0,0.164287,0.185696,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.00923257,0.04998,0,0,0,0,192,0,576,1,0,0,0.0481465,0.04998,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.00923257,0.04998,0,0,0,0,192,0,576,1,0,0,0.0481465,0.04998,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0211167,0.169188,0,0,0,0,96,0,288,1,0,0,0.15,0.169188,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0125863,0.0661611,0,0,0,0,192,0,576,1,0,0,0.0750004,0.0661611,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0125863,0.0661611,0,0,0,0,192,0,576,1,0,0,0.0750004,0.0661611,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0191646,0.171888,0,0,0,0,96,0,288,1,0,0,0.15,0.171888,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0116642,0.0630549,0,0,0,0,192,0,576,1,0,0,0.0749996,0.0630549,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0116642,0.0630549,0,0,0,0,192,0,576,1,0,0,0.0749996,0.0630549,128,128,128,64
|
||||||
|
corner90,MC,0.05,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0154657,0.176777,0,0,0,0,94,0,288,1,0,0,0.15,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.05,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.00463453,0.0318933,0,0,0,0,190,0,576,1,0,0,0.048148,0.0318933,128,128,128,64
|
||||||
|
corner90,DC,0.05,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.00463453,0.0318933,0,0,0,0,190,0,576,1,0,0,0.048148,0.0318933,128,128,128,64
|
||||||
|
corner90,MC,0.1,0,0,true,0,0,0,0,0,0,0,true,0,0.0199593,0.17679,0,0,0,0,88,0,264,1,0,0,0.250006,0.17679,60,60,60,28
|
||||||
|
corner90,Hybrid,0.1,0,0,true,0,0,0,0,0,0,0,true,0,8.34601e-06,2.15792e-05,0,0,0,0,175,0,525,1,0,0,3.00407e-05,2.15792e-05,119,119,119,56
|
||||||
|
corner90,DC,0.1,0,0,true,0,0,0,0,0,0,0,true,0,8.34601e-06,2.15792e-05,0,0,0,0,175,0,525,1,0,0,3.00407e-05,2.15792e-05,119,119,119,56
|
||||||
|
corner90,MC,0.1,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0194454,0.200007,0,0,0,0,92,0,276,1,0,0,0.225,0.200007,62,62,62,30
|
||||||
|
corner90,Hybrid,0.1,0,0.05,true,0,0,0,0,0,0,0,true,0,0.00818621,0.0518456,0,0,0,0,184,0,552,1,0,0,0.08125,0.0518456,124,124,124,60
|
||||||
|
corner90,DC,0.1,0,0.05,true,0,0,0,0,0,0,0,true,0,0.00818621,0.0518456,0,0,0,0,184,0,552,1,0,0,0.08125,0.0518456,124,124,124,60
|
||||||
|
corner90,MC,0.1,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0254539,0.21438,0,0,0,0,92,0,276,1,0,0,0.199999,0.21438,62,62,62,30
|
||||||
|
corner90,Hybrid,0.1,0,0.1,true,0,0,0,0,0,0,0,true,129,0.0121268,0.0812531,123,1,0,0,183,1,180,0,1,4,1.24873,0.0812531,124,124,123,60
|
||||||
|
corner90,DC,0.1,0,0.1,true,0,0,0,0,0,0,0,true,129,0.0121268,0.0812531,123,1,0,0,183,1,180,0,1,4,1.24873,0.0812531,124,124,123,60
|
||||||
|
corner90,MC,0.1,0,0.15,true,0,0,0,0,0,0,0,true,0,0.025793,0.223607,0,0,0,0,92,0,276,1,0,0,0.175001,0.223607,62,62,62,30
|
||||||
|
corner90,Hybrid,0.1,0,0.15,true,0,0,0,0,0,0,0,true,129,0.0115254,0.0812492,123,1,0,0,183,1,180,0,1,4,1.24869,0.0812492,124,124,123,60
|
||||||
|
corner90,DC,0.1,0,0.15,true,0,0,0,0,0,0,0,true,129,0.0115254,0.0812492,123,1,0,0,183,1,180,0,1,4,1.24869,0.0812492,124,124,123,60
|
||||||
|
corner90,MC,0.1,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0263136,0.229778,0,0,0,0,92,0,276,1,0,0,0.166677,0.229778,62,62,62,30
|
||||||
|
corner90,Hybrid,0.1,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0097034,0.0508919,0,0,0,0,184,0,552,1,0,0,0.0696427,0.0508919,124,124,124,60
|
||||||
|
corner90,DC,0.1,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0097034,0.0508919,0,0,0,0,184,0,552,1,0,0,0.0696427,0.0508919,124,124,124,60
|
||||||
|
corner90,MC,0.1,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0102344,0.185821,0,0,0,0,92,0,276,1,0,0,0.225,0.185821,62,62,62,30
|
||||||
|
corner90,Hybrid,0.1,0.05,0,true,0,0,0,0,0,0,0,true,0,0.000613621,0.00396764,0,0,0,0,184,0,552,1,0,0,0.15,0.00396764,124,124,124,60
|
||||||
|
corner90,DC,0.1,0.05,0,true,0,0,0,0,0,0,0,true,0,0.000613621,0.00396764,0,0,0,0,184,0,552,1,0,0,0.15,0.00396764,124,124,124,60
|
||||||
|
corner90,MC,0.1,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0198535,0.176777,0,0,0,0,94,0,288,1,0,0,0.225,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.00936698,0.0518456,0,0,0,0,192,0,576,1,0,0,0.060938,0.0518456,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.00936698,0.0518456,0,0,0,0,192,0,576,1,0,0,0.060938,0.0518456,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0258209,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0151091,0.0926836,0,0,0,0,192,0,576,1,0,0,0.0833336,0.0926836,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0151091,0.0926836,0,0,0,0,192,0,576,1,0,0,0.0833336,0.0926836,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0264243,0.182204,0,0,0,0,96,0,288,1,0,0,0.175001,0.182204,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0142876,0.0812492,0,0,0,0,192,0,576,1,0,0,0.0812502,0.0812492,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0142876,0.0812492,0,0,0,0,192,0,576,1,0,0,0.0812502,0.0812492,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0273403,0.194972,0,0,0,0,96,0,288,1,0,0,0.164287,0.194972,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0130228,0.0573779,0,0,0,0,192,0,576,1,0,0,0.0696427,0.0573779,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0130228,0.0573779,0,0,0,0,192,0,576,1,0,0,0.0696427,0.0573779,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0108464,0.195213,0,0,0,0,92,0,276,1,0,0,0.199999,0.195213,62,62,62,30
|
||||||
|
corner90,Hybrid,0.1,0.1,0,true,0,0,0,0,0,0,0,true,0,6.13491e-06,2.74658e-05,0,0,0,0,184,0,552,1,0,0,4.84173e-05,2.74658e-05,124,124,124,60
|
||||||
|
corner90,DC,0.1,0.1,0,true,0,0,0,0,0,0,0,true,0,6.13491e-06,2.74658e-05,0,0,0,0,184,0,552,1,0,0,4.84173e-05,2.74658e-05,124,124,124,60
|
||||||
|
corner90,MC,0.1,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0204629,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0109245,0.104064,0,0,0,0,192,0,576,1,0,0,0.0926286,0.104064,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0109245,0.104064,0,0,0,0,192,0,576,1,0,0,0.0926286,0.104064,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.025183,0.176777,0,0,0,0,94,0,288,1,0,0,0.199999,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0155868,0.115524,0,0,0,0,192,0,576,1,0,0,0.0884617,0.115524,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0155868,0.115524,0,0,0,0,192,0,576,1,0,0,0.0884617,0.115524,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0257275,0.176533,0,0,0,0,96,0,288,1,0,0,0.175001,0.176533,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0169393,0.129857,0,0,0,0,192,0,576,1,0,0,0.0884617,0.129857,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0169393,0.129857,0,0,0,0,192,0,576,1,0,0,0.0884617,0.129857,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0259564,0.169188,0,0,0,0,96,0,288,1,0,0,0.15,0.169188,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0153595,0.085343,0,0,0,0,192,0,576,1,0,0,0.0884617,0.085343,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0153595,0.085343,0,0,0,0,192,0,576,1,0,0,0.0884617,0.085343,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.15,0,true,0,0,0,0,0,0,0,true,0,0.0113494,0.2048,0,0,0,0,92,0,276,1,0,0,0.175001,0.2048,62,62,62,30
|
||||||
|
corner90,Hybrid,0.1,0.15,0,true,0,0,0,0,0,0,0,true,0,6.09469e-06,2.28882e-05,0,0,0,0,184,0,552,1,0,0,3.43323e-05,2.28882e-05,124,124,124,60
|
||||||
|
corner90,DC,0.1,0.15,0,true,0,0,0,0,0,0,0,true,0,6.09469e-06,2.28882e-05,0,0,0,0,184,0,552,1,0,0,3.43323e-05,2.28882e-05,124,124,124,60
|
||||||
|
corner90,MC,0.1,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0210764,0.182204,0,0,0,0,96,0,288,1,0,0,0.175001,0.182204,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0106545,0.0624315,0,0,0,0,192,0,576,1,0,0,0.0714845,0.0624315,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0106545,0.0624315,0,0,0,0,192,0,576,1,0,0,0.0714845,0.0624315,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0256855,0.176533,0,0,0,0,96,0,288,1,0,0,0.175001,0.176533,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0158429,0.0998075,0,0,0,0,192,0,576,1,0,0,0.0937503,0.0998075,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0158429,0.0998075,0,0,0,0,192,0,576,1,0,0,0.0937503,0.0998075,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.02404,0.176777,0,0,0,0,94,0,288,1,0,0,0.175001,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0156568,0.0982439,0,0,0,0,190,0,576,1,0,0,0.0937496,0.0982439,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0156568,0.0982439,0,0,0,0,190,0,576,1,0,0,0.0937496,0.0982439,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0242651,0.171888,0,0,0,0,96,0,288,1,0,0,0.15,0.171888,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0134939,0.061747,0,0,0,0,192,0,576,1,0,0,0.0803564,0.061747,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0134939,0.061747,0,0,0,0,192,0,576,1,0,0,0.0803564,0.061747,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.2,0,true,0,0,0,0,0,0,0,true,0,0.014962,0.214354,0,0,0,0,92,0,276,1,0,0,0.166677,0.214354,62,62,62,30
|
||||||
|
corner90,Hybrid,0.1,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00313545,0.0179901,0,0,0,0,184,0,552,1,0,0,0.0270821,0.0179901,124,124,124,60
|
||||||
|
corner90,DC,0.1,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00313545,0.0179901,0,0,0,0,184,0,552,1,0,0,0.0270821,0.0179901,124,124,124,60
|
||||||
|
corner90,MC,0.1,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0253647,0.185696,0,0,0,0,96,0,288,1,0,0,0.164287,0.185696,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0139314,0.0638069,0,0,0,0,192,0,576,1,0,0,0.0687496,0.0638069,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0139314,0.0638069,0,0,0,0,192,0,576,1,0,0,0.0687496,0.0638069,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0292809,0.169188,0,0,0,0,96,0,288,1,0,0,0.15,0.169188,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0194333,0.0948813,0,0,0,0,192,0,576,1,0,0,0.0906258,0.0948813,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0194333,0.0948813,0,0,0,0,192,0,576,1,0,0,0.0906258,0.0948813,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0277084,0.171888,0,0,0,0,96,0,288,1,0,0,0.15,0.171888,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0183494,0.093008,0,0,0,0,192,0,576,1,0,0,0.0902903,0.093008,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0183494,0.093008,0,0,0,0,192,0,576,1,0,0,0.0902903,0.093008,128,128,128,64
|
||||||
|
corner90,MC,0.1,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0277604,0.176777,0,0,0,0,96,0,288,1,0,0,0.15,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.1,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0153473,0.0613098,0,0,0,0,192,0,576,1,0,0,0.0774543,0.0613098,128,128,128,64
|
||||||
|
corner90,DC,0.1,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0153473,0.0613098,0,0,0,0,192,0,576,1,0,0,0.0774543,0.0613098,128,128,128,64
|
||||||
|
corner90,MC,0.15,0,0,true,0,0,0,0,0,0,0,true,0,0.0199608,0.176793,0,0,0,0,88,0,264,1,0,0,0.250006,0.176793,60,60,60,28
|
||||||
|
corner90,Hybrid,0.15,0,0,true,0,0,0,0,0,0,0,true,0,1.00888e-05,3.23688e-05,0,0,0,0,176,0,528,1,0,0,4.41416e-05,3.23688e-05,120,120,120,56
|
||||||
|
corner90,DC,0.15,0,0,true,0,0,0,0,0,0,0,true,0,1.00888e-05,3.23688e-05,0,0,0,0,176,0,528,1,0,0,4.41416e-05,3.23688e-05,120,120,120,56
|
||||||
|
corner90,MC,0.15,0,0.05,true,0,0,0,0,0,0,0,true,0,0.022019,0.208022,0,0,0,0,92,0,276,1,0,0,0.225,0.208022,62,62,62,30
|
||||||
|
corner90,Hybrid,0.15,0,0.05,true,0,0,0,0,0,0,0,true,129,0.00343391,0.0259247,123,1,0,0,178,1,165,0,1,4,1.20196,0.0259247,124,124,123,55
|
||||||
|
corner90,DC,0.15,0,0.05,true,0,0,0,0,0,0,0,true,129,0.00343391,0.0259247,123,1,0,0,178,1,165,0,1,4,1.20196,0.0259247,124,124,123,55
|
||||||
|
corner90,MC,0.15,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0285266,0.223613,0,0,0,0,92,0,276,1,0,0,0.199999,0.223613,62,62,62,30
|
||||||
|
corner90,Hybrid,0.15,0,0.1,true,0,0,0,0,0,0,0,true,129,0.00295384,0.0194473,123,1,0,0,178,1,165,0,1,4,1.2023,0.0194473,124,124,123,55
|
||||||
|
corner90,DC,0.15,0,0.1,true,0,0,0,0,0,0,0,true,129,0.00295384,0.0194473,123,1,0,0,178,1,165,0,1,4,1.2023,0.0194473,124,124,123,55
|
||||||
|
corner90,MC,0.15,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0339778,0.232124,0,0,0,0,92,0,276,1,0,0,0.175001,0.232124,62,62,62,30
|
||||||
|
corner90,Hybrid,0.15,0,0.15,true,0,0,0,0,0,0,0,true,129,0.00259377,0.0149994,123,1,0,0,178,1,165,0,1,4,1.20206,0.0149994,124,124,123,55
|
||||||
|
corner90,DC,0.15,0,0.15,true,0,0,0,0,0,0,0,true,129,0.00259377,0.0149994,123,1,0,0,178,1,165,0,1,4,1.20206,0.0149994,124,124,123,55
|
||||||
|
corner90,MC,0.15,0,0.2,true,0,0,0,0,0,0,0,true,0,0.035024,0.237168,0,0,0,0,92,0,276,1,0,0,0.166677,0.237168,62,62,62,30
|
||||||
|
corner90,Hybrid,0.15,0,0.2,true,0,0,0,0,0,0,0,true,129,0.00543003,0.0383606,123,1,0,0,178,1,165,0,1,4,1.20226,0.0383606,124,124,123,55
|
||||||
|
corner90,DC,0.15,0,0.2,true,0,0,0,0,0,0,0,true,129,0.00543003,0.0383606,123,1,0,0,178,1,165,0,1,4,1.20226,0.0383606,124,124,123,55
|
||||||
|
corner90,MC,0.15,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0102351,0.185821,0,0,0,0,92,0,276,1,0,0,0.225,0.185821,62,62,62,30
|
||||||
|
corner90,Hybrid,0.15,0.05,0,true,0,0,0,0,0,0,0,true,0,8.32325e-06,4.95911e-05,0,0,0,0,184,0,552,1,0,0,9.71013e-05,4.95911e-05,124,124,124,60
|
||||||
|
corner90,DC,0.15,0.05,0,true,0,0,0,0,0,0,0,true,0,8.32325e-06,4.95911e-05,0,0,0,0,184,0,552,1,0,0,9.71013e-05,4.95911e-05,124,124,124,60
|
||||||
|
corner90,MC,0.15,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0221875,0.176777,0,0,0,0,94,0,288,1,0,0,0.225,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.00468502,0.0273087,0,0,0,0,186,0,558,1,0,0,0.0458331,0.0273087,128,128,128,58
|
||||||
|
corner90,DC,0.15,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.00468502,0.0273087,0,0,0,0,186,0,558,1,0,0,0.0458331,0.0273087,128,128,128,58
|
||||||
|
corner90,MC,0.15,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0286301,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.00609291,0.0926843,0,0,0,0,183,0,549,1,0,0,0.0833336,0.0926843,128,128,128,55
|
||||||
|
corner90,DC,0.15,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.00609291,0.0926843,0,0,0,0,183,0,549,1,0,0,0.0833336,0.0926843,128,128,128,55
|
||||||
|
corner90,MC,0.15,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0341663,0.185426,0,0,0,0,96,0,288,1,0,0,0.175001,0.185426,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.00576099,0.0622272,0,0,0,0,186,0,558,1,0,0,0.0666654,0.0622272,128,128,128,58
|
||||||
|
corner90,DC,0.15,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.00576099,0.0622272,0,0,0,0,186,0,558,1,0,0,0.0666654,0.0622272,128,128,128,58
|
||||||
|
corner90,MC,0.15,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0356041,0.198246,0,0,0,0,96,0,288,1,0,0,0.164287,0.198246,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.00850703,0.0499222,0,0,0,0,186,0,558,1,0,0,0.0654968,0.0499222,128,128,128,58
|
||||||
|
corner90,DC,0.15,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.00850703,0.0499222,0,0,0,0,186,0,558,1,0,0,0.0654968,0.0499222,128,128,128,58
|
||||||
|
corner90,MC,0.15,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0108471,0.195213,0,0,0,0,92,0,276,1,0,0,0.199999,0.195213,62,62,62,30
|
||||||
|
corner90,Hybrid,0.15,0.1,0,true,0,0,0,0,0,0,0,true,0,6.36917e-06,2.37465e-05,0,0,0,0,184,0,552,1,0,0,4.95911e-05,2.37465e-05,124,124,124,60
|
||||||
|
corner90,DC,0.15,0.1,0,true,0,0,0,0,0,0,0,true,0,6.36917e-06,2.37465e-05,0,0,0,0,184,0,552,1,0,0,4.95911e-05,2.37465e-05,124,124,124,60
|
||||||
|
corner90,MC,0.15,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0227557,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0068061,0.0926843,0,0,0,0,185,0,555,1,0,0,0.0833336,0.0926843,128,128,128,57
|
||||||
|
corner90,DC,0.15,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0068061,0.0926843,0,0,0,0,185,0,555,1,0,0,0.0833336,0.0926843,128,128,128,57
|
||||||
|
corner90,MC,0.15,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0279228,0.176777,0,0,0,0,94,0,288,1,0,0,0.199999,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.00658921,0.0939132,0,0,0,0,180,0,546,1,0,0,0.0833336,0.0939132,128,128,128,54
|
||||||
|
corner90,DC,0.15,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.00658921,0.0939132,0,0,0,0,180,0,546,1,0,0,0.0833336,0.0939132,128,128,128,54
|
||||||
|
corner90,MC,0.15,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0334271,0.176533,0,0,0,0,96,0,288,1,0,0,0.175001,0.176533,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.00685474,0.0988957,0,0,0,0,185,0,555,1,0,0,0.0850004,0.0988957,128,128,128,57
|
||||||
|
corner90,DC,0.15,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.00685474,0.0988957,0,0,0,0,185,0,555,1,0,0,0.0850004,0.0988957,128,128,128,57
|
||||||
|
corner90,MC,0.15,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0341792,0.169188,0,0,0,0,96,0,288,1,0,0,0.15,0.169188,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.010089,0.0655636,0,0,0,0,185,0,555,1,0,0,0.0750004,0.0655636,128,128,128,57
|
||||||
|
corner90,DC,0.15,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.010089,0.0655636,0,0,0,0,185,0,555,1,0,0,0.0750004,0.0655636,128,128,128,57
|
||||||
|
corner90,MC,0.15,0.15,0,true,0,0,0,0,0,0,0,true,0,0.0132873,0.2048,0,0,0,0,92,0,276,1,0,0,0.175001,0.2048,62,62,62,30
|
||||||
|
corner90,Hybrid,0.15,0.15,0,true,0,0,0,0,0,0,0,true,0,0.00242269,0.0138893,0,0,0,0,184,0,552,1,0,0,0.0333341,0.0138893,124,124,124,60
|
||||||
|
corner90,DC,0.15,0.15,0,true,0,0,0,0,0,0,0,true,0,0.00242269,0.0138893,0,0,0,0,184,0,552,1,0,0,0.0333341,0.0138893,124,124,124,60
|
||||||
|
corner90,MC,0.15,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0261026,0.182204,0,0,0,0,96,0,288,1,0,0,0.175001,0.182204,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00728815,0.0465626,0,0,0,0,185,0,555,1,0,0,0.0942709,0.0465626,128,128,128,57
|
||||||
|
corner90,DC,0.15,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00728815,0.0465626,0,0,0,0,185,0,555,1,0,0,0.0942709,0.0465626,128,128,128,57
|
||||||
|
corner90,MC,0.15,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0313743,0.176533,0,0,0,0,96,0,288,1,0,0,0.175001,0.176533,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.15,0.1,true,0,0,0,0,0,0,0,true,60,0.00834888,0.0980566,54,1,0,0,182,1,384,0,1,4,1.24019,0.0980566,128,128,128,54
|
||||||
|
corner90,DC,0.15,0.15,0.1,true,0,0,0,0,0,0,0,true,60,0.00834888,0.0980566,54,1,0,0,182,1,384,0,1,4,1.24019,0.0980566,128,128,128,54
|
||||||
|
corner90,MC,0.15,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0362554,0.176777,0,0,0,0,96,0,288,1,0,0,0.175001,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.15,0.15,true,0,0,0,0,0,0,0,true,60,0.0102563,0.0984229,54,1,0,0,182,1,384,0,1,4,1.24019,0.0984229,128,128,128,54
|
||||||
|
corner90,DC,0.15,0.15,0.15,true,0,0,0,0,0,0,0,true,60,0.0102563,0.0984229,54,1,0,0,182,1,384,0,1,4,1.24019,0.0984229,128,128,128,54
|
||||||
|
corner90,MC,0.15,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0371232,0.171888,0,0,0,0,96,0,288,1,0,0,0.15,0.171888,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.15,0.2,true,0,0,0,0,0,0,0,true,63,0.0134512,0.0901116,57,1,0,0,185,1,384,0,1,4,1.23998,0.0901116,128,128,128,57
|
||||||
|
corner90,DC,0.15,0.15,0.2,true,0,0,0,0,0,0,0,true,63,0.0134512,0.0901116,57,1,0,0,185,1,384,0,1,4,1.23998,0.0901116,128,128,128,57
|
||||||
|
corner90,MC,0.15,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0181127,0.214354,0,0,0,0,92,0,276,1,0,0,0.166677,0.214354,62,62,62,30
|
||||||
|
corner90,Hybrid,0.15,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00668367,0.0383606,0,0,0,0,184,0,552,1,0,0,0.0642863,0.0383606,124,124,124,60
|
||||||
|
corner90,DC,0.15,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00668367,0.0383606,0,0,0,0,184,0,552,1,0,0,0.0642863,0.0383606,124,124,124,60
|
||||||
|
corner90,MC,0.15,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0315692,0.185696,0,0,0,0,96,0,288,1,0,0,0.164287,0.185696,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.2,0.05,true,0,0,0,0,0,0,0,true,63,0.0118092,0.0951405,57,1,0,0,185,1,384,0,1,4,1.22241,0.0951405,128,128,128,57
|
||||||
|
corner90,DC,0.15,0.2,0.05,true,0,0,0,0,0,0,0,true,63,0.0118092,0.0951405,57,1,0,0,185,1,384,0,1,4,1.22241,0.0951405,128,128,128,57
|
||||||
|
corner90,MC,0.15,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0361729,0.169188,0,0,0,0,96,0,288,1,0,0,0.15,0.169188,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.2,0.1,true,0,0,0,0,0,0,0,true,60,0.0126018,0.0945507,54,1,0,0,182,1,384,0,1,4,1.22253,0.0945507,128,128,128,54
|
||||||
|
corner90,DC,0.15,0.2,0.1,true,0,0,0,0,0,0,0,true,60,0.0126018,0.0945507,54,1,0,0,182,1,384,0,1,4,1.22253,0.0945507,128,128,128,54
|
||||||
|
corner90,MC,0.15,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0411676,0.171888,0,0,0,0,96,0,288,1,0,0,0.15,0.171888,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.2,0.15,true,0,0,0,0,0,0,0,true,63,0.0140465,0.094759,57,1,0,0,185,1,384,0,1,4,1.22253,0.094759,128,128,128,57
|
||||||
|
corner90,DC,0.15,0.2,0.15,true,0,0,0,0,0,0,0,true,63,0.0140465,0.094759,57,1,0,0,185,1,384,0,1,4,1.22253,0.094759,128,128,128,57
|
||||||
|
corner90,MC,0.15,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0419146,0.176777,0,0,0,0,96,0,288,1,0,0,0.15,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.15,0.2,0.2,true,0,0,0,0,0,0,0,true,63,0.0152006,0.0938249,57,1,0,0,185,1,384,0,1,4,1.22241,0.0938249,128,128,128,57
|
||||||
|
corner90,DC,0.15,0.2,0.2,true,0,0,0,0,0,0,0,true,63,0.0152006,0.0938249,57,1,0,0,185,1,384,0,1,4,1.22241,0.0938249,128,128,128,57
|
||||||
|
corner90,MC,0.2,0,0,true,0,0,0,0,0,0,0,true,0,0.0199722,0.176812,0,0,0,0,88,0,264,1,0,0,0.250006,0.176812,60,60,60,28
|
||||||
|
corner90,Hybrid,0.2,0,0,true,0,0,0,0,0,0,0,true,0,2.02964e-05,6.47376e-05,0,0,0,0,176,0,528,1,0,0,9.21886e-05,6.47376e-05,120,120,120,56
|
||||||
|
corner90,DC,0.2,0,0,true,0,0,0,0,0,0,0,true,0,2.02964e-05,6.47376e-05,0,0,0,0,176,0,528,1,0,0,9.21886e-05,6.47376e-05,120,120,120,56
|
||||||
|
corner90,MC,0.2,0,0.05,true,0,0,0,0,0,0,0,true,0,0.02713,0.22362,0,0,0,0,92,0,276,1,0,0,0.225,0.22362,62,62,62,30
|
||||||
|
corner90,Hybrid,0.2,0,0.05,true,0,0,0,0,0,1,0,true,123,0.000793335,0.0133324,113,2,0,0,168,2,165,0,1,7,1.20192,0.0133324,124,124,113,55
|
||||||
|
corner90,DC,0.2,0,0.05,true,0,0,0,0,0,1,0,true,123,0.000793335,0.0133324,113,2,0,0,168,2,165,0,1,7,1.20192,0.0133324,124,124,113,55
|
||||||
|
corner90,MC,0.2,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0343213,0.237182,0,0,0,0,92,0,276,1,0,0,0.199999,0.237182,62,62,62,30
|
||||||
|
corner90,Hybrid,0.2,0,0.1,true,0,0,0,0,0,1,0,true,120,0.00212287,0.0171432,114,1,0,0,169,1,165,0,1,4,1.202,0.0171432,124,124,114,55
|
||||||
|
corner90,DC,0.2,0,0.1,true,0,0,0,0,0,1,0,true,120,0.00212287,0.0171432,114,1,0,0,169,1,165,0,1,4,1.202,0.0171432,124,124,114,55
|
||||||
|
corner90,MC,0.2,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0391877,0.242545,0,0,0,0,92,0,276,1,0,0,0.175001,0.242545,62,62,62,30
|
||||||
|
corner90,Hybrid,0.2,0,0.15,true,0,0,0,0,0,1,0,true,120,0.00442237,0.0321426,114,1,0,0,164,1,150,0,1,4,1.147,0.0321426,124,124,114,50
|
||||||
|
corner90,DC,0.2,0,0.15,true,0,0,0,0,0,1,0,true,120,0.00442237,0.0321426,114,1,0,0,164,1,150,0,1,4,1.147,0.0321426,124,124,114,50
|
||||||
|
corner90,MC,0.2,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0449278,0.245153,0,0,0,0,92,0,276,1,0,0,0.166677,0.245153,62,62,62,30
|
||||||
|
corner90,Hybrid,0.2,0,0.2,true,0,0,0,0,0,1,0,true,123,0.000543624,0.00888824,113,2,0,0,163,2,150,0,1,7,1.147,0.00888824,124,124,113,50
|
||||||
|
corner90,DC,0.2,0,0.2,true,0,0,0,0,0,1,0,true,123,0.000543624,0.00888824,113,2,0,0,163,2,150,0,1,7,1.147,0.00888824,124,124,113,50
|
||||||
|
corner90,MC,0.2,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0102413,0.185821,0,0,0,0,92,0,276,1,0,0,0.225,0.185821,62,62,62,30
|
||||||
|
corner90,Hybrid,0.2,0.05,0,true,0,0,0,0,0,0,0,true,0,1.31747e-05,5.34058e-05,0,0,0,0,184,0,552,1,0,0,9.91821e-05,5.34058e-05,124,124,124,60
|
||||||
|
corner90,DC,0.2,0.05,0,true,0,0,0,0,0,0,0,true,0,1.31747e-05,5.34058e-05,0,0,0,0,184,0,552,1,0,0,9.91821e-05,5.34058e-05,124,124,124,60
|
||||||
|
corner90,MC,0.2,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0267636,0.176777,0,0,0,0,94,0,288,1,0,0,0.225,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0016388,0.0249424,0,0,0,0,164,0,498,1,0,0,0.0416662,0.0249424,122,122,112,54
|
||||||
|
corner90,DC,0.2,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0016388,0.0249424,0,0,0,0,164,0,498,1,0,0,0.0416662,0.0249424,122,122,112,54
|
||||||
|
corner90,MC,0.2,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0338954,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.00495847,0.0914346,0,0,0,0,172,0,516,1,0,0,0.0809532,0.0914346,124,124,115,57
|
||||||
|
corner90,DC,0.2,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.00495847,0.0914346,0,0,0,0,172,0,516,1,0,0,0.0809532,0.0914346,124,124,115,57
|
||||||
|
corner90,MC,0.2,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0389205,0.1875,0,0,0,0,96,0,288,1,0,0,0.175001,0.1875,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.00810901,0.0621081,0,0,0,0,165,0,495,1,0,0,0.0666654,0.0621081,124,124,115,50
|
||||||
|
corner90,DC,0.2,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.00810901,0.0621081,0,0,0,0,165,0,495,1,0,0,0.0666654,0.0621081,124,124,115,50
|
||||||
|
corner90,MC,0.2,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0449158,0.200001,0,0,0,0,96,0,288,1,0,0,0.164287,0.200001,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.00393199,0.0499222,0,0,0,0,162,0,486,1,0,0,0.0458316,0.0499222,122,122,112,50
|
||||||
|
corner90,DC,0.2,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.00393199,0.0499222,0,0,0,0,162,0,486,1,0,0,0.0458316,0.0499222,122,122,112,50
|
||||||
|
corner90,MC,0.2,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0114495,0.195213,0,0,0,0,92,0,276,1,0,0,0.199999,0.195213,62,62,62,30
|
||||||
|
corner90,Hybrid,0.2,0.1,0,true,0,0,0,0,0,0,0,true,0,0.00150837,0.00859466,0,0,0,0,184,0,552,1,0,0,0.0407394,0.00859466,124,124,124,60
|
||||||
|
corner90,DC,0.2,0.1,0,true,0,0,0,0,0,0,0,true,0,0.00150837,0.00859466,0,0,0,0,184,0,552,1,0,0,0.0407394,0.00859466,124,124,124,60
|
||||||
|
corner90,MC,0.2,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0296172,0.181178,0,0,0,0,96,0,288,1,0,0,0.199999,0.181178,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.00379875,0.0744921,0,0,0,0,168,0,504,1,0,0,0.050298,0.0744921,124,124,114,54
|
||||||
|
corner90,DC,0.2,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.00379875,0.0744921,0,0,0,0,168,0,504,1,0,0,0.050298,0.0744921,124,124,114,54
|
||||||
|
corner90,MC,0.2,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.036562,0.176777,0,0,0,0,96,0,288,1,0,0,0.199999,0.176777,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.00673243,0.0928205,0,0,0,0,174,0,522,1,0,0,0.0809532,0.0928205,126,126,117,57
|
||||||
|
corner90,DC,0.2,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.00673243,0.0928205,0,0,0,0,174,0,522,1,0,0,0.0809532,0.0928205,126,126,117,57
|
||||||
|
corner90,MC,0.2,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0413573,0.1875,0,0,0,0,96,0,288,1,0,0,0.175001,0.1875,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0101304,0.0988957,0,0,0,0,167,0,501,1,0,0,0.0850004,0.0988957,126,126,117,50
|
||||||
|
corner90,DC,0.2,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0101304,0.0988957,0,0,0,0,167,0,501,1,0,0,0.0850004,0.0988957,126,126,117,50
|
||||||
|
corner90,MC,0.2,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.047302,0.200001,0,0,0,0,96,0,288,1,0,0,0.15,0.200001,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.00676012,0.0653008,0,0,0,0,164,0,492,1,0,0,0.0600011,0.0653008,124,124,114,50
|
||||||
|
corner90,DC,0.2,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.00676012,0.0653008,0,0,0,0,164,0,492,1,0,0,0.0600011,0.0653008,124,124,114,50
|
||||||
|
corner90,MC,0.2,0.15,0,true,0,0,0,0,0,0,0,true,0,0.0138522,0.2048,0,0,0,0,92,0,276,1,0,0,0.175001,0.2048,62,62,62,30
|
||||||
|
corner90,Hybrid,0.2,0.15,0,true,0,0,0,0,0,0,0,true,0,1.52858e-05,5.901e-05,0,0,0,0,166,0,498,1,0,0,9.57145e-05,5.901e-05,123,123,112,54
|
||||||
|
corner90,DC,0.2,0.15,0,true,0,0,0,0,0,0,0,true,0,1.52858e-05,5.901e-05,0,0,0,0,166,0,498,1,0,0,9.57145e-05,5.901e-05,123,123,112,54
|
||||||
|
corner90,MC,0.2,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0329237,0.182204,0,0,0,0,96,0,288,1,0,0,0.175001,0.182204,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00353618,0.0622272,0,0,0,0,155,0,465,1,0,0,0.05,0.0622272,127,127,106,49
|
||||||
|
corner90,DC,0.2,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00353618,0.0622272,0,0,0,0,155,0,465,1,0,0,0.05,0.0622272,127,127,106,49
|
||||||
|
corner90,MC,0.2,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0399491,0.176533,0,0,0,0,96,0,288,1,0,0,0.175001,0.176533,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.15,0.1,true,0,0,0,0,0,0,0,true,58,0.00718203,0.0992301,52,1,0,0,158,1,318,0,1,4,1.04096,0.0992301,127,127,106,52
|
||||||
|
corner90,DC,0.2,0.15,0.1,true,0,0,0,0,0,0,0,true,58,0.00718203,0.0992301,52,1,0,0,158,1,318,0,1,4,1.04096,0.0992301,127,127,106,52
|
||||||
|
corner90,MC,0.2,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0442232,0.1875,0,0,0,0,96,0,288,1,0,0,0.175001,0.1875,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.15,0.15,true,0,0,0,0,0,0,0,true,56,0.00861801,0.0951836,46,2,0,0,152,2,318,0,1,7,1.04096,0.0951836,127,127,106,46
|
||||||
|
corner90,DC,0.2,0.15,0.15,true,0,0,0,0,0,0,0,true,56,0.00861801,0.0951836,46,2,0,0,152,2,318,0,1,7,1.04096,0.0951836,127,127,106,46
|
||||||
|
corner90,MC,0.2,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0502439,0.200001,0,0,0,0,96,0,288,1,0,0,0.15,0.200001,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.15,0.2,true,0,0,0,0,0,0,0,true,56,0.00646099,0.0901116,46,2,0,0,152,2,318,0,1,7,1.04114,0.0901116,127,127,106,46
|
||||||
|
corner90,DC,0.2,0.15,0.2,true,0,0,0,0,0,0,0,true,56,0.00646099,0.0901116,46,2,0,0,152,2,318,0,1,7,1.04114,0.0901116,127,127,106,46
|
||||||
|
corner90,MC,0.2,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0195329,0.214354,0,0,0,0,92,0,276,1,0,0,0.166677,0.214354,62,62,62,30
|
||||||
|
corner90,Hybrid,0.2,0.2,0,true,0,0,0,0,0,0,0,true,0,1.56808e-05,4.95911e-05,0,0,0,0,166,0,498,1,0,0,9.57145e-05,4.95911e-05,123,123,112,54
|
||||||
|
corner90,DC,0.2,0.2,0,true,0,0,0,0,0,0,0,true,0,1.56808e-05,4.95911e-05,0,0,0,0,166,0,498,1,0,0,9.57145e-05,4.95911e-05,123,123,112,54
|
||||||
|
corner90,MC,0.2,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0392385,0.185696,0,0,0,0,96,0,288,1,0,0,0.164287,0.185696,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.2,0.05,true,0,0,0,0,0,0,0,true,55,0.00387809,0.0999985,49,1,0,0,153,1,312,0,1,4,1.05447,0.0999985,127,127,104,49
|
||||||
|
corner90,DC,0.2,0.2,0.05,true,0,0,0,0,0,0,0,true,55,0.00387809,0.0999985,49,1,0,0,153,1,312,0,1,4,1.05447,0.0999985,127,127,104,49
|
||||||
|
corner90,MC,0.2,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0456834,0.169188,0,0,0,0,96,0,288,1,0,0,0.15,0.169188,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.2,0.1,true,0,0,0,0,0,0,0,true,58,0.00727009,0.0972214,52,1,0,0,156,1,312,0,1,4,1.05467,0.0972214,127,127,104,52
|
||||||
|
corner90,DC,0.2,0.2,0.1,true,0,0,0,0,0,0,0,true,58,0.00727009,0.0972214,52,1,0,0,156,1,312,0,1,4,1.05467,0.0972214,127,127,104,52
|
||||||
|
corner90,MC,0.2,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0500506,0.1875,0,0,0,0,96,0,288,1,0,0,0.15,0.1875,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.2,0.15,true,0,0,0,0,0,0,0,true,56,0.00812684,0.0939839,46,2,0,0,150,2,312,0,1,7,1.05467,0.0939839,127,127,104,46
|
||||||
|
corner90,DC,0.2,0.2,0.15,true,0,0,0,0,0,0,0,true,56,0.00812684,0.0939839,46,2,0,0,150,2,312,0,1,7,1.05467,0.0939839,127,127,104,46
|
||||||
|
corner90,MC,0.2,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0559197,0.200001,0,0,0,0,96,0,288,1,0,0,0.15,0.200001,64,64,64,32
|
||||||
|
corner90,Hybrid,0.2,0.2,0.2,true,0,0,0,0,0,0,0,true,53,0.00287818,0.0937833,43,2,0,0,147,2,312,0,1,7,1.05447,0.0937833,127,127,104,43
|
||||||
|
corner90,DC,0.2,0.2,0.2,true,0,0,0,0,0,0,0,true,53,0.00287818,0.0937833,43,2,0,0,147,2,312,0,1,7,1.05447,0.0937833,127,127,104,43
|
||||||
|
doorway,MC,0,0,0,true,0,0,0,0,0,0,0,true,0,0.0219358,0.204799,0,0,0,0,160,0,480,1,0,0,0.250006,0.204799,108,108,108,52
|
||||||
|
doorway,Hybrid,0,0,0,true,0,0,0,0,0,0,0,true,0,0.00322953,0.139734,0,0,0,0,320,0,960,1,0,0,0.125008,0.139734,216,216,216,104
|
||||||
|
doorway,DC,0,0,0,true,0,0,0,0,0,0,0,true,0,0.00322953,0.139734,0,0,0,0,320,0,960,1,0,0,0.125008,0.139734,216,216,216,104
|
||||||
|
doorway,MC,0,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0162796,0.185821,0,0,0,0,180,0,540,2,0,0,0.225,0.185821,122,122,122,58
|
||||||
|
doorway,Hybrid,0,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0038988,0.0574778,0,0,0,0,360,0,1080,2,0,0,0.12143,0.0574778,244,244,244,116
|
||||||
|
doorway,DC,0,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0038988,0.0574778,0,0,0,0,360,0,1080,2,0,0,0.12143,0.0574778,244,244,244,116
|
||||||
|
doorway,MC,0,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0154688,0.195213,0,0,0,0,180,0,540,2,0,0,0.199999,0.195213,122,122,122,58
|
||||||
|
doorway,Hybrid,0,0,0.1,true,0,0,0,0,0,0,0,true,0,0.00109014,0.0138893,0,0,0,0,360,0,1080,2,0,0,0.0388893,0.0138893,244,244,244,116
|
||||||
|
doorway,DC,0,0,0.1,true,0,0,0,0,0,0,0,true,0,0.00109014,0.0138893,0,0,0,0,360,0,1080,2,0,0,0.0388893,0.0138893,244,244,244,116
|
||||||
|
doorway,MC,0,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0160047,0.2048,0,0,0,0,180,0,540,2,0,0,0.175001,0.2048,122,122,122,58
|
||||||
|
doorway,Hybrid,0,0,0.15,true,0,0,0,0,0,0,0,true,0,0.000809898,0.0138893,0,0,0,0,360,0,1080,2,0,0,0.0388893,0.0138893,244,244,244,116
|
||||||
|
doorway,DC,0,0,0.15,true,0,0,0,0,0,0,0,true,0,0.000809898,0.0138893,0,0,0,0,360,0,1080,2,0,0,0.0388893,0.0138893,244,244,244,116
|
||||||
|
doorway,MC,0,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0185093,0.214354,0,0,0,0,180,0,540,2,0,0,0.175001,0.214354,122,122,122,58
|
||||||
|
doorway,Hybrid,0,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0036875,0.0535698,0,0,0,0,360,0,1080,2,0,0,0.12143,0.0535698,244,244,244,116
|
||||||
|
doorway,DC,0,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0036875,0.0535698,0,0,0,0,360,0,1080,2,0,0,0.12143,0.0535698,244,244,244,116
|
||||||
|
doorway,MC,0,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0163648,0.214365,0,0,0,0,164,0,492,1,0,0,0.225,0.214365,110,110,110,54
|
||||||
|
doorway,Hybrid,0,0.05,0,true,0,0,0,0,0,0,0,true,0,0.00291315,0.158347,0,0,0,0,328,0,984,1,0,0,0.125008,0.158347,220,220,220,108
|
||||||
|
doorway,DC,0,0.05,0,true,0,0,0,0,0,0,0,true,0,0.00291315,0.158347,0,0,0,0,328,0,984,1,0,0,0.125008,0.158347,220,220,220,108
|
||||||
|
doorway,MC,0,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0166455,0.181178,0,0,0,0,182,0,558,2,1,0,0.225,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.00525896,0.121429,0,0,0,0,368,0,1104,2,0,0,0.12143,0.121429,248,248,248,120
|
||||||
|
doorway,DC,0,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.00525896,0.121429,0,0,0,0,368,0,1104,2,0,0,0.12143,0.121429,248,248,248,120
|
||||||
|
doorway,MC,0,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0159757,0.181178,0,0,0,0,184,0,552,2,0,0,0.199999,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.00371862,0.094062,0,0,0,0,368,0,1104,2,0,0,0.0847234,0.094062,248,248,248,120
|
||||||
|
doorway,DC,0,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.00371862,0.094062,0,0,0,0,368,0,1104,2,0,0,0.0847234,0.094062,248,248,248,120
|
||||||
|
doorway,MC,0,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0170482,0.182204,0,0,0,0,184,0,552,2,0,0,0.199999,0.182204,124,124,124,60
|
||||||
|
doorway,Hybrid,0,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.00361472,0.0622272,0,0,0,0,368,0,1104,2,0,0,0.0666646,0.0622272,248,248,248,120
|
||||||
|
doorway,DC,0,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.00361472,0.0622272,0,0,0,0,368,0,1104,2,0,0,0.0666646,0.0622272,248,248,248,120
|
||||||
|
doorway,MC,0,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0196109,0.185696,0,0,0,0,184,0,552,2,0,0,0.199999,0.185696,124,124,124,60
|
||||||
|
doorway,Hybrid,0,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.00613743,0.0535698,0,0,0,0,368,0,1104,2,0,0,0.12321,0.0535698,248,248,248,120
|
||||||
|
doorway,DC,0,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.00613743,0.0535698,0,0,0,0,368,0,1104,2,0,0,0.12321,0.0535698,248,248,248,120
|
||||||
|
doorway,MC,0,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0164946,0.223603,0,0,0,0,164,0,492,1,0,0,0.22495,0.223603,110,110,110,54
|
||||||
|
doorway,Hybrid,0,0.1,0,true,0,0,0,0,0,0,0,true,0,0.00102849,0.0931098,0,0,0,0,328,0,984,1,0,0,0.124992,0.0931098,220,220,220,108
|
||||||
|
doorway,DC,0,0.1,0,true,0,0,0,0,0,0,0,true,0,0.00102849,0.0931098,0,0,0,0,328,0,984,1,0,0,0.124992,0.0931098,220,220,220,108
|
||||||
|
doorway,MC,0,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0161998,0.181178,0,0,0,0,184,0,552,2,0,0,0.225,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.00601784,0.121429,0,0,0,0,368,0,1104,2,0,0,0.124603,0.121429,248,248,248,120
|
||||||
|
doorway,DC,0,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.00601784,0.121429,0,0,0,0,368,0,1104,2,0,0,0.124603,0.121429,248,248,248,120
|
||||||
|
doorway,MC,0,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0156844,0.181178,0,0,0,0,182,0,558,2,1,0,0.199999,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.00402425,0.0948752,0,0,0,0,368,0,1104,2,0,0,0.0833333,0.0948752,248,248,248,120
|
||||||
|
doorway,DC,0,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.00402425,0.0948752,0,0,0,0,368,0,1104,2,0,0,0.0833333,0.0948752,248,248,248,120
|
||||||
|
doorway,MC,0,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0172273,0.182204,0,0,0,0,184,0,552,2,0,0,0.199999,0.182204,124,124,124,60
|
||||||
|
doorway,Hybrid,0,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.00543079,0.0992302,0,0,0,0,368,0,1104,2,0,0,0.0875011,0.0992302,248,248,248,120
|
||||||
|
doorway,DC,0,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.00543079,0.0992302,0,0,0,0,368,0,1104,2,0,0,0.0875011,0.0992302,248,248,248,120
|
||||||
|
doorway,MC,0,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0190111,0.176777,0,0,0,0,184,0,552,2,0,0,0.225,0.176777,124,124,124,60
|
||||||
|
doorway,Hybrid,0,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0079315,0.0655639,0,0,0,0,368,0,1104,2,0,0,0.12458,0.0655639,248,248,248,120
|
||||||
|
doorway,DC,0,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0079315,0.0655639,0,0,0,0,368,0,1104,2,0,0,0.12458,0.0655639,248,248,248,120
|
||||||
|
doorway,MC,0,0.15,0,true,0,0,0,0,0,0,0,true,0,0.0135681,0.300082,0,0,0,0,162,0,492,1,0,0,0.250006,0.300082,110,110,110,54
|
||||||
|
doorway,Hybrid,0,0.15,0,true,0,0,0,0,0,0,0,true,0,0.000597045,0.0782776,0,0,0,0,328,0,984,1,0,0,0.124992,0.0782776,220,220,220,108
|
||||||
|
doorway,DC,0,0.15,0,true,0,0,0,0,0,0,0,true,0,0.000597045,0.0782776,0,0,0,0,328,0,984,1,0,0,0.124992,0.0782776,220,220,220,108
|
||||||
|
doorway,MC,0,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0164314,0.189795,0,0,0,0,186,0,558,2,0,0,0.22495,0.189795,124,124,124,62
|
||||||
|
doorway,Hybrid,0,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00579265,0.136556,0,0,0,0,372,0,1116,2,0,0,0.124999,0.136556,248,248,248,124
|
||||||
|
doorway,DC,0,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00579265,0.136556,0,0,0,0,372,0,1116,2,0,0,0.124999,0.136556,248,248,248,124
|
||||||
|
doorway,MC,0,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0164016,0.197329,0,0,0,0,186,0,558,2,0,0,0.199974,0.197329,124,124,124,62
|
||||||
|
doorway,Hybrid,0,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.00510838,0.0992302,0,0,0,0,372,0,1116,2,0,0,0.0875011,0.0992302,248,248,248,124
|
||||||
|
doorway,DC,0,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.00510838,0.0992302,0,0,0,0,372,0,1116,2,0,0,0.0875011,0.0992302,248,248,248,124
|
||||||
|
doorway,MC,0,0.15,0.15,true,0,0,0,0,0,0,0,true,5,0.0167645,0.204799,3,1,0,0,184,0,560,2,0,1,0.199974,0.204799,124,124,124,62
|
||||||
|
doorway,Hybrid,0,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.00616132,0.0961257,0,0,0,0,372,0,1116,2,0,0,0.0875003,0.0961257,248,248,248,124
|
||||||
|
doorway,DC,0,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.00616132,0.0961257,0,0,0,0,372,0,1116,2,0,0,0.0875003,0.0961257,248,248,248,124
|
||||||
|
doorway,MC,0,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0185563,0.214365,0,0,0,0,186,0,558,2,0,0,0.22495,0.214365,124,124,124,62
|
||||||
|
doorway,Hybrid,0,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.00780637,0.061747,0,0,0,0,372,0,1116,2,0,0,0.12143,0.061747,248,248,248,124
|
||||||
|
doorway,DC,0,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.00780637,0.061747,0,0,0,0,372,0,1116,2,0,0,0.12143,0.061747,248,248,248,124
|
||||||
|
doorway,MC,0,0.2,0,true,0,0,0,0,0,0,0,true,0,0.013791,0.266231,0,0,0,0,162,0,492,1,0,0,0.225,0.266231,110,110,110,54
|
||||||
|
doorway,Hybrid,0,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00225472,0.150002,0,0,0,0,328,0,984,1,0,0,0.150001,0.150002,220,220,220,108
|
||||||
|
doorway,DC,0,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00225472,0.150002,0,0,0,0,328,0,984,1,0,0,0.150001,0.150002,220,220,220,108
|
||||||
|
doorway,MC,0,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0134022,0.185696,0,0,0,0,186,0,558,2,0,0,0.164287,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.00589082,0.108274,0,0,0,0,372,0,1116,2,0,0,0.124106,0.108274,248,248,248,124
|
||||||
|
doorway,DC,0,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.00589082,0.108274,0,0,0,0,372,0,1116,2,0,0,0.124106,0.108274,248,248,248,124
|
||||||
|
doorway,MC,0,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0147085,0.169188,0,0,0,0,186,0,558,2,0,0,0.155554,0.169188,124,124,124,62
|
||||||
|
doorway,Hybrid,0,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0069661,0.09923,0,0,0,0,372,0,1116,2,0,0,0.0874997,0.09923,248,248,248,124
|
||||||
|
doorway,DC,0,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0069661,0.09923,0,0,0,0,372,0,1116,2,0,0,0.0874997,0.09923,248,248,248,124
|
||||||
|
doorway,MC,0,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0155433,0.171888,0,0,0,0,186,0,558,2,0,0,0.155554,0.171888,124,124,124,62
|
||||||
|
doorway,Hybrid,0,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.00785879,0.09923,0,0,0,0,372,0,1116,2,0,0,0.0937504,0.09923,248,248,248,124
|
||||||
|
doorway,DC,0,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.00785879,0.09923,0,0,0,0,372,0,1116,2,0,0,0.0937504,0.09923,248,248,248,124
|
||||||
|
doorway,MC,0,0.2,0.2,true,0,0,0,0,0,0,0,true,5,0.0160599,0.185696,3,1,0,0,184,0,560,2,0,1,0.15,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.00786816,0.0622271,0,0,0,0,372,0,1116,2,0,0,0.12143,0.0622271,248,248,248,124
|
||||||
|
doorway,DC,0,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.00786816,0.0622271,0,0,0,0,372,0,1116,2,0,0,0.12143,0.0622271,248,248,248,124
|
||||||
|
doorway,MC,0.05,0,0,true,0,0,0,0,0,0,0,true,0,0.0219358,0.204799,0,0,0,0,160,0,480,1,0,0,0.250006,0.204799,108,108,108,52
|
||||||
|
doorway,Hybrid,0.05,0,0,true,0,0,0,0,0,0,0,true,0,0.00317203,0.13972,0,0,0,0,320,0,960,1,0,0,0.125008,0.13972,216,216,216,104
|
||||||
|
doorway,DC,0.05,0,0,true,0,0,0,0,0,0,0,true,0,0.00317203,0.13972,0,0,0,0,320,0,960,1,0,0,0.125008,0.13972,216,216,216,104
|
||||||
|
doorway,MC,0.05,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0162796,0.185821,0,0,0,0,180,0,540,2,0,0,0.225,0.185821,122,122,122,58
|
||||||
|
doorway,Hybrid,0.05,0,0.05,true,0,0,0,0,0,0,0,true,0,0.00859972,0.0834229,0,0,0,0,360,0,1080,2,0,0,0.121146,0.0834229,244,244,244,116
|
||||||
|
doorway,DC,0.05,0,0.05,true,0,0,0,0,0,0,0,true,0,0.00859972,0.0834229,0,0,0,0,360,0,1080,2,0,0,0.121146,0.0834229,244,244,244,116
|
||||||
|
doorway,MC,0.05,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0154688,0.195213,0,0,0,0,180,0,540,2,0,0,0.199999,0.195213,122,122,122,58
|
||||||
|
doorway,Hybrid,0.05,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0113636,0.0562172,0,0,0,0,360,0,1080,2,0,0,0.0812172,0.0562172,244,244,244,116
|
||||||
|
doorway,DC,0.05,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0113636,0.0562172,0,0,0,0,360,0,1080,2,0,0,0.0812172,0.0562172,244,244,244,116
|
||||||
|
doorway,MC,0.05,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0160047,0.2048,0,0,0,0,180,0,540,2,0,0,0.175001,0.2048,122,122,122,58
|
||||||
|
doorway,Hybrid,0.05,0,0.15,true,0,0,0,0,0,0,0,true,0,0.00488212,0.055963,0,0,0,0,360,0,1080,2,0,0,0.0805545,0.055963,244,244,244,116
|
||||||
|
doorway,DC,0.05,0,0.15,true,0,0,0,0,0,0,0,true,0,0.00488212,0.055963,0,0,0,0,360,0,1080,2,0,0,0.0805545,0.055963,244,244,244,116
|
||||||
|
doorway,MC,0.05,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0185093,0.214354,0,0,0,0,180,0,540,2,0,0,0.175001,0.214354,122,122,122,58
|
||||||
|
doorway,Hybrid,0.05,0,0.2,true,0,0,0,0,0,0,0,true,0,0.00597031,0.0821419,0,0,0,0,360,0,1080,2,0,0,0.12407,0.0821419,244,244,244,116
|
||||||
|
doorway,DC,0.05,0,0.2,true,0,0,0,0,0,0,0,true,0,0.00597031,0.0821419,0,0,0,0,360,0,1080,2,0,0,0.12407,0.0821419,244,244,244,116
|
||||||
|
doorway,MC,0.05,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0163648,0.214365,0,0,0,0,164,0,492,1,0,0,0.225,0.214365,110,110,110,54
|
||||||
|
doorway,Hybrid,0.05,0.05,0,true,0,0,0,0,0,0,0,true,0,0.00969966,0.158335,0,0,0,0,328,0,984,1,0,0,0.125008,0.158335,220,220,220,108
|
||||||
|
doorway,DC,0.05,0.05,0,true,0,0,0,0,0,0,0,true,0,0.00969966,0.158335,0,0,0,0,328,0,984,1,0,0,0.125008,0.158335,220,220,220,108
|
||||||
|
doorway,MC,0.05,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0166455,0.181178,0,0,0,0,182,0,558,2,1,0,0.225,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0.05,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0161304,0.14397,0,0,0,0,368,0,1104,2,0,0,0.121726,0.14397,248,248,248,120
|
||||||
|
doorway,DC,0.05,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0161304,0.14397,0,0,0,0,368,0,1104,2,0,0,0.121726,0.14397,248,248,248,120
|
||||||
|
doorway,MC,0.05,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0159757,0.181178,0,0,0,0,184,0,552,2,0,0,0.199999,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0.05,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0198007,0.0962556,0,0,0,0,368,0,1104,2,0,0,0.0984293,0.0962556,248,248,248,120
|
||||||
|
doorway,DC,0.05,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0198007,0.0962556,0,0,0,0,368,0,1104,2,0,0,0.0984293,0.0962556,248,248,248,120
|
||||||
|
doorway,MC,0.05,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0170482,0.182204,0,0,0,0,184,0,552,2,0,0,0.199999,0.182204,124,124,124,60
|
||||||
|
doorway,Hybrid,0.05,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0138526,0.0622271,0,0,0,0,368,0,1104,2,0,0,0.0805545,0.0622271,248,248,248,120
|
||||||
|
doorway,DC,0.05,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0138526,0.0622271,0,0,0,0,368,0,1104,2,0,0,0.0805545,0.0622271,248,248,248,120
|
||||||
|
doorway,MC,0.05,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0196109,0.185696,0,0,0,0,184,0,552,2,0,0,0.199999,0.185696,124,124,124,60
|
||||||
|
doorway,Hybrid,0.05,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0141894,0.0821419,0,0,0,0,368,0,1104,2,0,0,0.122382,0.0821419,248,248,248,120
|
||||||
|
doorway,DC,0.05,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0141894,0.0821419,0,0,0,0,368,0,1104,2,0,0,0.122382,0.0821419,248,248,248,120
|
||||||
|
doorway,MC,0.05,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0164946,0.223603,0,0,0,0,164,0,492,1,0,0,0.22495,0.223603,110,110,110,54
|
||||||
|
doorway,Hybrid,0.05,0.1,0,true,0,0,0,0,0,0,0,true,0,0.00910731,0.079134,0,0,0,0,328,0,984,1,0,0,0.124992,0.079134,220,220,220,108
|
||||||
|
doorway,DC,0.05,0.1,0,true,0,0,0,0,0,0,0,true,0,0.00910731,0.079134,0,0,0,0,328,0,984,1,0,0,0.124992,0.079134,220,220,220,108
|
||||||
|
doorway,MC,0.05,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0161998,0.181178,0,0,0,0,184,0,552,2,0,0,0.225,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0.05,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0169753,0.144956,0,0,0,0,368,0,1104,2,0,0,0.124784,0.144956,248,248,248,120
|
||||||
|
doorway,DC,0.05,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0169753,0.144956,0,0,0,0,368,0,1104,2,0,0,0.124784,0.144956,248,248,248,120
|
||||||
|
doorway,MC,0.05,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0156844,0.181178,0,0,0,0,182,0,558,2,1,0,0.199999,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0.05,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0205022,0.096832,0,0,0,0,368,0,1104,2,0,0,0.0936649,0.096832,248,248,248,120
|
||||||
|
doorway,DC,0.05,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0205022,0.096832,0,0,0,0,368,0,1104,2,0,0,0.0936649,0.096832,248,248,248,120
|
||||||
|
doorway,MC,0.05,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0172273,0.182204,0,0,0,0,184,0,552,2,0,0,0.199999,0.182204,124,124,124,60
|
||||||
|
doorway,Hybrid,0.05,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0157315,0.0992302,0,0,0,0,368,0,1104,2,0,0,0.0857153,0.0992302,248,248,248,120
|
||||||
|
doorway,DC,0.05,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0157315,0.0992302,0,0,0,0,368,0,1104,2,0,0,0.0857153,0.0992302,248,248,248,120
|
||||||
|
doorway,MC,0.05,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0190111,0.176777,0,0,0,0,184,0,552,2,0,0,0.225,0.176777,124,124,124,60
|
||||||
|
doorway,Hybrid,0.05,0.1,0.2,true,0,0,0,0,0,1,0,true,0,0.0171035,0.0948019,0,0,0,0,368,0,1104,2,0,0,0.124594,0.0948019,248,248,248,120
|
||||||
|
doorway,DC,0.05,0.1,0.2,true,0,0,0,0,0,1,0,true,0,0.0171035,0.0948019,0,0,0,0,368,0,1104,2,0,0,0.124594,0.0948019,248,248,248,120
|
||||||
|
doorway,MC,0.05,0.15,0,true,0,0,0,0,0,0,0,true,0,0.0135681,0.300082,0,0,0,0,162,0,492,1,0,0,0.250006,0.300082,110,110,110,54
|
||||||
|
doorway,Hybrid,0.05,0.15,0,true,0,0,0,0,0,0,0,true,0,0.000607357,0.0782605,0,0,0,0,328,0,984,1,0,0,0.124992,0.0782605,220,220,220,108
|
||||||
|
doorway,DC,0.05,0.15,0,true,0,0,0,0,0,0,0,true,0,0.000607357,0.0782605,0,0,0,0,328,0,984,1,0,0,0.124992,0.0782605,220,220,220,108
|
||||||
|
doorway,MC,0.05,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0164314,0.189795,0,0,0,0,186,0,558,2,0,0,0.22495,0.189795,124,124,124,62
|
||||||
|
doorway,Hybrid,0.05,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00987172,0.127099,0,0,0,0,372,0,1116,2,0,0,0.124999,0.127099,248,248,248,124
|
||||||
|
doorway,DC,0.05,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.00987172,0.127099,0,0,0,0,372,0,1116,2,0,0,0.124999,0.127099,248,248,248,124
|
||||||
|
doorway,MC,0.05,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0164016,0.197329,0,0,0,0,186,0,558,2,0,0,0.199974,0.197329,124,124,124,62
|
||||||
|
doorway,Hybrid,0.05,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0131381,0.0993136,0,0,0,0,371,0,1113,2,0,0,0.0944449,0.0993136,248,248,248,123
|
||||||
|
doorway,DC,0.05,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0131381,0.0993136,0,0,0,0,371,0,1113,2,0,0,0.0944449,0.0993136,248,248,248,123
|
||||||
|
doorway,MC,0.05,0.15,0.15,true,0,0,0,0,0,0,0,true,5,0.0167645,0.204799,3,1,0,0,184,0,560,2,0,1,0.199974,0.204799,124,124,124,62
|
||||||
|
doorway,Hybrid,0.05,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.00954555,0.0961256,0,0,0,0,372,0,1116,2,0,0,0.0862071,0.0961256,248,248,248,124
|
||||||
|
doorway,DC,0.05,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.00954555,0.0961256,0,0,0,0,372,0,1116,2,0,0,0.0862071,0.0961256,248,248,248,124
|
||||||
|
doorway,MC,0.05,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0185563,0.214365,0,0,0,0,186,0,558,2,0,0,0.22495,0.214365,124,124,124,62
|
||||||
|
doorway,Hybrid,0.05,0.15,0.2,true,0,0,0,0,0,1,0,true,0,0.010004,0.0821419,0,0,0,0,372,0,1116,2,0,0,0.120238,0.0821419,248,248,248,124
|
||||||
|
doorway,DC,0.05,0.15,0.2,true,0,0,0,0,0,1,0,true,0,0.010004,0.0821419,0,0,0,0,372,0,1116,2,0,0,0.120238,0.0821419,248,248,248,124
|
||||||
|
doorway,MC,0.05,0.2,0,true,0,0,0,0,0,0,0,true,0,0.013791,0.266231,0,0,0,0,162,0,492,1,0,0,0.225,0.266231,110,110,110,54
|
||||||
|
doorway,Hybrid,0.05,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00179194,0.145755,0,0,0,0,328,0,984,1,0,0,0.125008,0.145755,220,220,220,108
|
||||||
|
doorway,DC,0.05,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00179194,0.145755,0,0,0,0,328,0,984,1,0,0,0.125008,0.145755,220,220,220,108
|
||||||
|
doorway,MC,0.05,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0134022,0.185696,0,0,0,0,186,0,558,2,0,0,0.164287,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0.05,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0098904,0.130554,0,0,0,0,372,0,1116,2,0,0,0.124867,0.130554,248,248,248,124
|
||||||
|
doorway,DC,0.05,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0098904,0.130554,0,0,0,0,372,0,1116,2,0,0,0.124867,0.130554,248,248,248,124
|
||||||
|
doorway,MC,0.05,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0147085,0.169188,0,0,0,0,186,0,558,2,0,0,0.155554,0.169188,124,124,124,62
|
||||||
|
doorway,Hybrid,0.05,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0142356,0.104424,0,0,0,0,372,0,1116,2,0,0,0.0944449,0.104424,248,248,248,124
|
||||||
|
doorway,DC,0.05,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0142356,0.104424,0,0,0,0,372,0,1116,2,0,0,0.0944449,0.104424,248,248,248,124
|
||||||
|
doorway,MC,0.05,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0155433,0.171888,0,0,0,0,186,0,558,2,0,0,0.155554,0.171888,124,124,124,62
|
||||||
|
doorway,Hybrid,0.05,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0103009,0.0707176,0,0,0,0,372,0,1116,2,0,0,0.0805545,0.0707176,248,248,248,124
|
||||||
|
doorway,DC,0.05,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0103009,0.0707176,0,0,0,0,372,0,1116,2,0,0,0.0805545,0.0707176,248,248,248,124
|
||||||
|
doorway,MC,0.05,0.2,0.2,true,0,0,0,0,0,0,0,true,5,0.0160599,0.185696,3,1,0,0,184,0,560,2,0,1,0.15,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0.05,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0100554,0.0821419,0,0,0,0,372,0,1116,2,0,0,0.120238,0.0821419,248,248,248,124
|
||||||
|
doorway,DC,0.05,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0100554,0.0821419,0,0,0,0,372,0,1116,2,0,0,0.120238,0.0821419,248,248,248,124
|
||||||
|
doorway,MC,0.1,0,0,true,0,0,0,0,0,0,0,true,0,0.0219358,0.204799,0,0,0,0,160,0,480,1,0,0,0.250006,0.204799,108,108,108,52
|
||||||
|
doorway,Hybrid,0.1,0,0,true,0,0,0,0,0,0,0,true,0,0.00457135,0.134285,0,0,0,0,320,0,960,1,0,0,0.125008,0.134285,216,216,216,104
|
||||||
|
doorway,DC,0.1,0,0,true,0,0,0,0,0,0,0,true,0,0.00457135,0.134285,0,0,0,0,320,0,960,1,0,0,0.125008,0.134285,216,216,216,104
|
||||||
|
doorway,MC,0.1,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0171181,0.186851,0,0,0,0,180,0,540,2,0,0,0.227779,0.186851,122,122,122,58
|
||||||
|
doorway,Hybrid,0.1,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0115279,0.0881178,0,0,0,0,360,0,1080,2,0,0,0.119446,0.0881178,244,244,244,116
|
||||||
|
doorway,DC,0.1,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0115279,0.0881178,0,0,0,0,360,0,1080,2,0,0,0.119446,0.0881178,244,244,244,116
|
||||||
|
doorway,MC,0.1,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0154688,0.195213,0,0,0,0,180,0,540,2,0,0,0.199999,0.195213,122,122,122,58
|
||||||
|
doorway,Hybrid,0.1,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0123137,0.0509262,0,0,0,0,360,0,1080,2,0,0,0.0759249,0.0509262,244,244,244,116
|
||||||
|
doorway,DC,0.1,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0123137,0.0509262,0,0,0,0,360,0,1080,2,0,0,0.0759249,0.0509262,244,244,244,116
|
||||||
|
doorway,MC,0.1,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0160047,0.2048,0,0,0,0,180,0,540,2,0,0,0.175001,0.2048,122,122,122,58
|
||||||
|
doorway,Hybrid,0.1,0,0.15,true,0,0,0,0,0,0,0,true,0,0.00838555,0.0509262,0,0,0,0,360,0,1080,2,0,0,0.0759249,0.0509262,244,244,244,116
|
||||||
|
doorway,DC,0.1,0,0.15,true,0,0,0,0,0,0,0,true,0,0.00838555,0.0509262,0,0,0,0,360,0,1080,2,0,0,0.0759249,0.0509262,244,244,244,116
|
||||||
|
doorway,MC,0.1,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0185093,0.214354,0,0,0,0,180,0,540,2,0,0,0.175001,0.214354,122,122,122,58
|
||||||
|
doorway,Hybrid,0.1,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0107384,0.0841827,0,0,0,0,360,0,1080,2,0,0,0.122672,0.0841827,244,244,244,116
|
||||||
|
doorway,DC,0.1,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0107384,0.0841827,0,0,0,0,360,0,1080,2,0,0,0.122672,0.0841827,244,244,244,116
|
||||||
|
doorway,MC,0.1,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0172851,0.214365,0,0,0,0,164,0,492,1,0,0,0.227779,0.214365,110,110,110,54
|
||||||
|
doorway,Hybrid,0.1,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0114741,0.14552,0,0,0,0,328,0,984,1,0,0,0.125008,0.14552,220,220,220,108
|
||||||
|
doorway,DC,0.1,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0114741,0.14552,0,0,0,0,328,0,984,1,0,0,0.125008,0.14552,220,220,220,108
|
||||||
|
doorway,MC,0.1,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0182831,0.181178,0,0,0,0,182,0,558,2,1,0,0.227779,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0.1,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0197371,0.146326,0,0,0,0,368,0,1104,2,0,0,0.119558,0.146326,248,248,248,120
|
||||||
|
doorway,DC,0.1,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0197371,0.146326,0,0,0,0,368,0,1104,2,0,0,0.119558,0.146326,248,248,248,120
|
||||||
|
doorway,MC,0.1,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0167015,0.181178,0,0,0,0,184,0,552,2,0,0,0.199999,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0.1,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0205784,0.0967384,0,0,0,0,368,0,1104,2,0,0,0.0904763,0.0967384,248,248,248,120
|
||||||
|
doorway,DC,0.1,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0205784,0.0967384,0,0,0,0,368,0,1104,2,0,0,0.0904763,0.0967384,248,248,248,120
|
||||||
|
doorway,MC,0.1,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0177736,0.182204,0,0,0,0,184,0,552,2,0,0,0.199999,0.182204,124,124,124,60
|
||||||
|
doorway,Hybrid,0.1,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0166783,0.0697144,0,0,0,0,368,0,1104,2,0,0,0.0759249,0.0697144,248,248,248,120
|
||||||
|
doorway,DC,0.1,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0166783,0.0697144,0,0,0,0,368,0,1104,2,0,0,0.0759249,0.0697144,248,248,248,120
|
||||||
|
doorway,MC,0.1,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0203361,0.185696,0,0,0,0,184,0,552,2,0,0,0.199999,0.185696,124,124,124,60
|
||||||
|
doorway,Hybrid,0.1,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0191706,0.0841827,0,0,0,0,368,0,1104,2,0,0,0.123558,0.0841827,248,248,248,120
|
||||||
|
doorway,DC,0.1,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0191706,0.0841827,0,0,0,0,368,0,1104,2,0,0,0.123558,0.0841827,248,248,248,120
|
||||||
|
doorway,MC,0.1,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0164946,0.223603,0,0,0,0,164,0,492,1,0,0,0.22495,0.223603,110,110,110,54
|
||||||
|
doorway,Hybrid,0.1,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0086742,0.077863,0,0,0,0,328,0,984,1,0,0,0.12499,0.077863,220,220,220,108
|
||||||
|
doorway,DC,0.1,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0086742,0.077863,0,0,0,0,328,0,984,1,0,0,0.12499,0.077863,220,220,220,108
|
||||||
|
doorway,MC,0.1,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0169256,0.181178,0,0,0,0,184,0,552,2,0,0,0.225,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0.1,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0173633,0.147191,0,0,0,0,368,0,1104,2,0,0,0.123664,0.147191,248,248,248,120
|
||||||
|
doorway,DC,0.1,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0173633,0.147191,0,0,0,0,368,0,1104,2,0,0,0.123664,0.147191,248,248,248,120
|
||||||
|
doorway,MC,0.1,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0156844,0.181178,0,0,0,0,182,0,558,2,1,0,0.199999,0.181178,124,124,124,60
|
||||||
|
doorway,Hybrid,0.1,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0189207,0.0968317,0,0,0,0,368,0,1104,2,0,0,0.0904757,0.0968317,248,248,248,120
|
||||||
|
doorway,DC,0.1,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0189207,0.0968317,0,0,0,0,368,0,1104,2,0,0,0.0904757,0.0968317,248,248,248,120
|
||||||
|
doorway,MC,0.1,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0172273,0.182204,0,0,0,0,184,0,552,2,0,0,0.199999,0.182204,124,124,124,60
|
||||||
|
doorway,Hybrid,0.1,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0165077,0.1001,0,0,0,0,368,0,1104,2,0,0,0.087501,0.1001,248,248,248,120
|
||||||
|
doorway,DC,0.1,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0165077,0.1001,0,0,0,0,368,0,1104,2,0,0,0.087501,0.1001,248,248,248,120
|
||||||
|
doorway,MC,0.1,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0190111,0.176777,0,0,0,0,184,0,552,2,0,0,0.225,0.176777,124,124,124,60
|
||||||
|
doorway,Hybrid,0.1,0.1,0.2,true,0,0,0,0,0,1,0,true,0,0.018512,0.0983066,0,0,0,0,368,0,1104,2,0,0,0.123719,0.0983066,248,248,248,120
|
||||||
|
doorway,DC,0.1,0.1,0.2,true,0,0,0,0,0,1,0,true,0,0.018512,0.0983066,0,0,0,0,368,0,1104,2,0,0,0.123719,0.0983066,248,248,248,120
|
||||||
|
doorway,MC,0.1,0.15,0,true,0,0,0,0,0,0,0,true,0,0.0135681,0.300082,0,0,0,0,162,0,492,1,0,0,0.250006,0.300082,110,110,110,54
|
||||||
|
doorway,Hybrid,0.1,0.15,0,true,0,0,0,0,0,0,0,true,0,0.00241678,0.0782708,0,0,0,0,328,0,984,1,0,0,0.12499,0.0782708,220,220,220,108
|
||||||
|
doorway,DC,0.1,0.15,0,true,0,0,0,0,0,0,0,true,0,0.00241678,0.0782708,0,0,0,0,328,0,984,1,0,0,0.12499,0.0782708,220,220,220,108
|
||||||
|
doorway,MC,0.1,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.017149,0.189795,0,0,0,0,186,0,558,2,0,0,0.22495,0.189795,124,124,124,62
|
||||||
|
doorway,Hybrid,0.1,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0122199,0.129423,0,0,0,0,372,0,1116,2,0,0,0.124999,0.129423,248,248,248,124
|
||||||
|
doorway,DC,0.1,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0122199,0.129423,0,0,0,0,372,0,1116,2,0,0,0.124999,0.129423,248,248,248,124
|
||||||
|
doorway,MC,0.1,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0164016,0.197329,0,0,0,0,186,0,558,2,0,0,0.199974,0.197329,124,124,124,62
|
||||||
|
doorway,Hybrid,0.1,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0137126,0.100137,0,0,0,0,372,0,1116,2,0,0,0.0882718,0.100137,248,248,248,124
|
||||||
|
doorway,DC,0.1,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0137126,0.100137,0,0,0,0,372,0,1116,2,0,0,0.0882718,0.100137,248,248,248,124
|
||||||
|
doorway,MC,0.1,0.15,0.15,true,0,0,0,0,0,0,0,true,5,0.0167645,0.204799,3,1,0,0,184,0,560,2,0,1,0.199974,0.204799,124,124,124,62
|
||||||
|
doorway,Hybrid,0.1,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0112238,0.0970397,0,0,0,0,372,0,1116,2,0,0,0.0875002,0.0970397,248,248,248,124
|
||||||
|
doorway,DC,0.1,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0112238,0.0970397,0,0,0,0,372,0,1116,2,0,0,0.0875002,0.0970397,248,248,248,124
|
||||||
|
doorway,MC,0.1,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0185563,0.214365,0,0,0,0,186,0,558,2,0,0,0.22495,0.214365,124,124,124,62
|
||||||
|
doorway,Hybrid,0.1,0.15,0.2,true,0,0,0,0,0,1,0,true,0,0.0130352,0.0841827,0,0,0,0,372,0,1116,2,0,0,0.118877,0.0841827,248,248,248,124
|
||||||
|
doorway,DC,0.1,0.15,0.2,true,0,0,0,0,0,1,0,true,0,0.0130352,0.0841827,0,0,0,0,372,0,1116,2,0,0,0.118877,0.0841827,248,248,248,124
|
||||||
|
doorway,MC,0.1,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0144317,0.266231,0,0,0,0,162,0,492,1,0,0,0.227779,0.266231,110,110,110,54
|
||||||
|
doorway,Hybrid,0.1,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00519432,0.142988,0,0,0,0,328,0,984,1,0,0,0.125008,0.142988,220,220,220,108
|
||||||
|
doorway,DC,0.1,0.2,0,true,0,0,0,0,0,0,0,true,0,0.00519432,0.142988,0,0,0,0,328,0,984,1,0,0,0.125008,0.142988,220,220,220,108
|
||||||
|
doorway,MC,0.1,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0146438,0.185696,0,0,0,0,186,0,558,2,0,0,0.164287,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0.1,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0135159,0.128124,0,0,0,0,372,0,1116,2,0,0,0.122704,0.128124,248,248,248,124
|
||||||
|
doorway,DC,0.1,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0135159,0.128124,0,0,0,0,372,0,1116,2,0,0,0.122704,0.128124,248,248,248,124
|
||||||
|
doorway,MC,0.1,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0152401,0.169188,0,0,0,0,186,0,558,2,0,0,0.155554,0.169188,124,124,124,62
|
||||||
|
doorway,Hybrid,0.1,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0158019,0.0981847,0,0,0,0,372,0,1116,2,0,0,0.0882718,0.0981847,248,248,248,124
|
||||||
|
doorway,DC,0.1,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0158019,0.0981847,0,0,0,0,372,0,1116,2,0,0,0.0882718,0.0981847,248,248,248,124
|
||||||
|
doorway,MC,0.1,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0160761,0.171888,0,0,0,0,186,0,558,2,0,0,0.155554,0.171888,124,124,124,62
|
||||||
|
doorway,Hybrid,0.1,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0136694,0.0853152,0,0,0,0,372,0,1116,2,0,0,0.0850833,0.0853152,248,248,248,124
|
||||||
|
doorway,DC,0.1,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0136694,0.0853152,0,0,0,0,372,0,1116,2,0,0,0.0850833,0.0853152,248,248,248,124
|
||||||
|
doorway,MC,0.1,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0165897,0.185696,0,0,0,0,184,0,564,2,1,0,0.15,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0.1,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0142967,0.0841827,0,0,0,0,372,0,1116,2,0,0,0.118877,0.0841827,248,248,248,124
|
||||||
|
doorway,DC,0.1,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0142967,0.0841827,0,0,0,0,372,0,1116,2,0,0,0.118877,0.0841827,248,248,248,124
|
||||||
|
doorway,MC,0.15,0,0,true,0,0,0,0,0,0,0,true,0,0.0219382,0.204799,0,0,0,0,160,0,480,1,0,0,0.250008,0.204799,108,108,108,52
|
||||||
|
doorway,Hybrid,0.15,0,0,true,0,0,0,0,0,0,0,true,0,0.00491695,0.139735,0,0,0,0,320,0,960,1,0,0,0.12501,0.139735,216,216,216,104
|
||||||
|
doorway,DC,0.15,0,0,true,0,0,0,0,0,0,0,true,0,0.00491695,0.139735,0,0,0,0,320,0,960,1,0,0,0.12501,0.139735,216,216,216,104
|
||||||
|
doorway,MC,0.15,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0181673,0.188144,0,0,0,0,180,0,540,2,0,0,0.23125,0.188144,122,122,122,58
|
||||||
|
doorway,Hybrid,0.15,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0139343,0.0821419,0,0,0,0,360,0,1080,2,0,0,0.123414,0.0821419,244,244,244,116
|
||||||
|
doorway,DC,0.15,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0139343,0.0821419,0,0,0,0,360,0,1080,2,0,0,0.123414,0.0821419,244,244,244,116
|
||||||
|
doorway,MC,0.15,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0171504,0.197336,0,0,0,0,180,0,540,2,0,0,0.205555,0.197336,122,122,122,58
|
||||||
|
doorway,Hybrid,0.15,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0166435,0.0535698,0,0,0,0,360,0,1080,2,0,0,0.0785705,0.0535698,244,244,244,116
|
||||||
|
doorway,DC,0.15,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0166435,0.0535698,0,0,0,0,360,0,1080,2,0,0,0.0785705,0.0535698,244,244,244,116
|
||||||
|
doorway,MC,0.15,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0160058,0.2048,0,0,0,0,180,0,540,2,0,0,0.175001,0.2048,122,122,122,58
|
||||||
|
doorway,Hybrid,0.15,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0111265,0.0535698,0,0,0,0,360,0,1080,2,0,0,0.0785705,0.0535698,244,244,244,116
|
||||||
|
doorway,DC,0.15,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0111265,0.0535698,0,0,0,0,360,0,1080,2,0,0,0.0785705,0.0535698,244,244,244,116
|
||||||
|
doorway,MC,0.15,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0185103,0.214354,0,0,0,0,180,0,540,2,0,0,0.175001,0.214354,122,122,122,58
|
||||||
|
doorway,Hybrid,0.15,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0110957,0.0821419,0,0,0,0,360,0,1080,2,0,0,0.123683,0.0821419,244,244,244,116
|
||||||
|
doorway,DC,0.15,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0110957,0.0821419,0,0,0,0,360,0,1080,2,0,0,0.123683,0.0821419,244,244,244,116
|
||||||
|
doorway,MC,0.15,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0184365,0.214365,0,0,0,0,164,0,492,1,0,0,0.23125,0.214365,110,110,110,54
|
||||||
|
doorway,Hybrid,0.15,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0138869,0.152834,0,0,0,0,328,0,984,1,0,0,0.125008,0.152834,220,220,220,108
|
||||||
|
doorway,DC,0.15,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0138869,0.152834,0,0,0,0,328,0,984,1,0,0,0.125008,0.152834,220,220,220,108
|
||||||
|
doorway,MC,0.15,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0203289,0.185616,0,0,0,0,182,0,558,2,1,0,0.23125,0.185616,124,124,124,60
|
||||||
|
doorway,Hybrid,0.15,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0241966,0.143272,0,0,0,0,368,0,1104,2,0,0,0.122355,0.143272,248,248,248,120
|
||||||
|
doorway,DC,0.15,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0241966,0.143272,0,0,0,0,368,0,1104,2,0,0,0.122355,0.143272,248,248,248,120
|
||||||
|
doorway,MC,0.15,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0193637,0.186852,0,0,0,0,184,0,552,2,0,0,0.205555,0.186852,124,124,124,60
|
||||||
|
doorway,Hybrid,0.15,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.027002,0.0991547,0,0,0,0,368,0,1104,2,0,0,0.0927821,0.0991547,248,248,248,120
|
||||||
|
doorway,DC,0.15,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.027002,0.0991547,0,0,0,0,368,0,1104,2,0,0,0.0927821,0.0991547,248,248,248,120
|
||||||
|
doorway,MC,0.15,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0186798,0.182204,0,0,0,0,184,0,552,2,0,0,0.199999,0.182204,124,124,124,60
|
||||||
|
doorway,Hybrid,0.15,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0212096,0.0582823,0,0,0,0,368,0,1104,2,0,0,0.0785705,0.0582823,248,248,248,120
|
||||||
|
doorway,DC,0.15,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0212096,0.0582823,0,0,0,0,368,0,1104,2,0,0,0.0785705,0.0582823,248,248,248,120
|
||||||
|
doorway,MC,0.15,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.021242,0.185696,0,0,0,0,184,0,552,2,0,0,0.199999,0.185696,124,124,124,60
|
||||||
|
doorway,Hybrid,0.15,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0212641,0.0821419,0,0,0,0,368,0,1104,2,0,0,0.122382,0.0821419,248,248,248,120
|
||||||
|
doorway,DC,0.15,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0212641,0.0821419,0,0,0,0,368,0,1104,2,0,0,0.122382,0.0821419,248,248,248,120
|
||||||
|
doorway,MC,0.15,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0183402,0.223603,0,0,0,0,164,0,492,1,0,0,0.22495,0.223603,110,110,110,54
|
||||||
|
doorway,Hybrid,0.15,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0170581,0.0782521,0,0,0,0,328,0,984,1,0,0,0.124989,0.0782521,220,220,220,108
|
||||||
|
doorway,DC,0.15,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0170581,0.0782521,0,0,0,0,328,0,984,1,0,0,0.124989,0.0782521,220,220,220,108
|
||||||
|
doorway,MC,0.15,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0195878,0.186852,0,0,0,0,184,0,552,2,0,0,0.225,0.186852,124,124,124,60
|
||||||
|
doorway,Hybrid,0.15,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0278812,0.144956,0,0,0,0,368,0,1104,2,0,0,0.123015,0.144956,248,248,248,120
|
||||||
|
doorway,DC,0.15,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0278812,0.144956,0,0,0,0,368,0,1104,2,0,0,0.123015,0.144956,248,248,248,120
|
||||||
|
doorway,MC,0.15,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0189569,0.184634,0,0,0,0,182,0,558,2,1,0,0.205555,0.184634,124,124,124,60
|
||||||
|
doorway,Hybrid,0.15,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0315358,0.10072,0,0,0,0,368,0,1104,2,0,0,0.091549,0.10072,248,248,248,120
|
||||||
|
doorway,DC,0.15,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0315358,0.10072,0,0,0,0,368,0,1104,2,0,0,0.091549,0.10072,248,248,248,120
|
||||||
|
doorway,MC,0.15,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0186786,0.182204,0,0,0,0,184,0,552,2,0,0,0.199999,0.182204,124,124,124,60
|
||||||
|
doorway,Hybrid,0.15,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0277152,0.104165,0,0,0,0,368,0,1104,2,0,0,0.0944447,0.104165,248,248,248,120
|
||||||
|
doorway,DC,0.15,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0277152,0.104165,0,0,0,0,368,0,1104,2,0,0,0.0944447,0.104165,248,248,248,120
|
||||||
|
doorway,MC,0.15,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0204615,0.176777,0,0,0,0,184,0,552,2,0,0,0.225,0.176777,124,124,124,60
|
||||||
|
doorway,Hybrid,0.15,0.1,0.2,true,0,0,0,0,0,1,0,true,0,0.0273909,0.0922518,0,0,0,0,368,0,1104,2,0,0,0.124477,0.0922518,248,248,248,120
|
||||||
|
doorway,DC,0.15,0.1,0.2,true,0,0,0,0,0,1,0,true,0,0.0273909,0.0922518,0,0,0,0,368,0,1104,2,0,0,0.124477,0.0922518,248,248,248,120
|
||||||
|
doorway,MC,0.15,0.15,0,true,0,0,0,0,0,0,0,true,0,0.0135696,0.300082,0,0,0,0,164,0,492,1,0,0,0.250008,0.300082,110,110,110,54
|
||||||
|
doorway,Hybrid,0.15,0.15,0,true,0,0,0,0,0,0,0,true,0,0.00992392,0.0994671,0,0,0,0,327,0,981,1,0,0,0.125011,0.0994671,220,220,220,107
|
||||||
|
doorway,DC,0.15,0.15,0,true,0,0,0,0,0,0,0,true,0,0.00992392,0.0994671,0,0,0,0,327,0,981,1,0,0,0.125011,0.0994671,220,220,220,107
|
||||||
|
doorway,MC,0.15,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0180458,0.189795,0,0,0,0,186,0,558,2,0,0,0.22495,0.189795,124,124,124,62
|
||||||
|
doorway,Hybrid,0.15,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0212535,0.130353,0,0,0,0,372,0,1116,2,0,0,0.124999,0.130353,248,248,248,124
|
||||||
|
doorway,DC,0.15,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0212535,0.130353,0,0,0,0,372,0,1116,2,0,0,0.124999,0.130353,248,248,248,124
|
||||||
|
doorway,MC,0.15,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0178376,0.197329,0,0,0,0,186,0,558,2,0,0,0.199974,0.197329,124,124,124,62
|
||||||
|
doorway,Hybrid,0.15,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.024913,0.104165,0,0,0,0,372,0,1116,2,0,0,0.0917994,0.104165,248,248,248,124
|
||||||
|
doorway,DC,0.15,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.024913,0.104165,0,0,0,0,372,0,1116,2,0,0,0.0917994,0.104165,248,248,248,124
|
||||||
|
doorway,MC,0.15,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0167648,0.204799,0,0,0,0,184,0,564,2,1,0,0.199974,0.204799,124,124,124,62
|
||||||
|
doorway,Hybrid,0.15,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0220908,0.0982441,0,0,0,0,372,0,1116,2,0,0,0.0937496,0.0982441,248,248,248,124
|
||||||
|
doorway,DC,0.15,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0220908,0.0982441,0,0,0,0,372,0,1116,2,0,0,0.0937496,0.0982441,248,248,248,124
|
||||||
|
doorway,MC,0.15,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0185567,0.214365,0,0,0,0,186,0,558,2,0,0,0.22495,0.214365,124,124,124,62
|
||||||
|
doorway,Hybrid,0.15,0.15,0.2,true,0,0,0,0,0,1,0,true,0,0.0213783,0.0821419,0,0,0,0,372,0,1116,2,0,0,0.120238,0.0821419,248,248,248,124
|
||||||
|
doorway,DC,0.15,0.15,0.2,true,0,0,0,0,0,1,0,true,0,0.0213783,0.0821419,0,0,0,0,372,0,1116,2,0,0,0.120238,0.0821419,248,248,248,124
|
||||||
|
doorway,MC,0.15,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0152448,0.266231,0,0,0,0,164,0,492,1,0,0,0.23125,0.266231,110,110,110,54
|
||||||
|
doorway,Hybrid,0.15,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0126504,0.131591,0,0,0,0,328,0,984,1,0,0,0.125008,0.131591,220,220,220,108
|
||||||
|
doorway,DC,0.15,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0126504,0.131591,0,0,0,0,328,0,984,1,0,0,0.125008,0.131591,220,220,220,108
|
||||||
|
doorway,MC,0.15,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0161944,0.185696,0,0,0,0,186,0,558,2,0,0,0.164287,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0.15,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0221697,0.140278,0,0,0,0,372,0,1116,2,0,0,0.123809,0.140278,248,248,248,124
|
||||||
|
doorway,DC,0.15,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0221697,0.140278,0,0,0,0,372,0,1116,2,0,0,0.123809,0.140278,248,248,248,124
|
||||||
|
doorway,MC,0.15,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0173384,0.169188,0,0,0,0,186,0,558,2,0,0,0.155554,0.169188,124,124,124,62
|
||||||
|
doorway,Hybrid,0.15,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0265265,0.101527,0,0,0,0,372,0,1116,2,0,0,0.0917994,0.101527,248,248,248,124
|
||||||
|
doorway,DC,0.15,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0265265,0.101527,0,0,0,0,372,0,1116,2,0,0,0.0917994,0.101527,248,248,248,124
|
||||||
|
doorway,MC,0.15,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0167409,0.171888,0,0,0,0,186,0,558,2,0,0,0.155554,0.171888,124,124,124,62
|
||||||
|
doorway,Hybrid,0.15,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.023688,0.0997552,0,0,0,0,372,0,1116,2,0,0,0.0860296,0.0997552,248,248,248,124
|
||||||
|
doorway,DC,0.15,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.023688,0.0997552,0,0,0,0,372,0,1116,2,0,0,0.0860296,0.0997552,248,248,248,124
|
||||||
|
doorway,MC,0.15,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0172506,0.185696,0,0,0,0,184,0,564,2,1,0,0.15,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0.15,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0226143,0.0821419,0,0,0,0,372,0,1116,2,0,0,0.120238,0.0821419,248,248,248,124
|
||||||
|
doorway,DC,0.15,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0226143,0.0821419,0,0,0,0,372,0,1116,2,0,0,0.120238,0.0821419,248,248,248,124
|
||||||
|
doorway,MC,0.2,0,0,true,0,0,0,0,0,0,0,true,0,0.0219382,0.204799,0,0,0,0,160,0,480,1,0,0,0.250008,0.204799,108,108,108,52
|
||||||
|
doorway,Hybrid,0.2,0,0,true,0,0,0,0,0,0,0,true,0,0.00327,0.139739,0,0,0,0,320,0,960,1,0,0,0.125011,0.139739,216,216,216,104
|
||||||
|
doorway,DC,0.2,0,0,true,0,0,0,0,0,0,0,true,0,0.00327,0.139739,0,0,0,0,320,0,960,1,0,0,0.125011,0.139739,216,216,216,104
|
||||||
|
doorway,MC,0.2,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0195166,0.189814,0,0,0,0,180,0,540,2,0,0,0.235715,0.189814,122,122,122,58
|
||||||
|
doorway,Hybrid,0.2,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0138318,0.0833359,0,0,0,0,360,0,1080,2,0,0,0.122193,0.0833359,244,244,244,116
|
||||||
|
doorway,DC,0.2,0,0.05,true,0,0,0,0,0,0,0,true,0,0.0138318,0.0833359,0,0,0,0,360,0,1080,2,0,0,0.122193,0.0833359,244,244,244,116
|
||||||
|
doorway,MC,0.2,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0192535,0.199998,0,0,0,0,180,0,540,2,0,0,0.2125,0.199998,122,122,122,58
|
||||||
|
doorway,Hybrid,0.2,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0145236,0.0555534,0,0,0,0,360,0,1080,2,0,0,0.0805541,0.0555534,244,244,244,116
|
||||||
|
doorway,DC,0.2,0,0.1,true,0,0,0,0,0,0,0,true,0,0.0145236,0.0555534,0,0,0,0,360,0,1080,2,0,0,0.0805541,0.0555534,244,244,244,116
|
||||||
|
doorway,MC,0.2,0,0.15,true,0,0,0,0,0,0,0,true,0,0.0185308,0.208005,0,0,0,0,180,0,540,2,0,0,0.183334,0.208005,122,122,122,58
|
||||||
|
doorway,Hybrid,0.2,0,0.15,true,0,0,0,0,0,0,0,true,0,0.00723069,0.0555534,0,0,0,0,360,0,1080,2,0,0,0.0805541,0.0555534,244,244,244,116
|
||||||
|
doorway,DC,0.2,0,0.15,true,0,0,0,0,0,0,0,true,0,0.00723069,0.0555534,0,0,0,0,360,0,1080,2,0,0,0.0805541,0.0555534,244,244,244,116
|
||||||
|
doorway,MC,0.2,0,0.2,true,0,0,0,0,0,0,0,true,0,0.0185103,0.214354,0,0,0,0,180,0,540,2,0,0,0.175001,0.214354,122,122,122,58
|
||||||
|
doorway,Hybrid,0.2,0,0.2,true,0,0,0,0,0,0,0,true,0,0.00818151,0.0833359,0,0,0,0,360,0,1080,2,0,0,0.124751,0.0833359,244,244,244,116
|
||||||
|
doorway,DC,0.2,0,0.2,true,0,0,0,0,0,0,0,true,0,0.00818151,0.0833359,0,0,0,0,360,0,1080,2,0,0,0.124751,0.0833359,244,244,244,116
|
||||||
|
doorway,MC,0.2,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0199175,0.214365,0,0,0,0,164,0,492,1,0,0,0.235715,0.214365,110,110,110,54
|
||||||
|
doorway,Hybrid,0.2,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0142666,0.158352,0,0,0,0,328,0,984,1,0,0,0.125011,0.158352,220,220,220,108
|
||||||
|
doorway,DC,0.2,0.05,0,true,0,0,0,0,0,0,0,true,0,0.0142666,0.158352,0,0,0,0,328,0,984,1,0,0,0.125011,0.158352,220,220,220,108
|
||||||
|
doorway,MC,0.2,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0229608,0.191931,0,0,0,0,182,0,558,2,1,0,0.235715,0.191931,124,124,124,60
|
||||||
|
doorway,Hybrid,0.2,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0256223,0.132502,0,0,0,0,368,0,1104,2,0,0,0.121685,0.132502,248,248,248,120
|
||||||
|
doorway,DC,0.2,0.05,0.05,true,0,0,0,0,0,0,0,true,0,0.0256223,0.132502,0,0,0,0,368,0,1104,2,0,0,0.121685,0.132502,248,248,248,120
|
||||||
|
doorway,MC,0.2,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.022729,0.194024,0,0,0,0,184,0,552,2,0,0,0.2125,0.194024,124,124,124,60
|
||||||
|
doorway,Hybrid,0.2,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0264557,0.0927789,0,0,0,0,368,0,1104,2,0,0,0.0961419,0.0927789,248,248,248,120
|
||||||
|
doorway,DC,0.2,0.05,0.1,true,0,0,0,0,0,0,0,true,0,0.0264557,0.0927789,0,0,0,0,368,0,1104,2,0,0,0.0961419,0.0927789,248,248,248,120
|
||||||
|
doorway,MC,0.2,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0224575,0.190031,0,0,0,0,184,0,552,2,0,0,0.199999,0.190031,124,124,124,60
|
||||||
|
doorway,Hybrid,0.2,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0192345,0.0624248,0,0,0,0,368,0,1104,2,0,0,0.0805541,0.0624248,248,248,248,120
|
||||||
|
doorway,DC,0.2,0.05,0.15,true,0,0,0,0,0,0,0,true,0,0.0192345,0.0624248,0,0,0,0,368,0,1104,2,0,0,0.0805541,0.0624248,248,248,248,120
|
||||||
|
doorway,MC,0.2,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.0224073,0.185696,0,0,0,0,184,0,552,2,0,0,0.199999,0.185696,124,124,124,60
|
||||||
|
doorway,Hybrid,0.2,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.019661,0.0833359,0,0,0,0,368,0,1104,2,0,0,0.1234,0.0833359,248,248,248,120
|
||||||
|
doorway,DC,0.2,0.05,0.2,true,0,0,0,0,0,0,0,true,0,0.019661,0.0833359,0,0,0,0,368,0,1104,2,0,0,0.1234,0.0833359,248,248,248,120
|
||||||
|
doorway,MC,0.2,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0206484,0.223603,0,0,0,0,164,0,492,1,0,0,0.22495,0.223603,110,110,110,54
|
||||||
|
doorway,Hybrid,0.2,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0154152,0.0793886,0,0,0,0,328,0,984,1,0,0,0.124983,0.0793886,220,220,220,108
|
||||||
|
doorway,DC,0.2,0.1,0,true,0,0,0,0,0,0,0,true,0,0.0154152,0.0793886,0,0,0,0,328,0,984,1,0,0,0.124983,0.0793886,220,220,220,108
|
||||||
|
doorway,MC,0.2,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0229531,0.194024,0,0,0,0,184,0,552,2,0,0,0.225,0.194024,124,124,124,60
|
||||||
|
doorway,Hybrid,0.2,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0275065,0.150311,0,0,0,0,368,0,1104,2,0,0,0.123951,0.150311,248,248,248,120
|
||||||
|
doorway,DC,0.2,0.1,0.05,true,0,0,0,0,0,0,0,true,0,0.0275065,0.150311,0,0,0,0,368,0,1104,2,0,0,0.123951,0.150311,248,248,248,120
|
||||||
|
doorway,MC,0.2,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0230478,0.194455,0,0,0,0,182,0,558,2,1,0,0.2125,0.194455,124,124,124,60
|
||||||
|
doorway,Hybrid,0.2,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0293116,0.0944362,0,0,0,0,368,0,1104,2,0,0,0.094503,0.0944362,248,248,248,120
|
||||||
|
doorway,DC,0.2,0.1,0.1,true,0,0,0,0,0,0,0,true,0,0.0293116,0.0944362,0,0,0,0,368,0,1104,2,0,0,0.094503,0.0944362,248,248,248,120
|
||||||
|
doorway,MC,0.2,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0231779,0.186853,0,0,0,0,184,0,552,2,0,0,0.199999,0.186853,124,124,124,60
|
||||||
|
doorway,Hybrid,0.2,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0243336,0.0997738,0,0,0,0,368,0,1104,2,0,0,0.0923068,0.0997738,248,248,248,120
|
||||||
|
doorway,DC,0.2,0.1,0.15,true,0,0,0,0,0,0,0,true,0,0.0243336,0.0997738,0,0,0,0,368,0,1104,2,0,0,0.0923068,0.0997738,248,248,248,120
|
||||||
|
doorway,MC,0.2,0.1,0.2,true,0,0,0,0,0,0,0,true,0,0.0222743,0.176777,0,0,0,0,184,0,552,2,0,0,0.225,0.176777,124,124,124,60
|
||||||
|
doorway,Hybrid,0.2,0.1,0.2,true,0,0,0,0,0,1,0,true,0,0.0240816,0.0968483,0,0,0,0,368,0,1104,2,0,0,0.124891,0.0968483,248,248,248,120
|
||||||
|
doorway,DC,0.2,0.1,0.2,true,0,0,0,0,0,1,0,true,0,0.0240816,0.0968483,0,0,0,0,368,0,1104,2,0,0,0.124891,0.0968483,248,248,248,120
|
||||||
|
doorway,MC,0.2,0.15,0,true,0,0,0,0,0,0,0,true,0,0.016341,0.300082,0,0,0,0,164,0,492,1,0,0,0.250008,0.300082,110,110,110,54
|
||||||
|
doorway,Hybrid,0.2,0.15,0,true,0,0,0,0,0,0,0,true,0,0.00588265,0.0886143,0,0,0,0,327,0,981,1,0,0,0.12501,0.0886143,220,220,220,107
|
||||||
|
doorway,DC,0.2,0.15,0,true,0,0,0,0,0,0,0,true,0,0.00588265,0.0886143,0,0,0,0,327,0,981,1,0,0,0.12501,0.0886143,220,220,220,107
|
||||||
|
doorway,MC,0.2,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0217829,0.190031,0,0,0,0,186,0,558,2,0,0,0.22495,0.190031,124,124,124,62
|
||||||
|
doorway,Hybrid,0.2,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0190787,0.133946,0,0,0,0,372,0,1116,2,0,0,0.124207,0.133946,248,248,248,124
|
||||||
|
doorway,DC,0.2,0.15,0.05,true,0,0,0,0,0,0,0,true,0,0.0190787,0.133946,0,0,0,0,372,0,1116,2,0,0,0.124207,0.133946,248,248,248,124
|
||||||
|
doorway,MC,0.2,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0222886,0.197329,0,0,0,0,186,0,558,2,0,0,0.199974,0.197329,124,124,124,62
|
||||||
|
doorway,Hybrid,0.2,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0210917,0.0995657,0,0,0,0,372,0,1116,2,0,0,0.0944442,0.0995657,248,248,248,124
|
||||||
|
doorway,DC,0.2,0.15,0.1,true,0,0,0,0,0,0,0,true,0,0.0210917,0.0995657,0,0,0,0,372,0,1116,2,0,0,0.0944442,0.0995657,248,248,248,124
|
||||||
|
doorway,MC,0.2,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.0216125,0.204799,0,0,0,0,184,0,564,2,1,0,0.199974,0.204799,124,124,124,62
|
||||||
|
doorway,Hybrid,0.2,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.016509,0.0916364,0,0,0,0,372,0,1116,2,0,0,0.0923068,0.0916364,248,248,248,124
|
||||||
|
doorway,DC,0.2,0.15,0.15,true,0,0,0,0,0,0,0,true,0,0.016509,0.0916364,0,0,0,0,372,0,1116,2,0,0,0.0923068,0.0916364,248,248,248,124
|
||||||
|
doorway,MC,0.2,0.15,0.2,true,0,0,0,0,0,0,0,true,0,0.0207085,0.214365,0,0,0,0,186,0,558,2,0,0,0.22495,0.214365,124,124,124,62
|
||||||
|
doorway,Hybrid,0.2,0.15,0.2,true,0,0,0,0,0,1,0,true,0,0.0161903,0.0833359,0,0,0,0,372,0,1116,2,0,0,0.119444,0.0833359,248,248,248,124
|
||||||
|
doorway,DC,0.2,0.15,0.2,true,0,0,0,0,0,1,0,true,0,0.0161903,0.0833359,0,0,0,0,372,0,1116,2,0,0,0.119444,0.0833359,248,248,248,124
|
||||||
|
doorway,MC,0.2,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0182433,0.27733,0,0,0,0,164,0,492,1,0,0,0.235715,0.27733,110,110,110,54
|
||||||
|
doorway,Hybrid,0.2,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0104069,0.132274,0,0,0,0,328,0,984,1,0,0,0.125011,0.132274,220,220,220,108
|
||||||
|
doorway,DC,0.2,0.2,0,true,0,0,0,0,0,0,0,true,0,0.0104069,0.132274,0,0,0,0,328,0,984,1,0,0,0.125011,0.132274,220,220,220,108
|
||||||
|
doorway,MC,0.2,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0197458,0.185696,0,0,0,0,186,0,558,2,0,0,0.164287,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0.2,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0212429,0.137119,0,0,0,0,372,0,1116,2,0,0,0.124439,0.137119,248,248,248,124
|
||||||
|
doorway,DC,0.2,0.2,0.05,true,0,0,0,0,0,0,0,true,0,0.0212429,0.137119,0,0,0,0,372,0,1116,2,0,0,0.124439,0.137119,248,248,248,124
|
||||||
|
doorway,MC,0.2,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0215346,0.169188,0,0,0,0,186,0,558,2,0,0,0.155554,0.169188,124,124,124,62
|
||||||
|
doorway,Hybrid,0.2,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0237731,0.102103,0,0,0,0,372,0,1116,2,0,0,0.0944442,0.102103,248,248,248,124
|
||||||
|
doorway,DC,0.2,0.2,0.1,true,0,0,0,0,0,0,0,true,0,0.0237731,0.102103,0,0,0,0,372,0,1116,2,0,0,0.0944442,0.102103,248,248,248,124
|
||||||
|
doorway,MC,0.2,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0213021,0.171888,0,0,0,0,186,0,558,2,0,0,0.155554,0.171888,124,124,124,62
|
||||||
|
doorway,Hybrid,0.2,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0197054,0.0940458,0,0,0,0,372,0,1116,2,0,0,0.0855831,0.0940458,248,248,248,124
|
||||||
|
doorway,DC,0.2,0.2,0.15,true,0,0,0,0,0,0,0,true,0,0.0197054,0.0940458,0,0,0,0,372,0,1116,2,0,0,0.0855831,0.0940458,248,248,248,124
|
||||||
|
doorway,MC,0.2,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0196627,0.185696,0,0,0,0,184,0,564,2,1,0,0.15,0.185696,124,124,124,62
|
||||||
|
doorway,Hybrid,0.2,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0187502,0.0833359,0,0,0,0,370,0,1122,2,1,0,0.119444,0.0833359,248,248,248,124
|
||||||
|
doorway,DC,0.2,0.2,0.2,true,0,0,0,0,0,0,0,true,0,0.0187502,0.0833359,0,0,0,0,370,0,1122,2,1,0,0.119444,0.0833359,248,248,248,124
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <limits>
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
@@ -42,6 +43,11 @@ namespace VoxelHybridSharpMesher
|
|||||||
else V.Z = Value;
|
else V.Z = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline int32 IntAxisValue(const FIntVector& V, int32 Axis)
|
||||||
|
{
|
||||||
|
return Axis == 0 ? V.X : (Axis == 1 ? V.Y : V.Z);
|
||||||
|
}
|
||||||
|
|
||||||
struct FPlane
|
struct FPlane
|
||||||
{
|
{
|
||||||
uint64 Id = 0;
|
uint64 Id = 0;
|
||||||
@@ -223,6 +229,106 @@ namespace VoxelHybridSharpMesher
|
|||||||
return SDF;
|
return SDF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct FPreparedFeatureBox
|
||||||
|
{
|
||||||
|
uint64 StableId = 0;
|
||||||
|
double Minimum[3]{};
|
||||||
|
double Maximum[3]{};
|
||||||
|
};
|
||||||
|
|
||||||
|
inline std::vector<FPreparedFeatureBox> PrepareFeatureBoxes(
|
||||||
|
const TArray<FVoxelHybridSharpFeatureBox>& Features)
|
||||||
|
{
|
||||||
|
std::vector<FPreparedFeatureBox> Prepared;
|
||||||
|
Prepared.reserve(static_cast<std::size_t>(Features.Num()));
|
||||||
|
for (const FVoxelHybridSharpFeatureBox& Feature : Features)
|
||||||
|
{
|
||||||
|
FPreparedFeatureBox Box;
|
||||||
|
Box.StableId = Feature.StableId;
|
||||||
|
for (int32 Axis = 0; Axis < 3; ++Axis)
|
||||||
|
{
|
||||||
|
Box.Minimum[Axis] = static_cast<double>(Feature.MinimumSubvoxels[Axis])
|
||||||
|
/ SubvoxelsPerVoxel;
|
||||||
|
Box.Maximum[Axis] = static_cast<double>(Feature.MaximumSubvoxels[Axis])
|
||||||
|
/ SubvoxelsPerVoxel;
|
||||||
|
}
|
||||||
|
Prepared.push_back(Box);
|
||||||
|
}
|
||||||
|
return Prepared;
|
||||||
|
}
|
||||||
|
|
||||||
|
// MC interpolation can move a finite hard box's zero crossing away from its analytic face.
|
||||||
|
// V2 retains MC connectivity and snaps only interior tile roots that cross a tagged face.
|
||||||
|
inline bool TrySnapFeatureEdge(const std::vector<FPreparedFeatureBox>& Features,
|
||||||
|
const FIntVector& OriginVoxels, const FIntVector& LocalStart, int32 Axis,
|
||||||
|
const FVector& ChunkWorldPos, float GeometryVoxelSize,
|
||||||
|
FVector& InOutWorldPosition, FVector& OutNormal, uint64& OutSplitKey)
|
||||||
|
{
|
||||||
|
const double EdgeStart = static_cast<double>(IntAxisValue(OriginVoxels, Axis)
|
||||||
|
+ IntAxisValue(LocalStart, Axis));
|
||||||
|
const double EdgeEnd = EdgeStart + 1.0;
|
||||||
|
const double EdgeLow = FMath::Min(EdgeStart, EdgeEnd);
|
||||||
|
const double EdgeHigh = FMath::Max(EdgeStart, EdgeEnd);
|
||||||
|
const double RootVoxel = static_cast<double>(IntAxisValue(OriginVoxels, Axis))
|
||||||
|
+ (AxisValue(InOutWorldPosition, Axis) - AxisValue(ChunkWorldPos, Axis))
|
||||||
|
/ GeometryVoxelSize;
|
||||||
|
constexpr double Tolerance = 1.0e-9;
|
||||||
|
double BestDistance = std::numeric_limits<double>::infinity();
|
||||||
|
uint64 BestStableId = std::numeric_limits<uint64>::max();
|
||||||
|
uint64 BestFaceId = 0;
|
||||||
|
double BestPlane = 0.0;
|
||||||
|
int32 BestSide = 0;
|
||||||
|
|
||||||
|
for (const FPreparedFeatureBox& Feature : Features)
|
||||||
|
{
|
||||||
|
bool bWithinFaceSpan = true;
|
||||||
|
for (int32 OtherAxis = 0; OtherAxis < 3; ++OtherAxis)
|
||||||
|
{
|
||||||
|
if (OtherAxis == Axis) continue;
|
||||||
|
const double Coordinate = static_cast<double>(IntAxisValue(OriginVoxels, OtherAxis)
|
||||||
|
+ IntAxisValue(LocalStart, OtherAxis));
|
||||||
|
if (Coordinate < Feature.Minimum[OtherAxis] - Tolerance
|
||||||
|
|| Coordinate > Feature.Maximum[OtherAxis] + Tolerance)
|
||||||
|
{
|
||||||
|
bWithinFaceSpan = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!bWithinFaceSpan) continue;
|
||||||
|
|
||||||
|
for (int32 Side = 0; Side < 2; ++Side)
|
||||||
|
{
|
||||||
|
const double Plane = Side == 0
|
||||||
|
? Feature.Minimum[Axis] : Feature.Maximum[Axis];
|
||||||
|
if (Plane < EdgeLow - Tolerance || Plane > EdgeHigh + Tolerance) continue;
|
||||||
|
const double Distance = FMath::Abs(Plane - RootVoxel);
|
||||||
|
const uint64 FaceId = Feature.StableId ^ (0x9e3779b97f4a7c15ull
|
||||||
|
+ static_cast<uint64>(Axis * 2 + Side + 1));
|
||||||
|
if (Distance > BestDistance + Tolerance
|
||||||
|
|| (FMath::Abs(Distance - BestDistance) <= Tolerance
|
||||||
|
&& std::tie(Feature.StableId, FaceId)
|
||||||
|
>= std::tie(BestStableId, BestFaceId)))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
BestDistance = Distance;
|
||||||
|
BestStableId = Feature.StableId;
|
||||||
|
BestFaceId = FaceId != 0 ? FaceId : static_cast<uint64>(Axis + 1);
|
||||||
|
BestPlane = Plane;
|
||||||
|
BestSide = Side;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BestFaceId == 0) return false;
|
||||||
|
SetAxisValue(InOutWorldPosition, Axis, AxisValue(ChunkWorldPos, Axis)
|
||||||
|
+ (BestPlane - static_cast<double>(IntAxisValue(OriginVoxels, Axis)))
|
||||||
|
* GeometryVoxelSize);
|
||||||
|
OutNormal = FVector::ZeroVector;
|
||||||
|
SetAxisValue(OutNormal, Axis, BestSide == 0 ? -1.0 : 1.0);
|
||||||
|
OutSplitKey = BestFaceId;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
inline uint64 SelectFeature(const FRoot& Root, int32 Axis)
|
inline uint64 SelectFeature(const FRoot& Root, int32 Axis)
|
||||||
{
|
{
|
||||||
if (Root.Planes.empty()) return 0;
|
if (Root.Planes.empty()) return 0;
|
||||||
|
|||||||
@@ -1371,8 +1371,9 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
// tile edge use MC there, preserving the existing MC-to-MC clipmap transition and skirts.
|
// tile edge use MC there, preserving the existing MC-to-MC clipmap transition and skirts.
|
||||||
// Le DC reste limite aux surfaces LOD0 balisees; les patches connectes au bord restent MC.
|
// Le DC reste limite aux surfaces LOD0 balisees; les patches connectes au bord restent MC.
|
||||||
VoxelHybridSharpMesher::FResult HybridResult;
|
VoxelHybridSharpMesher::FResult HybridResult;
|
||||||
if (bUseHybridSharpMesher && Step == 1 && CellsPerAxis == CHUNK_SIZE
|
const bool bHybridLod0Interior = Step == 1 && CellsPerAxis == CHUNK_SIZE
|
||||||
&& CzLo == 0 && CzHi == CellsPerAxis - 1 && !HybridSharpFeatures.IsEmpty())
|
&& CzLo == 0 && CzHi == CellsPerAxis - 1 && !HybridSharpFeatures.IsEmpty();
|
||||||
|
if (bUseHybridSharpMesher && bHybridLod0Interior)
|
||||||
{
|
{
|
||||||
HybridResult = VoxelHybridSharpMesher::Generate(
|
HybridResult = VoxelHybridSharpMesher::Generate(
|
||||||
CellsPerAxis, Step, IsoLevel, GeometryVoxelSize, OriginVoxels, ChunkWorldPos,
|
CellsPerAxis, Step, IsoLevel, GeometryVoxelSize, OriginVoxels, ChunkWorldPos,
|
||||||
@@ -1380,6 +1381,11 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
[&](int32 X, int32 Y, int32 Z) { return SampleG(X, Y, Z); },
|
[&](int32 X, int32 Y, int32 Z) { return SampleG(X, Y, Z); },
|
||||||
[&](int32 X, int32 Y, int32 Z) { return GradAt(X, Y, Z); });
|
[&](int32 X, int32 Y, int32 Z) { return GradAt(X, Y, Z); });
|
||||||
}
|
}
|
||||||
|
const bool bHybridSharpSnap = bUseHybridSharpFeatureSnap && bHybridLod0Interior;
|
||||||
|
const std::vector<VoxelHybridSharpMesher::FPreparedFeatureBox> PreparedSharpFeatures =
|
||||||
|
bHybridSharpSnap
|
||||||
|
? VoxelHybridSharpMesher::PrepareFeatureBoxes(HybridSharpFeatures)
|
||||||
|
: std::vector<VoxelHybridSharpMesher::FPreparedFeatureBox>{};
|
||||||
|
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
// ITÉRATION SUR LES CELLULES
|
// ITÉRATION SUR LES CELLULES
|
||||||
@@ -1543,6 +1549,7 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
? FPlatformTime::Cycles64() : 0;
|
? FPlatformTime::Cycles64() : 0;
|
||||||
FVector EdgeVertices[12];
|
FVector EdgeVertices[12];
|
||||||
FVector EdgeNormals[12];
|
FVector EdgeNormals[12];
|
||||||
|
uint64 EdgeSplitKeys[12]{};
|
||||||
for (int32 i = 0; i < 12; i++)
|
for (int32 i = 0; i < 12; i++)
|
||||||
{
|
{
|
||||||
if (MCEdgeTable[CaseIndex] & (1 << i))
|
if (MCEdgeTable[CaseIndex] & (1 << i))
|
||||||
@@ -1578,6 +1585,28 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
}
|
}
|
||||||
EdgeVertices[i] = Positions[A] + T * (Positions[B] - Positions[A]);
|
EdgeVertices[i] = Positions[A] + T * (Positions[B] - Positions[A]);
|
||||||
EdgeNormals[i] = Gradients[A] + T * (Gradients[B] - Gradients[A]);
|
EdgeNormals[i] = Gradients[A] + T * (Gradients[B] - Gradients[A]);
|
||||||
|
if (bHybridSharpSnap)
|
||||||
|
{
|
||||||
|
const int32 Axis = CornerOffsets[A].X != CornerOffsets[B].X ? 0
|
||||||
|
: (CornerOffsets[A].Y != CornerOffsets[B].Y ? 1 : 2);
|
||||||
|
const FIntVector LocalStart(cx + CornerOffsets[A].X,
|
||||||
|
cy + CornerOffsets[A].Y, cz + CornerOffsets[A].Z);
|
||||||
|
// All cells incident to this lattice edge must stay interior so
|
||||||
|
// the shared root cannot disagree across a tile-border cell.
|
||||||
|
const bool bCanSnapEdge = bHybridSharpSnap
|
||||||
|
&& LocalStart.X >= 2 && LocalStart.Y >= 2 && LocalStart.Z >= 2
|
||||||
|
&& LocalStart.X <= CellsPerAxis - 2
|
||||||
|
&& LocalStart.Y <= CellsPerAxis - 2
|
||||||
|
&& LocalStart.Z <= CellsPerAxis - 2;
|
||||||
|
FVector AnalyticNormal;
|
||||||
|
if (bCanSnapEdge && VoxelHybridSharpMesher::TrySnapFeatureEdge(
|
||||||
|
PreparedSharpFeatures, OriginVoxels, LocalStart, Axis,
|
||||||
|
ChunkWorldPos, GeometryVoxelSize, EdgeVertices[i],
|
||||||
|
AnalyticNormal, EdgeSplitKeys[i]))
|
||||||
|
{
|
||||||
|
EdgeNormals[i] = AnalyticNormal;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bSampleCell)
|
if (bSampleCell)
|
||||||
@@ -1600,9 +1629,12 @@ FVoxelMeshData UVoxelMarchingCubesMesher::GenerateMesh(FIntVector OriginVoxels,
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const int32 Idx0 = GetOrCreateVertex(EdgeVertices[E0], EdgeNormals[E0]);
|
const int32 Idx0 = GetOrCreateVertex(
|
||||||
const int32 Idx1 = GetOrCreateVertex(EdgeVertices[E1], EdgeNormals[E1]);
|
EdgeVertices[E0], EdgeNormals[E0], EdgeSplitKeys[E0]);
|
||||||
const int32 Idx2 = GetOrCreateVertex(EdgeVertices[E2], EdgeNormals[E2]);
|
const int32 Idx1 = GetOrCreateVertex(
|
||||||
|
EdgeVertices[E1], EdgeNormals[E1], EdgeSplitKeys[E1]);
|
||||||
|
const int32 Idx2 = GetOrCreateVertex(
|
||||||
|
EdgeVertices[E2], EdgeNormals[E2], EdgeSplitKeys[E2]);
|
||||||
|
|
||||||
TArray<int32>* Dst = &GroundTris;
|
TArray<int32>* Dst = &GroundTris;
|
||||||
if (!bStandaloneSkipMaterialGroups)
|
if (!bStandaloneSkipMaterialGroups)
|
||||||
|
|||||||
@@ -128,6 +128,13 @@ public:
|
|||||||
bUseHybridSharpMesher = true;
|
bUseHybridSharpMesher = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Version 2 keeps MC topology and projects eligible LOD0 edge roots onto exact box planes.
|
||||||
|
void SetHybridSharpFeatureSnap(TArray<FVoxelHybridSharpFeatureBox>&& InFeatures)
|
||||||
|
{
|
||||||
|
HybridSharpFeatures = MoveTemp(InFeatures);
|
||||||
|
bUseHybridSharpFeatureSnap = true;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FORCEINLINE bool ShouldAbortWork() const
|
FORCEINLINE bool ShouldAbortWork() const
|
||||||
{
|
{
|
||||||
@@ -139,6 +146,7 @@ private:
|
|||||||
const FStandaloneShapeWorld* ShapeWorldContext = nullptr;
|
const FStandaloneShapeWorld* ShapeWorldContext = nullptr;
|
||||||
TArray<FVoxelHybridSharpFeatureBox> HybridSharpFeatures;
|
TArray<FVoxelHybridSharpFeatureBox> HybridSharpFeatures;
|
||||||
bool bUseHybridSharpMesher = false;
|
bool bUseHybridSharpMesher = false;
|
||||||
|
bool bUseHybridSharpFeatureSnap = false;
|
||||||
float GeometryVoxelSizeCm = VOXEL_SIZE;
|
float GeometryVoxelSizeCm = VOXEL_SIZE;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
param(
|
param(
|
||||||
[ValidateRange(60, 900)][int]$TimeoutSeconds = 900,
|
[ValidateRange(60, 900)][int]$TimeoutSeconds = 900,
|
||||||
[string]$WorldAssemblyManifestPath = '',
|
[string]$WorldAssemblyManifestPath = '',
|
||||||
[ValidateSet('MarchingCubesV1', 'WorldAssemblerHybridV1')][string]$CoreMesherRecipe = 'MarchingCubesV1',
|
[ValidateSet('MarchingCubesV1', 'WorldAssemblerHybridV1', 'WorldAssemblerHybridV2')][string]$CoreMesherRecipe = 'MarchingCubesV1',
|
||||||
[switch]$EnableHybridFixturePlacement,
|
[switch]$EnableHybridFixturePlacement,
|
||||||
[switch]$HybridCliffOnly,
|
[switch]$HybridCliffOnly,
|
||||||
[switch]$HybridFixturesOnly
|
[switch]$HybridFixturesOnly
|
||||||
@@ -87,17 +87,17 @@ $ManifestData = Get-Content -LiteralPath $StagedWorldAssembly -Raw | ConvertFrom
|
|||||||
if ($ManifestData.content_hash -ne '8933693d9560ba9f') {
|
if ($ManifestData.content_hash -ne '8933693d9560ba9f') {
|
||||||
throw "BuildHost world assembly input is not the reviewed round-4 manifest: $($ManifestData.content_hash)"
|
throw "BuildHost world assembly input is not the reviewed round-4 manifest: $($ManifestData.content_hash)"
|
||||||
}
|
}
|
||||||
if ($EnableHybridFixturePlacement -and $CoreMesherRecipe -ne 'WorldAssemblerHybridV1') {
|
if ($EnableHybridFixturePlacement -and $CoreMesherRecipe -eq 'MarchingCubesV1') {
|
||||||
throw 'Hybrid fixture placement requires -CoreMesherRecipe WorldAssemblerHybridV1.'
|
throw 'Hybrid fixture placement requires a WorldAssemblerHybrid recipe.'
|
||||||
}
|
}
|
||||||
if ($HybridCliffOnly -and $CoreMesherRecipe -ne 'WorldAssemblerHybridV1') {
|
if ($HybridCliffOnly -and $CoreMesherRecipe -eq 'MarchingCubesV1') {
|
||||||
throw '-HybridCliffOnly requires -CoreMesherRecipe WorldAssemblerHybridV1.'
|
throw '-HybridCliffOnly requires a WorldAssemblerHybrid recipe.'
|
||||||
}
|
}
|
||||||
if ($HybridCliffOnly -and $EnableHybridFixturePlacement) {
|
if ($HybridCliffOnly -and $EnableHybridFixturePlacement) {
|
||||||
throw '-HybridCliffOnly uses the reviewed native cliff manifest and cannot add the surface fixtures.'
|
throw '-HybridCliffOnly uses the reviewed native cliff manifest and cannot add the surface fixtures.'
|
||||||
}
|
}
|
||||||
if ($HybridFixturesOnly -and $CoreMesherRecipe -ne 'WorldAssemblerHybridV1') {
|
if ($HybridFixturesOnly -and $CoreMesherRecipe -eq 'MarchingCubesV1') {
|
||||||
throw '-HybridFixturesOnly requires -CoreMesherRecipe WorldAssemblerHybridV1.'
|
throw '-HybridFixturesOnly requires a WorldAssemblerHybrid recipe.'
|
||||||
}
|
}
|
||||||
if ($HybridFixturesOnly -and ($HybridCliffOnly -or $EnableHybridFixturePlacement)) {
|
if ($HybridFixturesOnly -and ($HybridCliffOnly -or $EnableHybridFixturePlacement)) {
|
||||||
throw '-HybridFixturesOnly cannot be combined with the other focused hybrid modes.'
|
throw '-HybridFixturesOnly cannot be combined with the other focused hybrid modes.'
|
||||||
@@ -126,7 +126,11 @@ function Get-NewCrashFolders {
|
|||||||
return @($Found.ToArray())
|
return @($Found.ToArray())
|
||||||
}
|
}
|
||||||
|
|
||||||
$HybridMesherFlag = if ($CoreMesherRecipe -eq 'WorldAssemblerHybridV1') { 1 } else { 0 }
|
$HybridMesherFlag = switch ($CoreMesherRecipe) {
|
||||||
|
'WorldAssemblerHybridV1' { 1; break }
|
||||||
|
'WorldAssemblerHybridV2' { 2; break }
|
||||||
|
default { 0 }
|
||||||
|
}
|
||||||
$HybridFixturePlacementFlag = if ($EnableHybridFixturePlacement) { 1 } else { 0 }
|
$HybridFixturePlacementFlag = if ($EnableHybridFixturePlacement) { 1 } else { 0 }
|
||||||
$HybridCliffOnlyFlag = if ($HybridCliffOnly) { 1 } else { 0 }
|
$HybridCliffOnlyFlag = if ($HybridCliffOnly) { 1 } else { 0 }
|
||||||
$HybridFixturesOnlyFlag = if ($HybridFixturesOnly) { 1 } else { 0 }
|
$HybridFixturesOnlyFlag = if ($HybridFixturesOnly) { 1 } else { 0 }
|
||||||
@@ -238,6 +242,18 @@ if ($HybridFixturesOnly) {
|
|||||||
$Text -notmatch '\[WorldAssemblerHybridPluginBorder\] lod0_lod1_doorway=1 cases=125 over_50cm_cases=0') {
|
$Text -notmatch '\[WorldAssemblerHybridPluginBorder\] lod0_lod1_doorway=1 cases=125 over_50cm_cases=0') {
|
||||||
throw "BuildHost fixture log is missing passing border probes. See $FinalLog."
|
throw "BuildHost fixture log is missing passing border probes. See $FinalLog."
|
||||||
}
|
}
|
||||||
|
if ($CoreMesherRecipe -eq 'WorldAssemblerHybridV2') {
|
||||||
|
foreach ($Fixture in @('corner90', 'doorway', 'riser1m', 'cliff_ledge', 'organic_cave_chamber')) {
|
||||||
|
$FixtureMarker = '\[WorldAssemblerHybridPluginFixtureV2\] name=' +
|
||||||
|
[regex]::Escape($Fixture) + ' lod=0 .*exact_repeat=1'
|
||||||
|
if ($Text -notmatch $FixtureMarker) {
|
||||||
|
throw "BuildHost V2 fixture log is missing '$Fixture'. See $FinalLog."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($Text -notmatch '\[WorldAssemblerHybridPluginBorderV2\] same_lod=PASS independent=1 mc_identity=1') {
|
||||||
|
throw "BuildHost fixture log is missing the V2 border identity proof. See $FinalLog."
|
||||||
|
}
|
||||||
|
}
|
||||||
$NewCrashes = @(Get-NewCrashFolders)
|
$NewCrashes = @(Get-NewCrashFolders)
|
||||||
if ($NewCrashes.Count -gt 0) {
|
if ($NewCrashes.Count -gt 0) {
|
||||||
throw "New UECC crash folders appeared during plugin fixture checks: $($NewCrashes -join '; ')"
|
throw "New UECC crash folders appeared during plugin fixture checks: $($NewCrashes -join '; ')"
|
||||||
@@ -287,13 +303,20 @@ $RecipeMarker = '\[VoxelForgeCoreWorldTest\] world_initialized=1 recipe=' +
|
|||||||
if ($Text -notmatch $RecipeMarker) {
|
if ($Text -notmatch $RecipeMarker) {
|
||||||
throw "BuildHost actor log does not confirm the requested $CoreMesherRecipe runtime selection. See $FinalLog."
|
throw "BuildHost actor log does not confirm the requested $CoreMesherRecipe runtime selection. See $FinalLog."
|
||||||
}
|
}
|
||||||
if ($CoreMesherRecipe -eq 'WorldAssemblerHybridV1') {
|
if ($CoreMesherRecipe -in @('WorldAssemblerHybridV1', 'WorldAssemblerHybridV2')) {
|
||||||
foreach ($Fixture in @('corner90', 'doorway', 'riser1m', 'cliff_ledge', 'organic_cave_chamber')) {
|
foreach ($Fixture in @('corner90', 'doorway', 'riser1m', 'cliff_ledge', 'organic_cave_chamber')) {
|
||||||
$FixtureMarker = '\[WorldAssemblerHybridPluginFixture\] name=' +
|
$FixtureMarker = '\[WorldAssemblerHybridPluginFixture\] name=' +
|
||||||
[regex]::Escape($Fixture) + ' lod=0 .*exact_repeat=1'
|
[regex]::Escape($Fixture) + ' lod=0 .*exact_repeat=1'
|
||||||
if ($Text -notmatch $FixtureMarker) {
|
if ($Text -notmatch $FixtureMarker) {
|
||||||
throw "BuildHost log is missing the production mesher fixture '$Fixture'. See $FinalLog."
|
throw "BuildHost log is missing the production mesher fixture '$Fixture'. See $FinalLog."
|
||||||
}
|
}
|
||||||
|
if ($CoreMesherRecipe -eq 'WorldAssemblerHybridV2') {
|
||||||
|
$V2FixtureMarker = '\[WorldAssemblerHybridPluginFixtureV2\] name=' +
|
||||||
|
[regex]::Escape($Fixture) + ' lod=0 .*exact_repeat=1'
|
||||||
|
if ($Text -notmatch $V2FixtureMarker) {
|
||||||
|
throw "BuildHost actor log is missing the V2 production mesher fixture '$Fixture'. See $FinalLog."
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($Text -notmatch '\[WorldAssemblerHybridPluginBorder\] same_lod=PASS independent=1') {
|
if ($Text -notmatch '\[WorldAssemblerHybridPluginBorder\] same_lod=PASS independent=1') {
|
||||||
throw "BuildHost log is missing the independent same-LOD border proof. See $FinalLog."
|
throw "BuildHost log is missing the independent same-LOD border proof. See $FinalLog."
|
||||||
@@ -305,6 +328,10 @@ if ($CoreMesherRecipe -eq 'WorldAssemblerHybridV1') {
|
|||||||
if ($EnableHybridFixturePlacement -and $Text -notmatch '\[VoxelForgeHybridCollisionContact\] pass=1 probes=5') {
|
if ($EnableHybridFixturePlacement -and $Text -notmatch '\[VoxelForgeHybridCollisionContact\] pass=1 probes=5') {
|
||||||
throw "BuildHost log is missing the cooked hybrid fixture trace contacts. See $FinalLog."
|
throw "BuildHost log is missing the cooked hybrid fixture trace contacts. See $FinalLog."
|
||||||
}
|
}
|
||||||
|
if ($CoreMesherRecipe -eq 'WorldAssemblerHybridV2' -and $EnableHybridFixturePlacement -and
|
||||||
|
$Text -notmatch '\[VoxelForgeHybridCollisionContact\] fixture=corner_top .*expected_point_error_cm=[0-9.]+') {
|
||||||
|
throw "BuildHost log is missing the V2 flat-face contact precision proof. See $FinalLog."
|
||||||
|
}
|
||||||
if ($Text -notmatch '\[VoxelForgeCoreWorldTest\] native_biome_field=1 .*sampled_biomes=[2-9]') {
|
if ($Text -notmatch '\[VoxelForgeCoreWorldTest\] native_biome_field=1 .*sampled_biomes=[2-9]') {
|
||||||
throw "BuildHost Core actor log does not prove native SurfaceWorld biome assignment. See $FinalLog."
|
throw "BuildHost Core actor log does not prove native SurfaceWorld biome assignment. See $FinalLog."
|
||||||
}
|
}
|
||||||
|
|||||||