No announcement yet.

Understanding Shared Skeleton + Skeletal Mesh Performance

  • Filter
  • Time
  • Show
Clear All
new posts

    Understanding Shared Skeleton + Skeletal Mesh Performance

    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.