World: collision-fidelity pass — fit walls/cover/landmarks to visuals + solid sweep

Phase 1.5 stabilize #2 (gate-approved incl. missing-collider adds + the
07-09 height/solid-sweep directive). New ColliderFitTools (Editor,
audit/apply, idempotent) refits the subscene Environment colliders to
the Game.unity render meshes:

- Boundary rings rebuilt 16/24/24 -> 54/82/82 segments (~3.5-4 u arcs)
  around the DESIGN radii (30/52 - fitting from the current segments
  ratchets inward on re-runs), inner faces fitted to ankle-band
  (0.45-2.5) cliff vertices so the wall stops the player before any
  visibly rising skirt.
- 8 room cover boxes -> convex MeshColliders of the actual CoverRock_*
  meshes (needed Read/Write on 2 PNB rock meshes: a MeshCollider bakes
  ONLY if the mesh is readable - InvalidOperationException per bake,
  classic scene view still shows the collider).
- 11 landmarks: hint-matched claim-once OBB fits (cabin/tent walk-into
  fixed; well/sign/artefact invisible walls removed).
- 85 adds: generic solid sweep (>=0.5 u tall, non-flora, walk-band
  geometry, gated by the LOCAL fitted wall radius) - cacti, succulents,
  boulders, bone piles, small rocks, craters (full set-piece blocks),
  crates, tree trunk, turbine poles, dish, solar rigs. Collider tops
  pinned to the visual top (cap 3): nothing solid-looking is
  walk-through or walk-over. Elevated-only geometry (rotors, panels)
  excluded - no phantom ground walls.

Verified: baked-CollisionWorld probes (ring closure 32/32/region, 10/10
solidity samples across base + both room slots, open ground free,
server==client parity at 323 static bodies), enemy backstop live smoke
(enemy embedded in the new crater block depenetrated out and re-engaged
across ~12 u; 4 others converged normally through ~40 obstacles),
466/466 EditMode, console clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 19:45:40 -07:00
parent 0574e74e18
commit 5382cbf341
5 changed files with 14736 additions and 1223 deletions
@@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: d68b1794e4e664d45925e6fe3eedfae2
ModelImporter:
serializedVersion: 20300
serializedVersion: 24501
internalIDToNameTable: []
externalObjects: {}
materials:
@@ -9,14 +9,14 @@ ModelImporter:
materialName: 0
materialSearch: 1
materialLocation: 1
searchTexturesGlobally: 1
animations:
legacyGenerateAnimations: 0
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
@@ -31,7 +31,7 @@ ModelImporter:
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
@@ -39,10 +39,12 @@ ModelImporter:
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 0
importBlendShapes: 0
importCameras: 0
importLights: 0
nodeNameCollisionStrategy: 0
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
@@ -54,6 +56,12 @@ ModelImporter:
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
importUVs: -1
importVertexColors: 1
meshOptimizationFlags: -3
indexFormat: 0
secondaryUVAngleDistortion: 8
@@ -64,6 +72,7 @@ ModelImporter:
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 3
normalImportMode: 1
@@ -72,6 +81,7 @@ ModelImporter:
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 2
calculateBlendshapeNormalsDeltaFromImportedNormals: 1
referencedClips: []
importAnimation: 0
humanDescription:
@@ -96,6 +106,7 @@ ModelImporter:
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 0
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
@@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: b26ded2dffadca04da4b267610d057ab
ModelImporter:
serializedVersion: 20300
serializedVersion: 24501
internalIDToNameTable: []
externalObjects: {}
materials:
@@ -9,14 +9,14 @@ ModelImporter:
materialName: 0
materialSearch: 1
materialLocation: 1
searchTexturesGlobally: 1
animations:
legacyGenerateAnimations: 0
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
@@ -31,7 +31,7 @@ ModelImporter:
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
@@ -39,10 +39,12 @@ ModelImporter:
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 0
importBlendShapes: 0
importCameras: 0
importLights: 0
nodeNameCollisionStrategy: 0
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
@@ -54,6 +56,12 @@ ModelImporter:
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
importUVs: -1
importVertexColors: 1
meshOptimizationFlags: -3
indexFormat: 0
secondaryUVAngleDistortion: 8
@@ -64,6 +72,7 @@ ModelImporter:
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 3
normalImportMode: 1
@@ -72,6 +81,7 @@ ModelImporter:
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 2
calculateBlendshapeNormalsDeltaFromImportedNormals: 1
referencedClips: []
importAnimation: 0
humanDescription:
@@ -96,6 +106,7 @@ ModelImporter:
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 0
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData: