こんにちは!みなさんVRChatやってますか?
今回はハンドジェスチャーで表情を変えたり、グーチョキなどの手の形を設定する方法を紹介していきます。
初心者トラップが多いUnityと和解していきましょう!
Unityが一切分からないという方は下記を確認してから挑戦してくださいね!
今回も前回に引き続き、2.0向けアバター京狐さんを現在主流のVRCSDK3.0に再設定しつつ、
アバターをVRChatにアップロードする際の仕組みを紹介します!
3Dのオリジナルアバターを作ってみたものの、VRChatにアップロードする方法が分からない・・・
そんな時の解決方法になればと幸いです!
ハンドジェスチャーって?
VRChatでは、右手と左手の動きをコントローラで再現することができます。
制御方法はプレイ方法やコントローラーによって変わり、一概には言えませんが、
画像の様にOculus系のコントローラーは直感に近い形で制御ができます。
デスクトップモードでは
SHIFT(R SHIFT)を押しながらF1~F8を押すことで手の形を変えることができます。
ハンドジェスチャーで表情を変えるには?
VRCSDK2.0と3.0では仕組みが違う為、現在主流の3.0の仕組みの大枠をまず解説します。
VRC Avatar Descriptorの中には“Customize”をクリックすることで現れる項目があります。
主にFXにはシェイプキーやオブジェクトのオンオフなどトランスフォーム(移動回転スケール)を使わないものの制御で使います。※表情の変化等
※もし一部項目が現れない場合は元モデルとなるRigデータがHumanoid以外になっている可能性があります。
例:Actionが消えてFXが2つある等
(オリジナルアバターをアップロードする際などによく遭遇します)
DefaultをAnimation Controllerに差し替えることで意図した挙動に変更するといったことができます。
Animation Controller(アニメーションコントローラ)とは
アニメーションコントローラは入力があったら別の出力をするというプログラム的な制御を視覚的に分かりやすくしたUnityのシステムです。
まず、Playable LayersにAnimation Controllerを割り当てるのですが、
今回やりたいことは「京狐さん(2.0)の仕組みを3.0に移行する」ことなので
・ハンドジェスチャーで表情を変える
という仕組みを解説しながら設定していきます。
実際にAnimation controllerに触れていく
やりたい事の手順としては
- VRChatデフォルトのハンドジェスチャー用コントローラを、コピーして活用する
- ハンドジェスチャー出力を手から表情に切り替える
- FXに表情変更レイヤーを割り当てする
上から順番に進めていきます。
ハンドジェスチャーを複製する
まず、1からAnimation Controllerを用意するのは面倒くさいので
手の入力と出力を制御しているコントローラを複製します。
VRCSDK3.0をインポートしたUnityプロジェクトであれば
Assets > VRCSDK . Examples3 > Animation > Controllers
の中に”vrc_AvatarV3HandsLayer2“というコントローラがあるはずです。
これを複製し活用していきます。
※(Ctrlキーを押しながらAsset直下に持っていくと複製される上に一番上層にファイルを用意できるため作業がしやすいです。)
コピー元と差別化をするために名前を変更しておきましょう。
“vrc_KyokoV3HandsLayer2″など自分が把握しやすいようにします。なんでもいいです。
“vrc_KyokoV3HandsLayer2″をダブルクリックすると
Animatorというタブが開かれます。
VRChatの仕様なのか“AllParts”や“Left Hand” “Right Hand”などのレイヤーを削除すると不具合が起こるようなのでやめておきましょう。
また、次から紹介する情報は何度も紹介するので耳にタコを作ってください。 ※慣れても何回も間違えます。
①VRChatではレイヤーは下から優先して表現される。
②レイヤーウェイトを1にしないと反映されない。
③制御マスクで動く/動かないを設定でき、制限されてると反映されない。
どういうことかというと
①デフォルトでは、LeftHandで表情割り当てをしていても、RightHandの入力があれば、そっちの表情が優先される。
②レイヤーを新規追加すると、初期値が0になっていることがあるため動かないという結果になる
③マスクで移動制限がされていることで、意図した部分が動いてくれない
もしくは意図した部分以外が動いてしまう
ハンドジェスチャー出力を手から表情に切り替える
切り替えるにはまず、表情に関するアニメーションを作らなければなりません。
京狐さんの場合は、一部アニメーションに2.0時代の回りくどい設定が行われている(そもそも2.0向けはほとんど)ので1から設定していきましょう。
「特定のシェイプキーをオフからオンに切り替える」
というアニメーションを表情分作る必要がありますが、
まずは一連の流れを説明するために以下の作業を行います。
- 笑顔のシェイプキーをオン(100)にするアニメーションを作る
- 笑顔アニメーションを”vrc_KyokoV3HandsLayer2“の右手レイヤーに追加する
- 右手ピース(例)の出力を笑顔アニメーションに切り替える
これらを行うことで右手ピースをVRChatで行うと顔が笑顔になるという制御の変更ができます。
笑顔のシェイプキーをオン(100)にするアニメーションを作る
まずはアニメーションを作る為にはアニメーションファイルを作る必要があります。
追加したらわかりやすいように名前を「笑顔」などに変えておきます。
アニメーションを作るためにはアバターとアニメーションファイルを紐づける必要がありますが、まずは表情を作ることが最優先なので簡易的に紐づけます。
※この紐づけは後で消してやり直します
ヒエラルキーのモデルにアニメーションファイルをドラッグします。
するとkyoko_modelというファイルが追加されます。
「笑顔」は追加された”kyoko_model”というコントローラを介して京狐さんと連結されたことになります。
この状態で
今度はヒエラルキーのkyoko_modelを選択している状態でアニメーションを作ることができます。
“Add Property“で笑顔のシェイプキーを読み込み、数値を100にしましょう。
以上でアニメーションの完成です。
紐づけで追加された“kyoko_model”というコントローラは使わないので削除してください。
コントローラの出力を切り替える
手のピースアニメーションを笑顔のアニメーションに切り替えます。
最初に追加した“vrc_KyokoV3HandsLayer2”を開き、AnimatorタブからRight Handを選択してください。
この“vrc_KyokoV3HandsLayer2”は手のジェスチャーから複製したのですが、
“✖ 手の形”ではなく”〇 顔の表情”を変えるためのコントローラにしたいので
手を動かしてしまう不要なアニメーションを“vrc_KyokoV3HandsLayer2″から削除しておきます。
※Motionに割り当てられているデフォルトアニメーションをDeleteで消してます。=何も読み込む対象がない状態になる
ついでに手だけになっているマスクもnoneにしておきましょう。
笑顔アニメーションをコントーラに入れる
まずは先ほど作ったアニメーションをコントローラ(vrc_KyokoV3HandsLayer2)の”Right Hand”レイヤーにドラッグします。
Any Stateから笑顔を右クリック”Make Transition”矢印でつなげます。
矢印内部の設定をピースと笑顔を同じにする
矢印でつなげられていますが、中身はプログラミングの様な内容になっています。
“Any State“から“4“という入力を受け取ると“Peace“になる流れを
“笑顔“に矯正したいので、“Peace“を削除して”笑顔“につなげます。
▼この画像あたりをクリックして左端に持っていくとクロスフェードをなかったことに出来ます。
以上でコントローラ内のピース(ハンドジェスチャ)を表情(シェイプ)に変更することが出来ました。
最後にWrite Defaultsをオフにしておきます。
今回の様にアニメーション作成の時に1点”100″を追加した場合などはオフに、”100″と”0″2点追加した場合はオンでも問題ありません。
違いに関しては別の機会に紹介します。
FXに表情変更レイヤーを割り当てする
FXにコントローラ(vrc_KyokoV3HandsLayer2)を割り当てします。
以上がハンドジェスチャを表情に変更する手順になります。
まとめ
Unityの操作方法を把握しないといけない為、いきなり難易度があがりましたが、アニメーションを攻略することで、デフォルト以外の表情を作ることもできます。
京狐さんは100にも及ぶほどの表情やシェイプキーが用意されているため、デフォルトの表情だけでは活かしきっていないと思いませんか?
今回は笑顔だけを変えましたが、他も同様な作業で変更できます。
エクスプレッションメニューを使うことでハンドジェスチャ以外でも表情を再現できたり、左手と右手を組み合わせて表情を変えたり
などUnityの機能は沼の様に深いです。
一緒に楽しみながら学んでいきましょう!
コメント
Vtuberの解剖学の皆様、お疲れ様です。
ハンドジェスチャーを利用して表情の変更をする記事を読ませていただきました。
アバターの表情変更のしかたがさっぱり理解出来ず、途方に暮れたいましたが、こちらの記事のお陰でもう一度チャレンジしようという気持ちになれました。
本当にありがとうございます。
寒暖差が激しく、日によって夏のようにも冬のようにも気温が変動する日々が続きますね。
お忙しいかとは存じますが、どうかお体に気を付けてお過ごしください。