Multiple Skeletal Meshes Rag-Doll?

I have my character separated into several skeletal meshes to allow for swappable armor using SetMasterPoseComponent. As far as I understand it this is a common technique.

However, I can’t for the life of me figure out how to get rag-dolls to work properly when doing this, as I can’t create the physics asset like normal. I can only create a physics asset for each individual piece and can’t link them or anything like that so he just falls ‘to pieces’.

How would I get rag-dolls to work when using multiple skeletal meshes for your character?

Thanks!

Figured it out.

Only the master pose component’s physics asset is used, so you have to create a physics asset that contains all the parts of your model.

To do this combine all the separate pieces in your 3D software and export them together to create a combined full body mesh (make sure they are skinned as well!), then import it into Unreal and create a physics asset from it. Then you can use that physics asset on your master pose component and you’re hot to trot pretty much.

You also have to make sure that all your parts are attached to the master pose component, or you will get other issues during physics simulation.

EDIT:

On the part that will serve as the master pose component (the pelvis in my case) you must make sure to add all the bones to the skin, even if they have zero weight on the pelvis! On every other swappable part, it suffices to only add the bones to the skin you need (that have weight). At least this is how it is in 3DS Max, where you have to manually add bones to your skin modifier. The process in other 3D applications may differ.

1 Like

I was trying to figure this out as well, thanks. Appreciate people updating their questions if they find the answers out themselves :slight_smile:

1 Like

THIS POST IS INCORRECT!
I have updated my previous post with new information that fixed this issue and removes the need for these hacks.

There are some other things I should mention.

I can’t get it to work with just the pelvis as the master pose component. Perhaps this is some kind of animation optimization where if there are bones that do not influence the mesh they are not updated. So, I can only get it to work with the full body mesh I used to generate the physics asset as the master pose component. Obviously you don’t want to see the full body mesh, just the individual swappable pieces, so you set it to invisible and turn off cast hidden dynamic shadows.

This however will cause animations and whatnot to stop (since the engine thinks you can’t see it, so why update it?) so you need to turn on ‘AlwaysTickPoseAndRefreshBones’, which looks like this in C++ (although there is a tickbox for it somewhere in blueprint too).



MasterPoseComponent->MeshComponentUpdateFlag = EMeshComponentUpdateFlag::AlwaysTickPoseAndRefreshBones;


That should be all the important bits to get anyone who wants to do this up and working. However having to use the full body mesh as the master pose component and setting it to invisible strikes me as a hack, and I figure there must be a way to just make the master pose component be just the pelvis or head. If anyone has done this and can share please do, there is sometimes a lack of discussions on the more ‘advanced’ topics of UE4.

Furthermore, having to use ‘AlwaysTickPoseAndRefreshBones’ almost certainly causes it to update animation even when the mesh is off-screen. We don’t want that, so, this is not the end all be all solution here and somewhere there is a better way.

I’m about 6 years too late to this but I was having the same issue and found the solution.

On the Master mesh, simply set Physics Transform Update Mode from “Simulation Updates Component Transform” to “Component Transform is Kinematic”.

2 Likes