Parenting Meshes under bones messes up skeleton hierarchy.

This seems like making characters in game engines 101, but struggling here.

I am trying to setup a character that has multiple outfits. I am trying to share a skeleton between multiple skeletal meshes. Each skeletal mesh is setup to use the same skeleton. However each skeletal mesh has some amount of unique meshes parented under the bones. If a mesh is bound to only one joint, I am accustomed to parenting it under a bone to save on the calculation of skin weights and increase performance. So because each skeletal mesh has meshes parented under bones this is adding to the base skeleton that all skeletal meshes share.

This has multiple issues.

  • It adds extra bones to the skeleton that appear to only be used on certain skeletal meshes and is visual bloat in the skeleton.
  • It also means each time I change a skeletal mesh and reimport all animations need to be updated and checked out.

The skeletal Meshes have the import setting, “import meshes into bone hierarchy”. Which when on does what is described above. When turned off, it still create the bones in the skeleton but meshes aren’t imported.

Ideally I would like to be able to parent meshes under bones in Maya. Then when importing the skeletal mesh in unreal, it doesn’t add a bone to the skeleton, and it still has the mesh properly parented under the bone.

Is there a way to have meshes parented under bones by importing a skeletal mesh without adding bloat to the shared skeleton or am I forced to skin meshes to bones and eat the cost of skin weights.

I am working in Unreal 4.22 and exporting FBX from Maya 2019 using FBX 2018.

Best,
Jason

Hey Jason, Just curious really, what about socketing the meshes?
If you create sockets on any skeleton anyone/anything using the same skeleton has access to the same sockets.

The processing cost might be higher because of sync, but the sync process has been built in and refined, especially now with the control rig component that’s out.

Yes, you would have to manually assign each mesh to each socket in the editor for preview, but aren’t you already coding in some way to change attire in your game anyway? You could probably expose those variables so you can change clothing on the fly in the editor/persona/character blueprint window…

This is a “feature” that was added along the way so that a base rigging can be added but can make use of the same animations. The Paragon characters for example make use of the same basic UE4 rig but add the additional bones. Since the mesh is linked to the rig the mesh becomes a bone object so it’s not really adding the mesh detail but the naming convention of the mesh as a bone object.

The work around is to give the mesh a common name, which would be best practice anyways, before importing so instead of naming the mesh based on perception of the object, like “Fred”, name it instead “mesh_object”

Thanks Frankie and MostHost.

It seems I will soft skin the meshes to a single joint instead of parenting. I don’t want to go the socket route because of the overhead of setup, iteration time and runtime sync.

Well you can always unparent the mesh before importing.