リップシンクの設定 (SDK for Cocos Creator)
最終更新: 2023年3月14日
ここでは、モデルにAudioSourceの音量からリップシンク(口パク)をさせる方法を説明します。
以下は「SDK のインポート」をおこなったプロジェクトに追加することを前提とした説明となっています。
AudioSourceから音量を取得して設定するため、別途Cocos Creatorで扱える形式の音声ファイルをご用意ください。
概要
リップシンクの設定は、Cubism SDKでは MouthMovement というコンポーネントを利用します。
CubismのモデルにMouthMovementを設定するには、以下の3つを行ないます。
1.リップシンクを管理するコンポーネントをアタッチ
2.リップシンクをさせるパラメータを指定
3.指定されたパラメータの値を操作するコンポーネントを設定
リップシンクを管理するコンポーネントをアタッチ
モデルのルートとなるNodeに、リップシンクを管理するCubismMouthControllerというコンポーネントをアタッチします。


CubismMouthControllerには、設定項目が2つあります。
- Blend Mode:指定のパラメータに現在設定されている値に対して、Mouth Openingの値をどう計算するのかを指定します。
- Multiply:現在設定されている値にMouth Openingの値を乗算します。
- Additive:現在設定されている値にMouth Openingの値を加算します。
- Override:現在設定されている値をMouth Openingの値で上書きします。
- Mouth Opening:口の開閉の値です。1で開いた状態、0で閉じた状態として扱います。この値が外から操作されると、指定されたパラメータの値も連動します。
今回は、Blend Modeは[Override]に設定してください。

リップシンクをさせるパラメータを指定
[モデル]/Parameters/ 以下には、そのモデルのパラメータを管理するNodeが配置されています。
また、このNodeに設定されている名前はパラメータのIDとなっております。
これらのNodeにアタッチされているCubismParameterは、CubismModel.parameters で取得できるものと同一です。
このNodeの中から、リップシンクとして扱うIDのものに、CubismMouthParameterというコンポーネントをアタッチします。


以上までの設定で、口の開閉の操作を行うことができるようになります。
ですが、これだけではまだ実行してもリップシンクはしません。
自動でリップシンクさせるためには、CubismMouthControllerのMouth Openingの値を操作するコンポーネントも設定する必要があります。
指定されたパラメータの値を操作するコンポーネントを設定
モデルのルートとなるNodeに、リップシンクの入力用コンポーネントをアタッチします。
MouthMovementには、入力のサンプルとして、AudioSourceのボリュームやSin波から口の開閉の値を操作するコンポーネントが含まれています。
今回はAudioSourceから値を設定できるよう、CubismAudioMouthInputというコンポーネントをアタッチします。


CubismAudioMouthInputには、以下の4つの設定項目があります。
- Audio Input:入力に使用するAudioSourceを設定します。ここで設定したAudioSourceにセットされたAudioClipの音量を使用します。
- Sampling Quality:サンプリングする音量の精度を設定します。以下の設定の並びが下になるほど精度が上がりますが、計算の負荷も上がります。
- High
- Very High
- Maximum
- Gain:サンプリングした音量を、何倍した値で扱うかを設定します。1で等倍です。
- Smoothing:音量から算出する開閉の値をどのくらいスムージングするかを設定します。値を大きくするほど滑らかになりますが、計算の負荷も上がります。
今回は、設定を以下のようにします。Audio Inputには、AudioSourceをアタッチしたNodeを設定しておいてください。
- Sampling Quality:High
- Gain:1
- Smoothing:5
最後に、音量を取得するために、任意のNodeにAudioSourceをアタッチし、上記のCubismAudioMouthInputのAudio Inputに設定します。


以上でリップシンクの設定は完了です。
この状態でシーンを実行すると、AudioSourceに設定された音声ファイルが再生され、その音量に合わせてモデルがリップシンクするようになります。
