Collision of a mesh component stops scaling if scaled down too far

Branch: Binary build

Build version: 4.3.0-2215663

In my game, I have a mesh component inside an actor blueprint that gets scaled over time by a Timeline and a Set Relative Scale 3D action (I also tried a Set World Scale 3D action and had the same issue, and it doesn’t seem to matter if a Timeline is used or not), and if the player character overlaps the blueprint actor, it triggers an overlap event.

Normally, this works fine, and the overlap event triggers no matter how the mesh component is scaled.

However, if I scale the mesh component down too far (anything smaller than a value of 0.1 or so seems to break it) then scale it back up again, the mesh itself scales back up correctly, but the overlap event stops working unless the player character touches the very center of the mesh. If the player character does not overlap the center point of the mesh, it passes right through without triggering an overlap event.

Repro steps:

  • Create a new project using the Blueprint Top Down template.
  • Create an actor blueprint.
  • Add a static mesh component (Shape_Cube) to the blueprint, and set its collision preset to OverlapAll.
  • Set up the blueprint’s event graph like in the following screenshot.

  • Place the blueprint in the world.
  • Play the game, and the overlap text only appears when the character touches the very center of the cube.
  • Go back to the blueprint event graph, change the scale values in the first Scale 3D action to 0.1 or larger.
  • Play the game again, and now the overlap event works correctly and fires when the player overlaps the cube.

Making my game the way I want to is going to be tricky if this doesn’t get fixed and I can’t find a workaround. Ideally I’d like to be able to scale all the way down to 0 and back up and still have collision work.

Just updating to say that I’ve tested this in 4.4 and the problem is still occurring (not that I expected it to be fixed that quickly). I also just want to make sure someone at Epic saw this. :slight_smile:

Hey Aelussa-

Thanks for letting us know about this issue. I have been able to reproduce this internally and have submitted it to our tracking system for further investigation ().

Cheers

Still happening in 4.6.1.

Issue is probably in FBodyInstance::UpdateBodyScale, in here you’ll see scale is clamped to a minimum of 0.1 to avoid NaN issues in Physx. I know for a fact under 0.1 the physics body stops downscaling and stay a constant size, while the visual continues downscaling normally.

It’d be great to be able to configure this threshold, as it seems arbitrary and might not apply in most cases.

I had this problem and my solution was to prescale-down the affected StaticMesh in the import options, then apply an inverse up-scale in the blueprint, so I can achieve smaller objects before hitting this. But it’s a pretty frustrating fix.

Hey guys-

This is still being looked into for the best way to implement a fix. With the number of tasks being worked on it is difficult to give an exact time frame however it is being worked on.

Any news on this issue being fixed? It is still an issue in 4.7.3. If I scale a mesh below .1 the collision mesh goes back to a scale of 1 and stays there. Really annoying bug to work around.

Hey -

This hasn’t been resolved yet but we are still actively working on it and plan to have a fix implemented in a future version.

Hey there, i just encountered this in 4.7.6. Scaling my StaticMesh down to a lower value than 0.1, my collision breaks and the StaticMesh begins to fall half into the ground.

Was this fixed in 4.8 or something?

EDIT: This also seems like NOT happening, if i use a normal Sphere collider. Still not a valid solution for me ):

Hey eXi-

This issue has not been fixed yet. I have updated the community interest for the bug (UE-3113) to give it better visibility however I can’t say when the fix will be included in the engine. Instead you may want to simply limit the amount that the mesh is scaled or try to reset the static mesh when it is scaled back up to reset its collision.

Same problem here in 4.8.3. Sphere mesh collision gets broken if mesh is scaled down (way bigger than the scaled mesh).

I even tried to create a super-tiny collision mesh to compensate that, but even than the collision volume is way bigger than the mesh (after scaling down the mesh). Setting the collision to ‘use complex collision as simple’ made also no effect.

Hey ,

This bug has been fixed in the released 4.9 engine version. You should be able to scale a mesh down to any size and still have collision work correctly when scaling back up.

Sounds great, thank you. I currently can’t switch to 4.9 because of some strange issues but I am glad that this has been fixed.

Seems to be still in 4.11.2 also or possibly has returned