How to facial animation

what is the JME compatible way to make facial animation? using bone and skeleton? or something else?

I do not believe there is currently a jME solution specifically targeting facial animation.
Even though I have not personally attempted it, I do believe the existing skeletal animation system could be used for facial animation, with the right configuration of bones and proper
mapping (and weighting) of mesh vertices to those bones. My thinking is that the actual modeling of the face mesh to be animated is a more significant factor of success than the chosen method of animating.

Worth noting:
I would highly suggest getting a copy of Stop Staring: Facial Modelling and Animation Done Right by Jason Osipa (amazon) as an essential reference for Facial Modelling, Animation, and Speech Synchronizing. The book is very easy to read, and provides enough insight to be the source material for an entire course on it’s own.


One common way of doing facial animation is using morph (shape key) animation. Morph animation is already supported in JME 3.3 through the Gltf pipeline.

Blender shape key animation tutorial:


what is gltf? (where is the docs?)
is it possible to upgrade jme to jme 3.3 from sdk? or I must get it from github?

Here is what google says: glTF Overview - The Khronos Group Inc

1 Like

No, SDK is based on JME 3.2 atm.

The 3.3-alpha2 release is available on GitHub

If you are using Gradle or Maven you can get 3.3-alpha2 from bintray:

1 Like


about morph animation, i post this video like third time :smiley: this morph work nice, but you would need use it via code in JME 3.3 and use .gltf like mentioned above.

Here is how i made lipsync with this, so facial animation can be done same way:

1 Like

That is how the Jaime model does facial animation. See TestJaime in the “JmeTests” project.

1 Like

As I recall, one limitation of jME’s skeletal animation is that each vertex can only be influenced by at most 16 bones. In a complex facial rig, that might be an issue. I’d personally lean in favor of morphs for this usecase.

Someone feel free to correct me if my memory has slipped on this one though.


same about morph vertex affected number. there is limit.

so seems like mixing both is perfect solution here.


A JME mesh vertex can be influenced by up to 4 bones.

The main advantage of skeletal animation is that it doesn’t require JME 3.3, which is still in alpha.


Eeyikes. That’s a pretty slim limit on a complicated rig. Maybe it’s enough in practice, but it strikes me as slim.


Seems 4 is kind of an standard most of the engines use


| UE4 | 8 |

do allowing more make framerate slower? cant we also make 8 ? :slight_smile:

1 Like

I think it’s about material parameters when using hardware skinning. But I could be wrong.

Oi, I was way off. Not sure where I came up with 16… maybe from a file format restriction.

1 Like