AvatarDynamicsで頬を引っ張ると表情が変わるアバターを作る

備忘録としてまとめるものなのであまり丁寧では無いかもしれませんが書き残しておきます。

Blenderで準備する

Blenderでボーンを入れます。
このとき、ボーンが一本だと伸ばすことが出来ないので、画像のように親ボーンの下に動かしたい子ボーンを入れます。ウェイトは子側のボーンにつけてあげます。

親に対して子のボーンが伸びていくので、子側にウェイトを塗ります。
ウェイトはこれくらい入れました。
ざっくりと頂点グループで1割り当てして、スムーズをかけるだけです。

Unityで設定する

PhysBoneの設定

まずphysBoneの設定をします。
数値などは適当にこんな具合です。

頬を伸ばすのでMax Stretchに1以上の数字を入れてあげること

このとき「Options」の「parameter」に任意の名前を入れてあげます。頬は左右あるので、それぞれ「L」「R」を設定してあげるのがわかりやすいかと思います。
設定できたら、一旦再生ボタンを押してGame画面上で頬を引っ張って伸ばせるか試しましょう!うまく動いたら次へ!

FXの設定

まずFXにParameterを設定していきます。
先程PhysBoneにつけてあげたParameter名に「IsGrabbed」をつけたものをそれぞれBool型で入力します。
「IsGrabbed」はPhysBoneを「掴まれた」ときに判定が入るパラメータです。他に「角度(Angle)」「強度(Stretch)」がありますが、今回は単純に掴まれたことだけがわかればいいので、「IsGrabbed」を利用しました。

L、Rどちらもそれぞれ入れること

掴まれたときに変わる表情を作ります。
表情を作るときはこちらのツールを使わせていただいています。

これはハンドサインに対してアニメーションを設定するツールではありますが、シェイプキーを一覧で参照して設定した表情でアニメーションを作ってくれる機能があるので、作ったアニメーションだけを利用させて頂くという形です。
※「Fist」のアニメーションが作った表情アニメーションで上書きされるので、元に戻すのを忘れないように

FaceEmotionの項目で掴まれたときの表情を設定してCreateする

ツールを使わずに自力で表情アニメーションを設定できる方はサクッと作って次へいきましょう。

FXレイヤーにアニメーションを登録していきます。
レイヤーを追加し、適当な名前をつけます。このときかならずWeightを1に変更してください。デフォルトは0ですが、そのままだとアニメーションは動きません。

歯車マークでWeightを設定できます。

まず、なにもないところで右クリックしてEmptyのステートを作ります。

右クリックでCreate Stateします
こうなればOK

次に、先程作った表情アニメーションをオレンジのNewStateの下にドラッグアンドドロップします。そうするとグレーの新しいステートが出来ます。

必要なアニメーションをドラッグアンドドロップ

オレンジとグレーのステートに適当な名前をつけ、Write Defaultsをオフにします。(何らかの理由で他のレイヤーでWrite DefaultsをすべてONにしてあるならONのままでも良いです、どちらかに揃えてあることが重要)

OFFの状態がスタートなので、名前もそのようにつけておくとわかりやすい

次に矢印(遷移)の設定をします。
まずオレンジのステートを右クリック、「Make Transition」からグレーのステートに向かって【二回】矢印をのばします。

Make Transition、矢印をのばす、をニ回繰り返します
こうなればOK

次は逆にグレーのステートからオレンジに向かって矢印をのばします。こちらは1回でOK。

こうなればOK!

最後に矢印の設定をします。先にグレーからオレンジに向かっている方の矢印をクリックして、下の画像のように「false」に設定してください。

ConditionsをL、Rどちらも設定して「false」に

続いてオレンジからグレーに向かっている重なった矢印を設定します。
先程2回矢印をつないだので、2つ設定が重なっているという状態を示しています。一番上の「Transisions」にも「Hoppeta_OFF→Hoppeta」が2つ並んでいるはずです。

ConditionにひとつずつLとRを「true」で設定してあげます

画像では下側のTransitionsにLが設定されていますが、上側のTransitionsにはRを設定してください。どちらも「true」です。

これで一連の設定は終了です。
VRCにアップロードして確認するか、VCC環境ならGestureManagerを使うことで動作が確認できます。

ほっぺたをひっぱったら痛がってくれる!

参考記事

謝辞

イオさん(https://twitter.com/Iryu_Ozora)に設定を見直していただいて動作できました!ありがとうございました!