An Approach to Live2D Viseme Rigging

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.

Summary

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:

Conclusion

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!

--

--

--

XR Developer, Artist

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

CS373 Spring 2022: Matthew Escobar Blog #6: What’s a Front End?

Codility Algorithm Practice Lesson 8: Leader, Task 2: EquiLeader— a Python approach

Detail of CPU Socket on Motherboard

Running Windows PowerShell

What is Abstract classes?

Creating an iOS Timer-App without Storyboard

How To Send Multiple Freebies Using Just One List In MailChimp For Free

Codeigniter 3 tutorial ~ Using Multiple select2 and saving with json format

RxJava DebounceIf Operator

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Sally Slade

Sally Slade

XR Developer, Artist

More from Medium

Violet and her…….

The Result of Stack Overflow Developer Survey, 2017

Bernoulli’s Principle & Bernoulli’s Equation — NEET Physics| Class 11

Find All The Odd Numbers