CPU Particle Mesh Collisions Ignore Rotation

CPU Particle Mesh Collisions Ignore Rotation

The collision behavior for CPU mesh particles with Actor Collision modules appear to be ignoring the rotation of the mesh when performing collision checks. This occurs for particles rotated from the Init Mesh Rotation module (via Inherit Parent option) as well as from particles rotated by using local space.

A test scene was setup as follows (Dropbox - File Deleted):

  • An emitter is pointed towards an opening constructed from 4 static mesh boxes.
  • This setup was duplicated and rotated in different directions.
  • A collection of these setups is copied to demo different behaviors, including a basic sphere and a stretched sphere. (Via rescaling in Cascade.)
  • The stretched sphere actually has the same issue, if Collisions Consider Particle Size is enabled.

One way to visualize the collision issue is to disable the Init Mesh Rotation module, so that the capsules always face forwards in world space. However, even in this setup, the collision seems to ignore the pivot point of the mesh (Which has been centered in this test case; shifting it in the end will demonstrate this issue.)

Understandably, the collision system must remain simple to maintain performance, thus accounting for rotation might be too expensive. A potentially good workaround would be to allow the user more control over the collision, such as using point or sphere collision (much like sprites do) instead of whatever the current system is doing.

Current use case is for bullet hell-like encounters with dozens of enemies and thousands of projectiles firing at the player in a single player environment. Actor/component based projectiles are far too slow for this, and hit traces are far too finicky (and do not link the particle to the hit trace, allowing it to terminate properly). The stretched sphere does not look anywhere near as good as a custom modeled long projectile, but it does allow the effects of the scaling to be ignored thus working around the collision rotation issue in some cases.

There are potentially some various VFX use cases that could benefit from a fix or workaround as well, particularly with ensuring more consistent behavior in any oblong particles.

Issue has been tested in Cascade only, not the Niagara preview.

Tested on Windows x64 4.18 and 4.19 (Appears to occur in PIE, standalone, and nativized builds.), not sure on previous versions nor other platforms.

Hello,

We’ve recently made a switch to a new bug reporting method using a more structured form. Please visit the link below for more details and report the issue using the new Bug Submission Form. Feel free to continue to use this thread for community discussion around the issue.

https://forums.unrealengine.com/unreal-engine/announcements-and-releases/1410408-unreal-engine-bug-submission-form

Thanks

My workaround was to use “Initian Rotation Rate” insted of “Init Mesh Rotation Rate”. When i used it, my meshes stop their rotation after collision.