Mesh sockets/bones optimization question, do they impact performance?

In lieu of an official answer, I have gone through the source. I can’t make any guarantees but here is what I believe to be true.

It looks like sockets are updated when they are used, not on each tick. So they shouldn’t impact performance unless/until you use them. If you call (for example) GetSocketTransform() for many sockets on each tick then you will potentially get a performance hit. But if they are just there waiting to be used then they are not updated on each tick and shouldn’t create a performance hit.

It is worth noting, however, that sockets deal with matrix transformations which are very fast. It may take a considerable number of sockets to notice any performance hit even if you update many of them on each tick.

This all changes when you start animating. Animations allow for sockets to be set to always update (USkeletalMeshSocket::bForceAlwaysAnimated). If that is set then every socket will get updated on every animation tick.

That’s the best I can figure. I invite anyone to prove me wrong.

3 Likes