test(vehicle): collision is not the cause either - defer the rig to its own session

Third fix tried and failed: the terrain staged in the probe map with collision disabled entirely. The pawn
still rises (Z 315 -> 421), exactly as with collision enabled.

With that, the terrain's convex hull, its collision channel and its collision itself are all eliminated, and
the failure survives in a map whose only difference is the presence of a 279 m static mesh.

The player is unaffected throughout - re-checked after every attempt, still standing on Sidewalk_North_07
at 157 cm - so nothing in the walkable demo regressed.

Deferred rather than guessed, per AGENTS.md: the task is marked deferred with the three failed fixes, the
probe workflow and switches a fresh session inherits, and the next question framed precisely - why a map
containing a collisionless 279 m static mesh changes a physics body's behaviour, which points at streaming,
memory layout or the broadphase rather than at collision authoring.

Generated probe levels deleted; the tools stay.
This commit is contained in:
zwitschi committed 2026-11-09 22:22:39 +01:00
1 parent a1771cb55f
commit fe219b038c
4 files changed
+49 -5

No files matched your search

+8 -2
View File
@@ -1,6 +1,6 @@
"""Add one piece of demo content to ReviewMap and save it as a vehicle probe level.
GIGLINE_PROBE_ASSET=Terrain_DEM <engine>/UnrealEditor-Cmd <uproject> \
GIGLINE_PROBE_ASSET=Terrain_DEM [GIGLINE_PROBE_NOCOLLISION=1] <engine>/UnrealEditor-Cmd <uproject> \
-run=pythonscript -script=<repo>/Tools/ue_vehicle_probe_map.py -nullrhi -unattended -nopause
Why: the Chaos pawn falls correctly on ReviewMap's empty floor and is thrown upward everywhere in
@@ -69,9 +69,15 @@ def main():
mesh = unreal.EditorAssetLibrary.load_asset(path)
actor = unreal.EditorLevelLibrary.spawn_actor_from_class(
unreal.StaticMeshActor, unreal.Vector(0.0, 0.0, 0.0))
actor.get_component_by_class(unreal.StaticMeshComponent).set_static_mesh(mesh)
comp = actor.get_component_by_class(unreal.StaticMeshComponent)
comp.set_static_mesh(mesh)
actor.set_actor_label(f"Probe_{wanted}")
log(f"staged probe mesh {path} at the origin")
# GIGLINE_PROBE_NOCOLLISION=1 stages the same mesh with no collision at all, which separates
# "this mesh's collision ejects physics bodies" from "this mesh does something else".
if os.environ.get("GIGLINE_PROBE_NOCOLLISION", "").strip() == "1":
comp.set_collision_enabled(unreal.CollisionEnabled.NO_COLLISION)
log("probe mesh collision disabled")
else:
log("control run: no extra content")