VRCSDK、Unity　アバターに動作のアニメーションを付ける方法

この記事ではBlenderにてアニメーションを作成したVRChat用のアバターに
対して、モーションのアニメーションを設定する方法を解説します。
# 主な操作


①アバターの3dモデル(fbx)をインポートする（当記事では説明しません）

②アバターのプレハブ中のアニメーションの編集
（リップシェイプ等の削除）

③Actionのアニメーションコントローラ―を作成し、
そこにアニメーションを設定する

④アニメーションの設定（Bake Into Pose）

④Expression menu用のパラメーター　メニューに対して設定を行う。



## ②アバター中のアニメーションの編集。

まずはインポートしたfbxファイルに付属しているアニメーションを外部に
複製します(複数選択してctrl+dで外に複製できます。)

プレハブのセットになったままでは編集が出来ませんので複製したものを使います。

![編集済みアニメーションを抜き出すところ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/f4686f4c-e347-3f9a-4450-390502dda520.png)


![アニメーションを抜き出す.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/2a0bb862-7206-d246-c330-37c73d314123.png)


続いて、複製した方のアニメーションを開き、中のリップシェイプなどの
動きに関係のない部分を削除します。
これを行わないとアニメーションをつけたアバターの口がうごかないなどの
トラブルの原因になります。

![コメ付アニメーションの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/9fc8eeda-23a4-0ccb-42a5-51dacf84fb53.png)


## ③Actionのアニメーションコントローラ―を作成し、そこにアニメーションを設定する

Asasetsの中にある[VRCSDK>Example3>Animation>Controllers]の中の
vrc_AvaterV3ActionLayer.controolerを使用します。

万が一の為にこちらもコピーを取り名前を変えたものを使用した方が良いです。

![アクションレイヤのコントローラー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/0c34a6ed-7b8b-8123-e19c-f992fc228a78.png)

こちらのコントローラをアバターに適応します。
VRC Avater Descriptorコンポーネントを追加しているアバターを選択し、
その中のPlayable LayersにおけるActionに適応します。
ちなみに、ものの出し入れなどをしたい場合はFxに適用します。その場合、
そちらで設定した動きなどのアニメーションは適応されません。
（逆にActionに設定したコントローラーからはモノの出し入れは行えません。）

![アニメーションを設定する.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/b37bead3-547b-893c-0f0b-de53bdd7c2d4.png)


続いてそのコントローラーにアニメーションを割り当てます。

割り当てる方法はまず、そのコントローラを開き、parameterで
変数を割り当てます。
左上のパラメータタブに移動するとパラメータを設定することが出来ます。

（こちらは上記の設定とは順不同で構いません。）

![コメ付アニメーションのパラメータ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/fa837278-b29a-9095-1e1f-b9f1fdceee38.png)

アニメーションの遷移の特り方としてはオレンジ色のアニメーションを中心として
遷移を作っていきますそのアニメーション(やや丸まった四角)を右クリックすると
遷移を作成とありますので、それをクリックし、繋げたいアニメーションまで線を引くと
繋げることが出来ます。

そしてその遷移を選択することで、遷移する条件等を設定できます。
条件はConditionsにて設定することが出来ます。ここで指定した変数が
条件に満たしたときに遷移するか、設定が出来ます。

![コメ付アニメーションコントローラ―、コンディションの設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/fcb65f18-b793-3418-a797-ed74c4673b03.png)


## アニメーションの設定（Bake Into Pose）
アバターを始点から動かす場合(目の前に飛び出したり、空を飛ぶ、地面に潜る等)
アニメーション（コントローラではありません）を選択し、その中の設定（インスペクター）
において、「ポーズにベイク」にチェックを入れます。そうしないとアバターが
視点から移動せず、ただその場で動かずに体の態勢だけ動くという状態になります。

![コメ付きアニメーションの編集、BakeIntoPose.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/0c277fb0-5431-cff4-f31c-3fa1eca44549.png)


## ⑤　Expression menu用のパラメーター　メニューに対して設定を行う。

実際にVRChatのメニューに表示させるためにExpressionMenuとExpressionParameters
を設定します。これらは[Assets>VRCSDK.Example3>Expressions Menu]の中に
それぞれDefaltExpressionParameters、DefaultExpressionMenuとしてあります。

ExpressionParametersには、「③Actionのアニメーションコントローラ―を作成し、そこにアニメーションを設定する」にて作成したパラメータの名前と一字一句同じパラメータを
作ります。

![コメ付きメニュー用のパラメータ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/be555839-6261-2ffd-42c5-b7ff4f863bdc.png)

次にExpressionMenuですが、こちらで実際にVRChatのExpressionで表示するものを設定します。
こちらのParameterで変更するパラメータを設定します。
そして選んだ時、パラメータがどうなるかをValueに設定します。
ちなみにアイコンでExpressionのアイコンを設定できます。

![コメ付き真ExpressionMenu.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/c208d5d6-f233-3ea4-309b-4c1792a31f81.png)

最後にこれらをVRC Avatar Descriptorに適用します。

![Expression 項目.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334715/5cb2163e-2377-32af-63c9-d431d72e03cf.png)



これらの操作を行えば動きのあるアニメーションをVRChatで実行することが出来ます。