I know there is no way to delete a bone from the hierarchy that you imported with your original skeletal mesh, but as many of you know, if you import the same skeleton but with additional bones, those additional bones will be added to the original imported skeletal mesh.
I’m wondering if it’s possible to delete those bones? For example, what if you decide to delete that additional skeletal mesh from your game for good. Is your primary skeletal mesh now stuck with those bones forever? : /
This leads me to my dilemma right now. I’m torn between two modular character options:
have a primary skeleton. The modular components like hair, body modifications such as wings and sometimes dresses have additional bones that are attached to the same skeleton as the main character. For this reason I can easily add 100s of modular item addons to my character and they all share the same skeleton. Awesome! But my bone hierarchy will have thousands of bones. How does this fair for performance? Is UE4 properly ignoring all those bones when not in use? If so, this seems like he easiest route! I did notice that the added bones are automatically greyed out in the hierarchy and also removed in LOD settings by default. I guess UE4 must activate them only when they are in use? Can UE4 handle thousands of bones?
have each modular character addon item be a separate skeletal mesh and socket it. Either the addon skeletal mesh could be the whole skeleton in which case i would socket to the root or I could minimize the modular addon skeleton to just whats needed. So for example for wings, I would socket that skeletal mesh to my characters middle spine. This seems CLEANER, but would it be more performant and cause less issues down the road?
The main question is, how would the UE4 engine manage with a skeletal mesh that literally has thousands of bones. My project is quite fashion oriented so I really will have hundreds if not thousands of clothing items and body modifications/accessories in time.
I am scaling for high-end PCs so the info I’ve seen in GDC fortnite talks etc about skeleton/animation optimizations hasn’t been super helpful doh.
Any opinions would be very welcome and appreciated. I’ve been sitting on this conundrum for too long : P
Hang on a minute.
skeleton/bones are expensive IF you place a massive amount of characters on screen.
so much so that UE4 actually allows you to control which bones to LOD at a distance within the skeletal meshes.
so before going with any option that puts more bones be aware of that.
there is indeed a limit too how many bones can be on screen, since each bone has some sort of cost on both GPU and CPU end for calculations.
fortnite, which you actually said you would disregard, uses a ton of skeletal parts for different characters. Each face is added on, body parts with wings and such. They each have their bones to animate. (Some may be baked out of the bones later on actually).
But they combine the stuff with the PHAT asset to generate moving bits etc. Some of their higher end talks may really be worth your time on this.
Option 2, socketing, is much more versatile as you can reuse with any skeleton.
and today, you can even use Control Rig to animate those socketed things.
so I don’t particularly see any reason to go with route 1.
Keep testing performance in a finished, possibly populated with other skeletons, level to determine when you have too many bones to the point performance is impacted. (I would also suggest testing on a low end machine instead of a high end one, if it works on low end it will work better high end, but not necessarily the other way around).
Thanks so much for thinking of this
[USER=“3140864”]MostHost LA[/USER]
It’s a single player game but i’d still like to use an optimized method since it’s early days.
I’ve read that fortnite uses multiple skeletal parts, but i haven’t found any detail on this. For example, what does the skeletal mesh head skeleton look like? Is the head skeleton an identical copy of the main base skeleton or is it just a few bones or even just one bone? What if for instance I had 6 similar skeletons but with extra peripheral bones socketed at the root to the main skeleton? Would that be more performant than adding the peripheral bones to my main skeleton and having each skeletal mesh share that skeleton?
Regarding Option 1) even if I have 1000 bones. Is there really a cost for all 1000 if only 50 of them have animation data sent to them and their corresponding skeletal mesh is set and visible? I’m wondering if a cost is incurred only if those bones are doing something.
Lots of questions as you can see. Hope to keep this thread going.
Yes. There is cost if they are on screen. They are likely being calculated.
I have an idea though, downalod Twinblast and check out the insane number of bones he has. (Export one of his animations)
This will give you an idea of how many bones you can end up with on a main skeleton.
Also hook him up for play, and debug anim.
This will show you what bones are actually in use. The gun stuff is at the bottom in the export. If you see the bones in the anim debug, they are being calculated as well.
If you dont, hook annanimation that uses them and see if they “appear” or not…
Yours is a very valid question, I never did test this way.
For facial rigs I believe usually it’s around 32 bones on a complex setup.
The blender default one from rgify may be a little lighter, but it’s still a lot of bones.
Performance wise they can all be culled with LOD once over 10m away… you can’t really tell anyway.