The problem with this resource is that, it creates unions at runtime, and depending on your mesh, it may create too many. Notice how the physics simulation couldn’t keep up with the amount of unions at example 2?
The ideal way is to fracture a mesh in Blender, and import the fractured mesh back into Roblox. The fractured mesh will contain the mesh split into individual MeshParts, and you can perform destructive physics on them with no penalty to performance.
While this tutorial mentions Godot, you only should focus on the “Creating fractures In Blender” section in the tutorial.
Obviously, for practical use it is better to import an already fragmented mesh.
This modulescript attempts to implement MeshPart fragments by creating a union of multiple parts using MeshConvert, so performance is slow.
I think it would be quite useful in Roblox to use EditableMesh to create a separate MeshPart for each piece of the MeshPart, and to be able to create pieces in advance when the game starts and explode them when desired.
And the amount of Unions that occur can be reduced by increasing partAmountInUnion.
Also, when dividing the mesh and importing it to create this effect, if the amount is large, lag will occur as shown in the example.
Due to recent updates, this resource can be used in live games. And if you disable CanCollide for each Union (requires modifying the source code), it won’t lag.