MorphTargets vs Bones

I have a question about skinned animations.

Which is faster for the engine to perform? MorphTargets vs Bones/skeletal animation?

Currently have a mesh model animated via morphtargets. Just a simple ‘basis’ and ‘move’ shapekey exported from blender.

Is the MorphTarget faster ? If skeletal/bones are faster, I might consider adding bones/armature instead.

First, you may only have 4 shape keys per mesh in BJS’s GPU implementation of morph targets, so in most cases it is a matter of which is going to work.

You only have 1 key (basis does not count). If this is working, I would keep it.

From a performance standpoint, you have CPU / bone overhead, but none for morph targets. GPU is probably a wash.

Also, a little more color on choosing between the 2. Morph targets are linear, where as armatures can rotate bones individually. Take the case of moving fingers. You can have a morph target, but unless you do it fast it is going to look weird. See here where I am doing finger gestures using shape keys. I made the decision to scrap all those finger bones, so I could run at all on iOS (plus many bones is a dog). Consequence is if you take more than 200 millis, it is going to look terrible in the middle.

Do some gestures, they look “fine”, right? Now, bump up the duration to 500. The knuckles look weird from some angles. It only gets worse.

There are many more trade-offs as well.

Good luck, and welcome.

Yes, my current animation is very simple and linear and morph targets did the job. I was just interested if it was the most optimized task for this particular simple animation and it seems based on what you said, it was. I think I will use bones for other types of animation in future. Currently all the animation is very linear use for my purpose now. Thanks!