VRChatでアバターの表情をハンドサインで変化させる方法をご紹介したいと思います。
このように、ハンドサインで、アバターの表情を変化させるようにしたいと思います。
指の変化と連動して、顔の表情も変化することができます。
表情のアニメーションクリップは、Blenderを使って、ブレンドシェイプで作成したものです。
また、UnityでのAnimationクリップの作成方法はこちらの記事をご覧くださいませ。
本記事では、表情のAnimationが揃った状態からの作業になります。
目次
表情をリセットするAnimationクリップを作成
まず最初に、表情をノーマルの状態にするAnimationクリップを作成しておきます。
Projectウィンドウ内で、右クリックをし、Create > AnimationでAnimationを作成します。
名前をわかりやすい名前にします。今回は、defaultshapeにしました。
作成したAnimation(defaultshape)をhierarchyにあるアバターのfbxファイルにドラッグアンドドロップします。
そして、fbxファイルを選択したまま、Animationウィンドウで、ブレンドシェイプを追加していきます。注)リップシンクや自動まばたきのBlinkで使用したものは追加しません。
AddPropertyで追加し、それぞれを、0キーフレームを打ちます。
追加した時点で、0キーフレームを打たれていました。
アニメーターコントローラーを作成
次に、ハンドサインコントローラーを作成します。
これは既存のものをコピーして使います。
vrcsdk > exsamples3 > Animation > controllers > vrc_AvatarV3HandLayer2
Ctrl + Dで、これを複製します。
複製したものは、名前をわかりやすいものに変更します。
今回は、digimotto_HandsLayerに変更しました。
保存場所は一番上のAssetsの階層に移動しました。
先ほど作成したアニメーターコントローラーをダブルクリックてAnimatorを開きます。
Layersタブを開きます。
すると、Left HandとRight Handのレイヤーがあります。
両手それぞれに、表情を設定する事ができます。
今回は、Left Handに設定します。
ハンドサインは、グレーで以下の7つが用意されています。
Fist
Open
Point
Peace
RockNRoll
Gun
Thumbs up
今回は、グレーのPeaceのハンドサインを選択して、あらかじめ作っておいたHappyアニメーションをInspectorのMotionにドラッグします。
これで、Peaceの指の形をしたときに、Happyの表情になる仕組みです。
リセット用のレイヤーを追加します
これだけでは、Happyの表情に変化した時に、通常の表情に戻らなくなります。
コントローラーに、最初に作ったリセット用のアニメーション(defaultshape)を当てはめます。
Layersタブの右上の+をクリックしてレイヤーを追加します。
名前を変更します。今回は、FaceDefaultに変更しました。
FaceDefaultレイヤーをLeft Hand、Right Handより上のレイヤーに移動します。
FaceDefaultレイヤーを選択したまま、Projectにある最初に作ったリセット用アニメーション、defaultshapeをドラッグします。
Entry→defaultshapeになっていればOKです。
defaultshapeを選択し、InspectorのWrite Defaultsのチェックを外します。
FaceDefaultレイヤーの歯車アイコンをクリックしてWeightを1にします。
ハンドレイヤーコントローラーをFXに設定する
InspectorのPlayerbleLayersのFXにハンドレイヤーコントローラー(digimotto_HandLayer)をドラッグします。
これで、アップロードすれば、VRChatでハンドサインをした時に、顔の表情を変化することができます。
アバターのアップロードの方法はこちらの記事をご覧ください。
同じ要領で、別のハンドサインに違う表情を追加してみてください。
これで、色々な表情を素早く切り替える事ができるようになり、VRChatでのコミュニケーションがより楽しくなります!