Facial Expression Mechanism

Updated: 04/27/2021

This page is for Cubism version 4.2 or earlier. Click here for the latest version.

This page explains the mechanism for facial expression data used during embedding.

See “Create Facial Expressions in Animation View” for more information on how to create expressions in the Animation View.
See “Data for Embedded Use” for the procedure for exporting data for embedded use.
See “Facial Expression Settings and Export” for details on how to import motion3 files for facial expressions into Cubism Viewer (for OW).

About the Parameters of Facial Expressions

To set up facial expressions in a game or application, a motion3.json file for facial expressions must be created.
The motion3.json file for facial expressions used here contains two values: a Default value and an Expression value.
The default value, the expression value, and the difference between the two parameter values will affect the expression of the model.

Example) Expression of “anger”


The default values for the facial expressions, the expression value for “angry,” and the difference between them are shown in the table below.

Left eye Open/Close10.8-0.2
Left eye Smiling000
Right eye Open/Close10.8-0.2
Right eye Smiling000
Eyeball X000
Eyeball Y000
Left eyebrow Up/Down0-0.4-0.4
Right eyebrow Up/Down0-1-1
Left eyebrow Left/Right000
Right eyebrow Left/Right000
Left eyebrow Angle0-1-1
Right eyebrow Angle0-1-1
Left eyebrow Deformation0-1-1
Right eyebrow Deformation0-1-1
Mouth Deformation1-2-3
Mouth Open/Close0 00

This “difference” value is added to the parameter value of the motion created separately.
The standard setting is additive, but it can also be multiplicative depending on the expression setting in Cubism Viewer (for OW) and the program.

If the difference between the default value and the expression value is “0,” there is no change.

Parameters to Note

The “EyeL open/close,” “EyeR open/close,” “Eyeball X,” and “Eyeball Y,”

which are often used in motion, and “Mouth open/close,” which affects the mouthpiece, should be set carefully.

Opening and closing of eyes

If the default value for “EyeL open/close” and “EyeR open/close” to express “angry” expression is “1.0” and the expression value is set to “0.8,” a difference of “-0.2” is added to the blinking motion.

In this case, since the eyes are already closed by “0.2” from the beginning, the time until the eyes are fully closed by blinking will be a little longer, and the time to close the eyes will also be a little longer.

Conversely, if the expression value is “1.2” and the difference is “0.2” for a face with wide-open eyes such as “surprise,” the eyes do not close all the way because “0.2” is added to “0” (when eyes close by blinking).

In these cases, it is difficult to deal with addition, so multiplication should be used.

Position of the eyeballs

It is recommended that the position of the eyeballs in the expression value also be set the same as the default value to create the expression.

As mentioned earlier, during motion playback, the difference between the default value and the expression value is added to the parameter value. Therefore, when playing back eye movement motions with facial expressions in which “Eyeball X” and “Eyeball Y” are set to non-default values, the eyes may look in unintended directions.

Typically, we recommend that “Eyeball X” and “Eyeball Y” be set to default values, and the eye line be controlled on the motion side.
If you want to set “Eyeball X” and “Eyeball Y” to values other than the defaults, create the motion ensuring that the eye line is correct.

Opening and closing of the mouth

Typically, the default value and expression value for “Mouth open/close” should be set to “0.”
Alternatively, you may create a motion3.json file for facial expressions, excluding them from the facial expression settings from the beginning.
If the expression value is set so that the mouth is half-open, such as “0.2,” the mouth will not close fully during lip-sync, resulting in an unnatural shape.
If you want the mouth to be fully closed during lip-sync, set the expression value to “0.”

Was this article helpful?
Please let us know what you think about this article.