How to change collision response on Chaos geometry collection

Here’s how I managed to do it:

1 - Go to ProjectSettings->Collision->Preset and create a new preset, use the same settings as the Destructible profile, with the exception of the Pawn = Ignore (I created it with the name “DestructibleNoPawn”)
2 - In the level viewport, select your chaos geometry collection, go to the Details panel, find the CollisionProfilePerLevel, Add two entries, the first one should be “Destructible” and the second one should be the new one you just created, like “DestructibleNoPawn”

9 Likes

Don’t know if my issue is similar but I wanted to just add the geometry collection component after triggering collision of the actor with the player. I used the “Add Geometry Collection Component” node and by just clicking it, in the details panel, I saw the collision presets option. Hope it helps

1 Like

just calling OnActorEnableCollisionChanged() worked! Thanks!

This worked ! Thanks a lot for your answer.

This took me forever to figure out and I came across this thread in my research. I wanted to come back and say if the Geometry Collection is in your blueprint as a component, you can just select it and under Details window, set Collision Presets to IgnoreOnlyPawn.

Yeah but does this make it so the broken off pieces don’t affect the pawn but also if there is a remaining half-wall it will still block pawn movement?

That’s my issue with chaos destruction, really hard to have a half broken wall that blocks movement but also having the flying pieces not block movement.

I’ve managed to do this with a specific setup at the geometry collection:
Level0: Root
Level1: Cluster
Level2: Leaves

The hierarchy looks like this:

And then in CollisionProfilePerLevel I’ve set it like this: {Destructible, Destructible, DestructibleNoPawn}. This way it works for me. (Note that DestructibleNoPawn is a custom CollisionProfile I’ve made, just like Destructible but with the Pawn collision disabled).

You could also check UGeometryCollectionComponent::SetPerParticleCollisionProfileName as it takes precedence over UGeometryCollectionComponent::SetPerLevelCollisionProfileNames and you can set the specific there.

Something that confused me a bit at the gegginning is what “BoneIds” or Particles. They are all int32 and they refer to the index of the destructible piece. It’s the same as the number on the leftmost column at the Fracture Hierarchy in my image.

Then you also have “Facades” like FCollectionHierarchyFacade or FGeometryCollectionDynamicStateFacade among others that let you query the info for different particles. You can see usage examples in the codebase and use them to query some state you may be interested in.

Disclaimer: I’m still learning this system so I might be wrong! I thought I could give at least some direction though.

2 Likes

What I need is to set Collision to the pieces,and not effect the root geocollicetion。
I search the whole internet but still can’t achieve it.
However,I found a new way to set Collision ,and this can solve my problem.



Through this “Set Per Particle Collision Profile Name” function, i can set pieces to any collision preset I want.
Hope this will help somebody who struggling with same issue. :kissing_closed_eyes:

1 Like

This does not work when the collision style is set to “Implicit-Implicit” in the geometry collection. It ends up still affecting my character. It will work with Particle-Implicit, but then the broken pieces don’t interact with the other broken pieces.

Is there a way to use Implicit-Implicit and change the collision of the broken pieces? Or make particle-implicit pieces interact with eachother?

EDIT: Nevermind. Changing some of the collision particle settings seems to have fixed it.

But still, is there any way to change the collision of Implicit-Implicit for the performance boost of using implicit instead of particle?

I m using “Implicit-Implicit” way,and it seems the problem is irrelevant with this.

CollisionProfilePerLevel doesn’t work for me in 5.4. I’ve set Level 0: Destructible and Level 1: DestructibleOff (custom) and tried to test it by setting all collisions to “ignore” for the latter, but the GC pieces still interact with other objects.

I’m so close to achieve what I’ve wanted ever since I started working with Chaos 4 years ago and that’s having GC pieces not being affected by anything after they break - what the disable field does - except for gravity and walkability.

Your method seems the way to do it, am I missing something? I’m trying this with Implicit-Implicit with normal GC (not in BP)

I also have the collision type set to Implicit-Implicit. I see you said you have set the Level0:Destructible and Level1:DestructibleOff. I wasn’t able to make it work like that, I had to use the following configuration:
Level0:Destructible
Level1:Destructible
Level2:DestructibleOff

And create the geometry collection with these 3 levels, making sure that there weren’t any unclustered items isolated in level 1 (basically: all leaf fragments must belong to level2).

For my specific setup I have programmed a custom actor that wraps a GeometryCollectionComponent and handles the received hits. By default my geometry collection doesn’t have the SetEnableDamageFromCollision enabled and I enable it only after receiving a hit. So with this behaviour I make sure on the first hit the level 0 is broken into several level 1 pieces, and then these pieces still have collisions and break down. If they fall and collide with something else or receive another hit, they break into smaller level2 pieces, and these are the ones that have no collision with the pawn.

As an extra step to improve the feeling and add some reactivity with the player, I’ve also added a volume in the character that does collide with these pieces so they move when the character walks through them.

This is what works for my specific setup though, maybe you need to set it up differently according to your needs.

Do you think this would work without your collision setup? I just want the pieces to move when hit by a player.

Edit: Actually, I’m just curious how you’re pushing the pieces. I’ve tried collision bubbles but it doesn’t seem to work well for me, but maybe my collision settings are wrong.

Same Issue, in 5.4 “Set Per Particle Collision Profile Name” doesn’t work anymore. I try with Implicit-Implicit and it doesn’t seem to apply the collision profile to the debris. Can’t try Particle-Implicit, it completely freezes my computer when it breaks!

Hi

It is recommended to use implicit-implicit for geometry collections for performance reasons
The Particle-Implicit creates collision particles that can have a cost for both runtime execution and memory

SetPerParticleCollisionProfileName function should work out of the box in 5.4 ( seems like it does for some of you )

For character interaction , I also recommend looking into the the settings of the character movement component, there’s a “Physics Interaction” where you can define how the character capsule interact with the simulated objects

Also note that, geometry collection are using quite a large density by default , so they tend to be heavier than simulated static mesh with equivalent mass
Density can be adjusted in the geometry collection asset or via a physics material ( there’s few check boxes to enable for that )

I hope this helps

1 Like

SetPerParticleCollisionProfileName doesn’t work on pieces, the only way I have to stop the collision with pieces is to change the collision type of the full geometrycollection, so that’s not good. Note that the same code works with 5.3, but no longer with 5.4.

To change collision response on Chaos geometry collection in Unreal Engine, follow these four key steps. First, select the Chaos geometry collection in your scene and navigate to its properties panel. Next, locate the “Collision” section and expand it to reveal various collision-related settings. Then, adjust the “Collision Response” parameter to modify how the object interacts with other elements in the scene. Finally, experiment with different collision response options such as “Block,” “Overlap,” or “Ignore” to achieve the desired behavior for your specific use case.

Using “Collision Profile Per Level” worked for me
I wanted my character to be blocked by the object and destroy it, then be able to walk through the debris Without collision.
Destructible on level 0, and my custom destructibleNoPawn on level 1 and 2 worked great

1 Like


UE 5.3.2
Mark OnBreakNotify in GC Details
added new collision profile same as destructable but ignore Pawn
Now I can’t pass through the broken window part and pieces ignored by pawn.
Thanks, community for such an easy solving.

It worked! Thanks so much.