I’m trying to get better understanding of what actually affects the performance when sharing a skeleton between multiple skeletal mesh characters in ue4.
My source files are (3dsMax):
-
A single common bone rig which contains a high number of bones/nodes e.g. 250
-
I have two skinned characters
-
Character (cutscene) A - skinned to all of the bones (for example)
-
Character (in-game) B - skinned to just a subset of these bones e.g. 50
-
In-game animations use 50 bones
-
Cutscene animations use the full 250 bones
In UE4:
- I import the Character A and it generates the unreal SKELETON asset with the full bone list (250)
- I import Character B and tell it to use the same skeleton file as above
- I import all animations using the same skeleton
Both characters can now share animations, so this is good and what I want and the skeleton is mapping the animations to the correct channels. This means I can:
- Play in-game and cutscene animations on my in-game character B
- Play cutscene and in-game animations on my cutscene character A
But, even though Character B is only skinned to 50 bones (i.e. a small set of what’s in the skeleton mapping file) - is it bad for performance for it to be using the SKELETON uasset that contains many (250) channels that won’t effectively be being used in game (as the Character B asset will only ever be being affected by just the 50 bones (core set) and not the full 250?
Is it better for performance to have a separate skeleton file for the in-game Character B with just the 50 bones in it (and lose the ability to share anims between them (without animation re-targeting and generating new assets)?
Is the performance mostly related to how many of the skinned bones (in the respective skeletal mesh assets) are being driven by a given animation, and not specifically anything to do with the contents of the skeleton file?
If I play a 250 bone authored animation on Character B (skeletal mesh skinned to just 50 bones), is that inefficient in theory?
Hopefully this makes some kind of sense, and appreciate any thoughts on this. Note: I have assets imported, played around with them but not done any performance testing specifically - this is just a trying to understand better how it all ties together in terms of what affects the performance.
Any thoughts or help appreciated. Thanks.