test(vehicle): clamping the velocity to zero does not stop the rise - the transform is written
The decisive clamp: zero linear and angular velocity every frame for two seconds. t=0.25 Z=3220 vZ=0 | t=0.75 Z=3683 vZ=0 | t=1.25 Z=4197 vZ=0 It rises at ~1200 cm/s with velocity pinned to zero, so this is not a force, an impulse, or a bad initial state - all of those the clamp would have removed. Something calls a transform setter on the vehicle every frame. Our own source contains exactly one direct transform write outside the character (the shot actor's camera), so the writer is engine-side: the Chaos vehicle component driving UpdatedComponent from a vehicle state that was never created, or a skeletal-mesh transform update. Also diffed the two maps, since the pawn works in ReviewMap and not in DemoMap: kill_z, gravity, lights and partitioning are identical; DemoMap adds 593 static mesh actors, a height fog and a post-process volume, ReviewMap adds a shot actor and the character. Nothing in either list can write a transform, so the map difference is not in its actors or settings.
This commit is contained in:
1 parent
331e2016be
commit
387a4530de
78 files changed
+111
-76
No files matched your search
@@ -63,6 +63,18 @@ DemoMap, 25 m above ground: Z 2496 -> 2664 -> 3068 -> 3434 vZ +1509
|
||||
|
||||
**So the Chaos rig is fine and `DemoMap` is what breaks it** - at any height, anywhere in that map, and not by contact (25 m in the air launches immediately). The next comparison is between the two maps' world settings and level actors: `ReviewMap` was built by `Tools/ue_build_review_map.py`, `DemoMap` by `Tools/ue_build_demo_map.py`, and the difference that matters is in what one stages and the other does not.
|
||||
|
||||
### The transform is written directly, not moved
|
||||
|
||||
Zeroing the body's linear and angular velocity **every frame** for two seconds changes nothing:
|
||||
|
||||
```
|
||||
t=0.25 Z=3220 vZ=0 t=0.75 Z=3683 vZ=0 t=1.25 Z=4197 vZ=0
|
||||
```
|
||||
|
||||
The actor keeps rising at ~1200 cm/s while its velocity is pinned to zero. **Something calls a transform setter on the vehicle every frame** - this is not a force, an impulse or a bad initial state, all of which the clamp would have removed.
|
||||
|
||||
`Game/GigLine/Source/GigLine/*.cpp` contains exactly one direct transform write outside the character (`GigLineShotActor` moves its camera), so the writer is engine-side: the Chaos vehicle component driving `UpdatedComponent` from a vehicle state that was never created, or a skeletal-mesh transform update.
|
||||
|
||||
### Bisect plan for the next pass
|
||||
|
||||
1. Spawn the same pawn in `ReviewMap` (flat 160 m floor, no slices, no UCX ground) and repeat the profile. Flies there too -> the asset/component is at fault. Settles there -> something in `DemoMap` (the UCS slabs, the terrain, or the world settings) drives it.
|
||||
@@ -92,6 +104,18 @@ DemoMap, 25 m above ground: Z 2496 -> 2664 -> 3068 -> 3434 vZ +1509
|
||||
|
||||
**So the Chaos rig is fine and `DemoMap` is what breaks it** - at any height, anywhere in that map, and not by contact (25 m in the air launches immediately). The next comparison is between the two maps' world settings and level actors: `ReviewMap` was built by `Tools/ue_build_review_map.py`, `DemoMap` by `Tools/ue_build_demo_map.py`, and the difference that matters is in what one stages and the other does not.
|
||||
|
||||
### The transform is written directly, not moved
|
||||
|
||||
Zeroing the body's linear and angular velocity **every frame** for two seconds changes nothing:
|
||||
|
||||
```
|
||||
t=0.25 Z=3220 vZ=0 t=0.75 Z=3683 vZ=0 t=1.25 Z=4197 vZ=0
|
||||
```
|
||||
|
||||
The actor keeps rising at ~1200 cm/s while its velocity is pinned to zero. **Something calls a transform setter on the vehicle every frame** - this is not a force, an impulse or a bad initial state, all of which the clamp would have removed.
|
||||
|
||||
`Game/GigLine/Source/GigLine/*.cpp` contains exactly one direct transform write outside the character (`GigLineShotActor` moves its camera), so the writer is engine-side: the Chaos vehicle component driving `UpdatedComponent` from a vehicle state that was never created, or a skeletal-mesh transform update.
|
||||
|
||||
### Bisect plan for the next pass
|
||||
|
||||
1. Spawn the same pawn in `ReviewMap` (flat 160 m floor, no slices, no UCX ground) and repeat the profile. Flies there too -> the asset/component is at fault. Settles there -> something in `DemoMap` (the UCS slabs, the terrain, or the world settings) drives it.
|
||||
|
||||
Reference in new issue
Block a user