An Approach to Live2D Viseme Rigging

Sally Slade
3 min readAug 25, 2021
Live2D is a software which prepares illustrations for 2D animation. Visemes refer to the appearance of the mouth as it makes a particular sound.

This article is a technical overview of how to rig Live2D models for optimal mouth animation in Vodcasto.

Parameters in Use

We will focus on just two Live2D Parameters: Mouth Open and Mouth Form. Using these two Parameters, we can get quite far!

Overview of Mouth Open

Mouth Open is a default Live2D Parameter: It will be automatically setup with proper ranges and naming conventions upon software launch.

Mouth Open is a floating point value from 0 to 1: At 0, the model’s mouth should be fully closed; at 1, the model’s mouth should be fully open.

We will implement Mouth Open and Mouth Form simultaneously.

Mouth Form while Mouth is Closed

The Mouth Form Parameter is a floating point value spanning -1 to 1. Intuitively, you may want to map the Mouth Form range of -1 to 1 from a Frown (-1) to a Smile (1). This is only partially correct!

If you do a few exercises in the mirror, you’ll notice that your natural “Maximum Smile” involves a bit of teeth.

I brushed my teeth for this!

If we were to blend directly from a “Neutral Pose” to a “Maximum Smile”, we would be seeing an emergence of teeth from the very first blended frame. This is undesirable, as our teeth only seem to pop into existence towards the end of our smile!

Therefore, we need an additional blendshape, between “Neutral Pose” and “Maximum Smile”. This will prevent our teeth from revealing too soon.

Live2D allows us to insert arbitrary, additional keyframes into Parameters: We will add an additional keyframe at the 75% mark.

Regarding the blendshape for the 0.75 mark, it should be approaching the width of your character’s “Maximum Smile”, but bearing no teeth. At the 1.0 mark, we will define the “Maximum Smile”, including visible teeth.

It’s a bit unintuitive, because the Mouth Open value will remain at zero (0.0) despite the character’s lips parting. Consider that the character’s jaw remains fully closed.

Mouth Form while Mouth is Open

Similarly, a curveball exists when the Mouth Open value is at one (1.0) as well: Rather than an open-mouthed Frown as we might suspect at the nexus of Mouth Open fully open (1.0) and Mouth Form fully frowning (-1.0), we’ll use a “pucker” expression.


If you’re keeping score, that’s a total of seven keyframes across two Parameters needed to complete our desired mouth shapes. Here they are in a single graphic:


I’ve found that the combination of showing teeth at the corner of Mouth Open (0.0) and Mouth Form (1.0) as well as showing a pucker expression at the corner of Mouth Open (1.0) and Mouth Form (-1.0), we are able to achieve the desired “aa, ee, oo, eh, oh” visemes when using Vodcasto.

But, don’t take my word for it, see for yourself!

Demonstration of Visemes in action. Thanks for reading!