表情の仕組み
最終更新: 2021年4月27日
このページでは、組み込み時に使用する表情データについての仕組みを解説しています。
アニメーションビューでの表情の作成方法については『アニメーションビューで表情を作成』をご参照ください。
組み込み用のデータを書き出す手順については『組み込み用データ』をご参照ください。
表情用のmotion3ファイルをCubism Viewer (for OW)に読み込む手順については『表情の設定と書き出し』をご参照ください。
表情のパラメータについて
ゲームやアプリでの表情を設定するためには、表情用のmotion3.jsonファイルを用意する必要があります。
ここで用いる表情用のmotion3.jsonファイルにはデフォルト値と表情値の2つの値が記述されています。
デフォルト値と表情値、2つのパラメータ値の差の値が、モデルの表情に影響を与えることになります。
「怒り」の表情を例に挙げて説明します。
デフォルト | 怒り |
---|---|
表情のデフォルト値と「怒り」の表情値と、それらの差は下表の通りになります。
デフォルト | 怒り | 差 | |
---|---|---|---|
左目 開閉 | 1 | 0.8 | -0.2 |
左目 笑顔 | 0 | 0 | 0 |
右目 開閉 | 1 | 0.8 | -0.2 |
右目 笑顔 | 0 | 0 | 0 |
目玉 X | 0 | 0 | 0 |
目玉 Y | 0 | 0 | 0 |
左眉 上下 | 0 | -0.4 | -0.4 |
右眉 上下 | 0 | -1 | -1 |
左眉 左右 | 0 | 0 | 0 |
右眉 左右 | 0 | 0 | 0 |
左眉 角度 | 0 | -1 | -1 |
右眉 角度 | 0 | -1 | -1 |
左眉 変形 | 0 | -1 | -1 |
右眉 変形 | 0 | -1 | -1 |
口 変形 | 1 | -2 | -3 |
口 開閉 | 0 | 0 | 0 |
この「差」の値が、別に作成したモーションのパラメータ値に加算されます。
標準の設定では加算ですが、Cubism Viewer (for OW)での表情設定やプログラム次第で乗算にすることもできます。
デフォルト値と表情値の差が「0」の場合、変化はありません。
注意すべきパラメータ
モーションでよく動かす「左目 開閉」「右目 開閉」「目玉 X」「目玉 Y」と、
口パクに影響する 「口 開閉」 は、設定に注意が必要です。
目の開閉について
「怒り」表情を表現するために目の開閉に関する 「左目 開閉」「右目 開閉」でデフォルト値が「1.0」、
表情値が「0.8」に設定された場合、まばたきのモーションに差の「-0.2」が加算されます。
このとき、はじめから「 0.2 」だけすでに目が閉じてあるので、まばたきの動きで目が閉じきるまでの時間が少しだけ長く、
閉じている時間も少しだけ長くなります。
逆に、「驚き」など目が見開いているような顔で表情値が「1.2」で差が「0.2」の場合、
まばたきで目が閉じる「0」のときに「0.2」が加算されるので、目が閉じきらないということになります。
これらの場合では加算では対応しづらいので、乗算を使うと良いです。
目玉の位置について
表情値の目玉の位置もデフォルト値と同じにして表情を作ることをおすすめします。
前述の通り、モーション再生時はデフォルト値と表情値の差がパラメータ値に加算されるので、
「目玉 X」「目玉 Y」をデフォルト値以外に設定した表情で目線を動かすモーションを再生すると、意図しない方向を見てしまうことがあります。
基本的には「目玉 X」「目玉 Y」はデフォルト値に設定しておき、目線はモーション側で制御することをおすすめします。
「目玉 X」「目玉 Y」をデフォルト値以外に設定したい場合は、目線がおかしくならないよう考慮してモーションを作成しましょう。
口の開閉について
基本的に「口 開閉」のデフォルト値と表情値は「0」に設定して下さい。
もしくは、はじめから表情の設定から除外して表情用のmotion3.jsonファイルを作成しても構いません。
表情値が「0.2」など、口が半開きになるように設定すると、リップシンク時に口が閉じきらずに不自然な形になってしまいます。
意図した形であれば問題ありませんが、リップシンク時に口を閉じ切る形にしたい場合は表情値を「0」にしておきましょう。