Skinned Mesh Dismemberment Engine (for Puppet Master) is a system that allows skinned mesh humanoid puppets to have dismemberable limbs.
It differs from the PM logic “Disconnect Muscles” in that it allows an animated skinned mesh to be gibbed, without need for seperate meshes for limbs.
Included are different demos showing distinct usages of the system, with raycast or collider based dismemberment plus adaptive legless animation setups.
Any limb can be marked as “fatal” meaning the puppet will be killed upon its dismemberment.
Right now, not dynamically. It requires a pre-cut mesh with seperate limbs. Each puppet limb can have separate game objects that are spawned upon gibbing, which would allow dismemberment by using the cut up mesh elements.
An example of this technique can be seen here, from a separate generic dismemberment asset that is still waiting for approval.
So you are using a pre-cut mesh in the example video?
Anyway, thanks for the response. If your asset could dynamically cut meshes for puppetmaster it would be killer. I’ll have to work on my own solution in the meantime.
PS. Emu War! What a great concept I actually thought about making a game about it when I first read about the emu wars.
Yeah in the video that we sent it is using a pre-cut mesh. I know that dynamic cutting requires creation of a new mesh, vertice by vertice. If I can get it working, I’ll add it in but I don’t want to promise it not knowing how to create it yet.
Thanks! Emu War! Is a funny concept. It would be great to see your take on it
Hi. Thank you. Your question is fine to ask in the thread. I have responded to your PM and I will also include that response in this thread in case others may have the same question:
The process of hiding limbs that have been destroyed is using the traditional scaled-down bone method. A reference is held in dismembermentManager.cs of destructible limbs. When a limb is destroyed, the manager rescales that limb in LateUpdate. It also tells any dependent limbs they are also destroyed.
To add in hands, there is actually some commented out lines that will assist you doing this. Specifically, lines 71-73, 80-83, 20, 23, 33, 36 in dismembermentManager.cs and lines 23, 26, 74-76 and 83-85 in limbDM.cs. If you uncomment these lines, you will be able to add hands into the system that will need to be set up in editor with relevant references in accordance with instructions found in the manual. These means you’ll have to drag references of hand bones into the relevant fields, hand puppet colliders in their relevant fields and set up supporter limbs to adapt to this up the chain i.e. lower arm, upper arm, etc.
My apologies. In dismemberManagement.cs please add these variables:
public GameObject LHand;
public GameObject RHand;
public bool LHandGone;
public bool RHandGone;
In LateUpdate please add:
if (LHandGone) {
LHand.transform.localscale = goneScale; }
if (RHandGone) {
RHand.transform.localscale = goneScale; }
In limbDM.cs please add these variables:
public bool LHand;
public bool RHand;
Within the public void dismemberMe() please add:
if (LHand) {
dManagerCS.LHandGone = true;
}
if (RHand) {
dManagerCS.RHandGone = true;
}
Please note that these must be placed above the line “Destroy(this);”, otherwise it will not run. If these are placed correctly you will be able to set up new references for your character in accordance with the set up guide in the instruction manual.
Thank you, yes we can keep the conversation here, please disregard the PM response.
Thanks. If you’re referring to the re-scaling done in every frame in late update, it is done there to make sure that any animations that are being applied to the skinned mesh do not reset the scale of the targeted limb. This may not be needed in the case of animations holding no scale data, I will look at this again thank you.
EDIT: Just checked it and you are right. I have updated the asset and it should be available shortly. Thank you for letting me know. The reason it was done in late update before was because in previous tests I had limbs rescaling to their default scale, in effect disabling dismemberment. This must have been a result of scale data being in the animations used that was overwriting the dismember scale. This means that if anyone is using animation that hold scale data for limbs they will still likely need to use a LateUpdate version, I have provided details for enabling this in the change log for the update. Thank you again.
I have a question. Puppet master seem to work with non-bipedal characters, I wonder is this plugin capable of working as well? For example, if I hit a dogs front leg, can it also adapts like video shows for bipedal character?
Thank you for your query. At the moment, you’ll be able to reference all leg limbs by equating front limbs to arms in the references. This means though, that adaptive set ups that allow crawling movement once legs are disabled, will still only work for what is referenced as right and left legs and their dependencies. For example, if you reference front quadruped legs as the left and right legs in the dismemberment manager, then removing those will initiate the legless adaptive behaviour.
Just purchased it great fun addon for puppet master. How can I make the system not destroy the limbs it destroys so I can see what that looks like? Shoot a limb arm falls off. Shoot the head and the head falls off and rolls away like that.