A partially broken Geometry Collection (GC) ends up with garbage CollisionGroup data that can lead to strange behaviors.
The licensee has noticed that a GC that goes thru a field applying ExternalStrain and gets broken shows a strange behavior on the aggregates of particles. The particles that get broken to the smallest level do not present this behavior and show the correct CollisionGroup, but groupings of particles, upon inspection on ChaosVisualDebugger (CVD), show garbage values on their CollisionGroups.
The setup the licensee has created uses a 6 particles GC with a single level that gets broken on the second particle, leaving a single particle on one side, the broken particle in the middle, and a grouping of the remaining 4 particles. Upon collision with another GC on the bottom that has CollisionGroup = 1, the single particles collide, but the grouping goes thru. I've inspected using CVD and the CollisionGroup value for the single particles was zero, as expected, but the group of particles was 2147483647. Since the CollisionGroup numbers of the group of falling particles and the bottom GC do not match, the group does not collide and goes thru.
I've verified this against all UE5 versions and the issue is present on 5.0, 5.4, 5.5, and 5.6.
It's a regression because it worked as expected on 5.1, 5.2, and 5.3.
I suggest using the provided repro project as the setup is lengthy.
Without the repro:
Create a blank project
On a basic scene create a cube and scale it (ex: 1,8,1) to make it easier to see the fractures
Duplicate it in the scene
Select one to be the bottom Geometry Collection (GC) and go to Fracture mode
Create a new GC and save
Back to Selection Mode, select the Bottom GC and set it's collision group to 1
Also set this GC as Static so it does not move during the simulation
Select the other cube
Go to Fracture mode, create New GC, and save
Still on Fracture mode, select Slice, than on Slicing do Slices X = 0, Y = 5, Z = 0
Press Fracture, this will split the elongated cube into 6 particles
Back to SelectMode, select the falling GC and make it's DamageThreshold to be all 1's, to guarantee it breaks
We need a field that applies enough ExternalStrain to break a simple particle of the GC so we need to size it in order to achieve breaking the GC into two particles at one side and leave the other 4 grouped together
Now we position the falling/breaking GC so that it goes thru the ExternalStrain field, and finally hit the bottom GC. If correctly positioned the GC will go thru the field and break a single particle leaving one particle on one side and 4 grouped particles on the other
Simulate
Using the repro project:
Simply open the project and simulate the level.
Expected result: The field adds ExternalStrain to one particle. That particle gets separated from a single particle on one side and a grouping of particles on the other side. Since all constituents of the falling GC have the same initial CollisionGroup = 0, any particles or group of particles should collide with the bottom GC, as CollisionGroup 0 always collides with every other CollisionGroup.
Actual Result: Both single particles collide with the bottom GC normally. The unexpected part is that the grouping of particles go thru the bottom GC. Upon inspection on ChaosVisualDebugger, the particle group has garbage CollisionGroup number (for instance it was 2147483647 during a particular simulation), and because the number do not match with the one on the bottom GC, it goes thru, ignoring collision.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-274467 in the post.