AvatarDynamicsで頬を引っ張ると表情が変わるアバターを作る
備忘録としてまとめるものなのであまり丁寧では無いかもしれませんが書き残しておきます。
Blenderで準備する
Blenderでボーンを入れます。
このとき、ボーンが一本だと伸ばすことが出来ないので、画像のように親ボーンの下に動かしたい子ボーンを入れます。ウェイトは子側のボーンにつけてあげます。
Unityで設定する
PhysBoneの設定
まずphysBoneの設定をします。
数値などは適当にこんな具合です。
このとき「Options」の「parameter」に任意の名前を入れてあげます。頬は左右あるので、それぞれ「L」「R」を設定してあげるのがわかりやすいかと思います。
設定できたら、一旦再生ボタンを押してGame画面上で頬を引っ張って伸ばせるか試しましょう!うまく動いたら次へ!
FXの設定
まずFXにParameterを設定していきます。
先程PhysBoneにつけてあげたParameter名に「IsGrabbed」をつけたものをそれぞれBool型で入力します。
「IsGrabbed」はPhysBoneを「掴まれた」ときに判定が入るパラメータです。他に「角度(Angle)」「強度(Stretch)」がありますが、今回は単純に掴まれたことだけがわかればいいので、「IsGrabbed」を利用しました。
掴まれたときに変わる表情を作ります。
表情を作るときはこちらのツールを使わせていただいています。
これはハンドサインに対してアニメーションを設定するツールではありますが、シェイプキーを一覧で参照して設定した表情でアニメーションを作ってくれる機能があるので、作ったアニメーションだけを利用させて頂くという形です。
※「Fist」のアニメーションが作った表情アニメーションで上書きされるので、元に戻すのを忘れないように
ツールを使わずに自力で表情アニメーションを設定できる方はサクッと作って次へいきましょう。
FXレイヤーにアニメーションを登録していきます。
レイヤーを追加し、適当な名前をつけます。このときかならずWeightを1に変更してください。デフォルトは0ですが、そのままだとアニメーションは動きません。
まず、なにもないところで右クリックしてEmptyのステートを作ります。
次に、先程作った表情アニメーションをオレンジのNewStateの下にドラッグアンドドロップします。そうするとグレーの新しいステートが出来ます。
オレンジとグレーのステートに適当な名前をつけ、Write Defaultsをオフにします。(何らかの理由で他のレイヤーでWrite DefaultsをすべてONにしてあるならONのままでも良いです、どちらかに揃えてあることが重要)
次に矢印(遷移)の設定をします。
まずオレンジのステートを右クリック、「Make Transition」からグレーのステートに向かって【二回】矢印をのばします。
次は逆にグレーのステートからオレンジに向かって矢印をのばします。こちらは1回でOK。
最後に矢印の設定をします。先にグレーからオレンジに向かっている方の矢印をクリックして、下の画像のように「false」に設定してください。
続いてオレンジからグレーに向かっている重なった矢印を設定します。
先程2回矢印をつないだので、2つ設定が重なっているという状態を示しています。一番上の「Transisions」にも「Hoppeta_OFF→Hoppeta」が2つ並んでいるはずです。
画像では下側のTransitionsにLが設定されていますが、上側のTransitionsにはRを設定してください。どちらも「true」です。
これで一連の設定は終了です。
VRCにアップロードして確認するか、VCC環境ならGestureManagerを使うことで動作が確認できます。
参考記事
謝辞
イオさん(https://twitter.com/Iryu_Ozora)に設定を見直していただいて動作できました!ありがとうございました!