Chaos Destruction Clustering with Individual Particle Strain Thresholds

I’m working on a game project where I want to split a mesh into multiple mesh particles, each with a specific damage or strain threshold. The goal is to gradually reduce the strain threshold of individual particles over time, making them more prone to breaking off until they completely separate from the main mesh.

Examples of the Desired Outcome:

Example 1
image

A single red mesh particle breaks off from a group of green particles.
Example 2

image

A group of particles is split into three pieces because a weakened middle particle breaks, separating the green and yellow particle groups. This splits the main mesh into two pieces.

Looking at for solution the chaos destruction as solution for this problem I followed the Chaos Destruction tool tutorials and other couple of how to tutorials. After that I look up if there is any documentation on how the code side of chaos destruction work but could not find any.

Then I lookup if there was any documentation of chaos physic engine it self. I was able to find blog that explains how standerd actor interacts with the chaos physic engine and gave overall overview of the all the classes involved. With this knowledge I’m was able to setup a test project, split up a mesh and start trying to break off mesh particles trough C++ AActor test class.

By looking at the Chaos Destruction source code classes like UGeometryCollectionComponent, FGeometryCollectionPhysicsProxy and FRigidClustering is was able to find out for example that you can set strain of given particle by using the FRigidClustering::SetInternalStrain method.

After trying and testing the SetInternalStrain method and other methods like BreakCluster, I have found that not able to get disarable effect that looking for in example above.

What happens that in setup below where all the nodes/particle meshes are at level 1:

Trying to breaking on of the level 1 nodes off by setting the SetInternalStrain to zero the all the level nodes break off the node. I the nodes damage data overview I can see that the damage strain on node indeed has been set to 0 but that of parent root also

I also tested this with a grouping over two levels deep like this:

Here I found out that if I set the strain on level 1 cluster node to 0 it break into two pieces but when I the strain to 0 on level 2 node, the item stays together.

Wat I can conclude so far form this that is that if you set a mesh node or cluster node. The parent node is also set to this strain level. Second thing that if root or parent node is not broken yet. Then the child nodes can’t also not break off.

The way the system is buildup in Chaos Destruction system where you have tree structure that can breakup into level depths is good for keeping the performance in check. But this seems to working against what I trying to achieve in examples above.

My Questions

1 Is it possible to achieve the desired outcomes described in the examples above using the Chaos Destruction system?
I haven’t been able to find the correct settings or method calls to achieve this.

2 If it’s not possible, would it be feasible to write a custom system around Chaos Destruction?
For instance, could I use Chaos Destruction to define particle mesh nodes but handle the breaking logic independently?

3 Are there any resources or documentation that explain the inner workings of the Chaos Destruction system beyond the source code?