I made a robot model in Blender a while back. The robot has a humanoid armature, so it can use normal humanoid animations, but when it breaks it shatters into a bunch of pieces, each of which has its own rigidbody. Here he is running into a wall:
And here is is after breaking into a bunch of pieces:
Under the covers, I’m concerned with the approach I took. Basically, every piece that breaks off is an independent SkinnedMeshRenderer. This is because any given piece of this robot could be further destroyed, causing it to disappear. Each piece might also have independent shader effects happen to it. For example, one piece might get vaporized, which changes its shader. This, as I understand it, would not be possible if this were all one large Skinned Mesh Renderer.
I had considered an approach where I have a single SMR for the whole robot, and then when destruction occurs, I hide it, and instantiate a bunch of separate objects that are plain old MeshRenderer pieces, never associated with the armature. There are two issues with that. First, it’s less realistic. Instead of individual pieces cleanly flying apart, there’s a jump as new pieces are created and swapped in. Getting all of the objects to line up with their old counterpart is potentially difficulty. And another use cases is that I want to improve my robot so that pieces of him can fall off dynamically. So, he could lose an arm, which would fall to the ground, while the rest of him keeps functioning normally. This means that while the main SMR is still functioning, I’d need to be able to turn off parts of the mesh, like the arm, while still having the rest of the robot behave normally.
My concern with using so many SMRs is that they’re not as efficient. I don’t have specific metrics to back this up, but I don’t want to go down a bad path with this, as completely rebuilding complex models will be highly time consuming if this turns out to be the wrong approach. In addition, the blog post about the SRP batcher specifically mentioned that it doesn’t work on SMRs (SRP Batcher: Speed up your rendering), so that makes me hesitant.
Anyway, given these requirements, is there really any alternative to my current approach? Keeping in mind that:
- While the robot is “whole”, it is animated, with piece being associated with an armature bone to allow humanoid movement.
- When the robot breaks, its pieces go flying, each becoming independent rigidbodies that could each be destroyed later independently.
- The robot can lose limbs/pieces (like armor pieces) while still being relatively whole, where those pieces fall off an become independent rigidbodies.
Thanks.

