Download

Rigging props with bones and draw call question.

If I’m rigging a prop like a crate, and say I want to use separate bones for the lid, handles, base etc. Does each bone count as a separate draw call?

Reason I’m asking is because when I used the Cryengine, this was a problem, bones caused drawcalls.

Individual bones dont cause drawcalls. Individual skinClusters do. So if you combine all your prop components into one single object and use several bones for all parts while keeping it a single skinCluster, youll only have a single draw call. A second drawcall is required after 255 bones in one skinCluster tho.

I kinda want to add to this question, is there a certain point when you want to turn a prop from a static mesh into a skeletal mesh? Like the crate example, or a fan with one moving part and the rest static, or some moving pistons or mechanic parts in the environment. Because you can easily put together some of those things into a blueprint and use that to drive the animations.

Depends on how many moving parts a single asset has and how simple/complex those have to move. Or if they have to deform on geometric level rather than just move as a whole.

Thanks for the replies.

When you say skin cluster. Let’s use the crate for example. If I have the lid point weighted to one bone and the base of the crate point weighted to another; does that count as two skin clusters? Since the lid will be able to come off…

need to keep in mind the following:

with 2 static meshes - e.g. a box with a lid that is animated… the game takes 2 draw calls and each mesh has its own transform.

when you switch to a skeletal mesh, each bone in the skeleton has to be interpolated between keyframes, and sent to the gpu in a uniform buffer, and a significantly more complex shader is utilized to multiply the transform matrix for each bone and apply to each interpolated fragment.

It is such a vast oversimplification to say a skeletal mesh saves a draw call and imply it performs better.

btw - skincluster is a maya term - implies two separate skeletal meshes.

If you want your top to come off, just use two separate static meshes.

Hey, thanks for the detailed explanation.

you can also use a single static mesh and use WPO to make the top come off. probably the “best” solution performancewise but more or less involved depending on how you need the top to come off.