ExpressionsMenuから表情の切り替え

完成イメージ


動画ではExMenuを利用して、Fistのハンドサインに任意の表情をセットしています。

実装方法の解説記事になりますが、以下に注意してください。
・Unity及びアニメーションコントローラーの知識はゼロのため、なんとなく動いた感じの実装になっています。
・結論から言うと、めんどくさいだけであまりおすすめはできません。表情ごとの細かいアニメーション表現もできませんし…。


プロパティの用意


ExpressionParametersに各ハンドサイン分のパラメータを追加します。

〇〇FaceType…
実行する表情を管理するパラメータです。初期値については後述するためとりあえず0で作成で良いです。Savedのチェックは入れておきましょう。

〇〇FaceSet…
ExMenu表示中のプレビュー表示の管理フラグとして利用します。


ExpressionsMenuの作成


新しくExpressionsMenuを作成します。
今回はLitteちゃんの表情コントロールのため[LitteFaceControlMenu]としました。

ハンドサイン7個分のメニューを追加し、すべてに同等の設定を行っていきます。
今回は、Fistのみ例として記載します。

名前…Menuに表示される表示名を任意で設定します。
アイコン…特に設定の必要はありません。
タイプ…Radial Puppet を選択します。
Parameter…パラメータに追加した〇〇FaceSetを選択します。
Paramater Rotation…パラメータに追加した〇〇FaceTypeを選択します。

作成した[LitteFaceControlMenu]をサブメニューとしてメインのExMenuに追加しておきます。


Animationの作成


作成するアニメーションファイルは2つです。
1つ目は、Idle時の表情アニメーション。


2つ目は、設定したいすべての表情を並べたアニメーション。

こちらは0:00~4:00に1つ目の表情、5:00~9:00に2つ目の表情という感じで、20個の表情を設定しています。
サンプルは20個入れていますが、好きに増減させて実装してください。個数に決まりはないです。

このときExMenuのFistを選択した場合、0%~4%が1つ目の表情、5~9%が2つ目の表情といったイメージになります。

ここでパラメータの初期値の話に戻ります。
20個の表情を設定しているため5%刻みで表情が切り替わります、今回はFistには4つ目の表情を初期設定したいため0.15を初期値として入力します。
(0→1つ目の表情, 0.05→2つ目の表情, 0.1→3つ目の表情)


AnimationControllerの設定


Fxレイヤーの用意については、一般的なハンドサインの設定で作成されるため、ここでは在るものとして記載します。

パラメータの追加

AnimationControllerのパラメータに作成したパラメータを追加します。

レイヤーの設定
レイヤーはデスクトップ時にも表情を切り替えれるようにLeft Handを変更していきます。

変更前の状態

Idle状態の設定
Idleを選択し、アニメーションの設定をします。

Motionにはidle時用に作成したリセット用の表情を設定します。
ビヘイビアの追加からVRC Animator Traking Controlを追加し、目と口をトラッキングに戻すように設定します。
Write DefaultsのチェックはOFFに設定しましょう。

各ハンドサインの設定
残りの7個のハンドサインはほぼ同じ設定になりますので、Fistのみ例として記載します。

Motionに表情を20個設定したアニメーションを追加します。
Motion Timeには各ハンドサインに対応する〇〇FaceTypeを設定し、パラメータのチェックをONにします。
ビヘイビアの追加からVRC Animator Traking Controlを追加し、目と口をアニメーション優先になるように設定します。
Write DefaultsのチェックはOFFに設定しましょう。

Idel状態への遷移

遷移間隔や繊維オフセットは画像の通りです。
遷移パラメータは、ハンドサインがIdleであることと各表情設定のExMenuが開いていないことを条件とするために、すべての〇〇FaceSetをFalseで設定します。

各ハンドサインへの遷移
こちらも7個のハンドサインでほぼ同じ設定となるため、Fistのみ例として記載します。

遷移を2つ用意します。
1つ目

遷移間隔や繊維オフセットは画像の通りです。
遷移パラメータは、ハンドサインがFistであることと各表情設定のExMenuが開いていないことを条件とするために、すべての〇〇FaceSetをFalseで設定します。

2つ目

ExMenuが開いている場合に遷移するように、FistであればFistFaceSetのパラメータを追加しtrueを設定します。

完成


以上ですべての設定は完了です。


おわりに


私自身が両手でのハンドサイン制御は複雑で覚えられないため、片手でたくさん表情を出せるように実装してみました。
パーソナルミラーも実装されたため、どこでも好きな表情の設定ができるようになり、使いやすくなったと思います。

冒頭で紹介したサンプルのアバター(リッテ)はパブリックアバターとしてだれでも入手することが可能となっています。リッテちゃんでいろいろなワールドをめぐっていただけると嬉しいです。


この記事が気に入ったらサポートをしてみませんか?