自動まばたきの設定
最終更新: 2022年3月18日
ここでは、モデルに自動でまばたきをさせる方法を説明します。
以下は[SDKのインポート~モデルを配置]をおこなったプロジェクトに追加することを前提とした説明となっています。
概要
モデルに標準パラメータの[左眼 開閉(ParamEyeLOpen)]、[右目 開閉(ParamEyeROpen)]が設定されている場合、
インポートして生成されるモデルのPrefabには自動でまばたきの設定が行われます。
上記の設定をしていないモデルに自動まばたきをさせる場合は、本記事で説明する手順で設定することが出来ます。
まばたきの設定は、Cubism SDKでは EyeBlink というコンポーネントを利用します。
CubismのモデルにEyeBlinkを設定するには、以下の3つを行ないます。
- まばたきを管理するコンポーネントをアタッチ
- まばたきをさせるパラメータを指定
- まばたき用パラメータの値を自動で操作するコンポーネントを設定
まばたきを管理するコンポーネントをアタッチ
まばたきを管理するCubismEyeBlinkControllerというコンポーネントをアタッチします。
CubismEyeBlinkControllerには、設定項目が2つあります。
– Blend Mode:指定のパラメータに現在設定されている値に対して、Eye Openingの値をどう計算するのかを指定します。
- Mutiply:現在設定されている値にEye Openingの値を乗算します。
- Additive:現在設定されている値にEye Openingの値を加算します。
- Override:現在設定されている値をEye Openingの値で上書きします。
– Eye Opening:目の開閉の値です。1で開いた状態、0で閉じた状態として扱います。この値が外から操作されると、指定されたパラメータの値も連動します。
今回は、Blend Modeは[Override]に設定してください。
まばたきをさせるパラメータを指定
[モデル]/Parameters/ 以下には、そのモデルのパラメータを管理するGameObjectが配置されています。
また、このGameObjectに設定されている名前はパラメータのIDとなっております。
これらはCubismModel.Parameters() で取得できるものと同一です。
このパラメータ用のGameObjectの中から、まばたきとして扱うIDのものに、CubismEyeBlinkParameterというコンポーネントをアタッチします。
パラメータ用のGameObjectに CubismEyeBlinkParameter がアタッチされていると、シーン実行時にCubismEyeBlinkControllerがそれを参照して目の開閉を設定するようになります。
以上までの設定で、スクリプトなどからまばたきの操作を行うことができるようになりますが、これだけではまだ自動でまばたきは行いません。
自動でまばたきをさせるためには、定期的に値を操作するコンポーネントも設定する必要があります。
まばたき用パラメータの値を自動で操作するコンポーネントを設定
CubismEyeBlinkControllerと同じく、モデルのルートにCubismAutoEyeBlinkInputというコンポーネントをアタッチします。
CubismAutoEyeBlinkInputには、以下の3つの設定項目があります。
– Mean:まばたきを行うまでの時間を設定します。単位は秒です。実際は、この値に Maximum Deviationによる誤差を足した時間が使われます。
– Maximum Deviation:Meanで設定した時間に加える揺らぎの最大値を設定します。設定する値は0以上の数値です。
上記のMeanに設定した時間でまばたきをさせると、周期が均一になるため、キャラクターの動作としては不自然になってしまいます。
そのため、設定した時間の周期にランダムで揺らぎを加え、動作を自然なものにしています。
実際の計算は以下のようになっています。
次のまばたきまでの時間 = Mean + (-Maximum Deviation から +Maximum Deviation間のランダムな値)
– Timescale:目の開閉する速度を設定します。設定する数値が小さくなるほどゆっくりになります。
今回はMeanに2.5を、 Maximum Deviationに2、Timescaleに10を設定します。
以上で自動まばたきの設定は完了です。
この状態でSceneを実行すれば、自動でまばたきをさせることができます。