2023/06/29 追記
「VRC Expressions Menu の作り方」という記事を作成したので参照してほしい。
この記事とは異なり、Expressions Menu の作り方を体系的にまとめている。
重要だと思ったところやつまずいたところについて記載する。
- T ポーズを基準にアニメーションを作成する
- Animation Key にトラッキングで使用される BlendShape は追加しない
- デフォルトパラメータについて
- VRC Animator Tracking Control でリップシンクや自動まばたきをオフにする
- Write Defaults を全てオフにする
- Animator のレイヤーは上から順に適用される
- Idle 状態の State には Key のない Animation を設定する
- パイメニューのカスタマイズ
- アイテムの大きさを変えるアニメーションを作成する
T ポーズを基準にアニメーションを作成する
Example の T ポーズのアニメーションを複製したものに Blend Shape の Key を追加する。


Blend Shape の Key のみだと、アバターが中腰になってしまう。

スクリプトを用いて、BlendShape と proxy_tpose から1フレームのループアニメーションを生成する方法を記事にしているので適宜参考にしてほしい。
「BlendShape と proxy_tpose からアニメーションを生成する」
Animation Key にトラッキングで使用される BlendShape は追加しない
まばたきや口形素(Viseme)は Key に追加しない。一つでもあれば、まばたきやリップシンクが機能しなくなる。
デフォルトパラメータについて
GestureLeft の場合、コントローラを握る左手の形によって値が変わる。例えば、サムズアップなら 7 になる。
GestureLeftWeight の場合、左手を強く握ると1になり、弱く握るとそれより小さい値になる。

VRC Animator Tracking Control でリップシンクや自動まばたきをオフにする
特定の表情でリップシンクなどをオフにしたい場合、VRC Animator Tracking Control を追加して、該当するものの Animation にチェックを入れる。

Write Defaults を全てオフにする
VRChat のガイドにて、Write Defaults をオフにすることが推奨されている。
オンにすると表情がブレンドされて崩れる可能性がある。
Animator のレイヤーは上から順に適用される
一番上のレイヤーで表情を初期化するためのアニメーションをループ再生する。下のレイヤーで表情を上書きしてゆく。

Idle 状態の State には Key のない Animation を設定する
何かしらの Animation を設定しないと不具合の原因になるらしいので、Key のないアニメーションを設定する。ループさせる必要はない。

パイメニューのカスタマイズ
カスタムパラメータを追加する。

パイメニューに項目を追加して、作成したカスタムパラメータを割り当てる。

アイテムの大きさを変えるアニメーションを作成する
アイテムの大きさは、Shape Key で変えずに、ボーンの Scale で変える。ただし、変化が顔の大きさより小さなものであれば、Shape Key を利用しても問題ない。
VRChat では、Shape Keys が全て適用された状態でアバターが読み込まれるため、アイテムが小さい状態でも、大きい状態を基準にして影が計算されてしまう。
VRM 対応アプリケーションでは、ボーンの大きさを変えることができないため、こちらは Shape Key でアイテムの大きさを変える必要がある。Blender で以下の手順で作業している。
- 全てのアイテムにボーンを入れる。
- 全てのアイテムに関して、アイテムの大きさを 0 にするシェイプキーを設定する。
※ ボーンの Tail の位置、もしくは体の内側の適当な一点に頂点を集約させる。 - VRM 用に 3D モデルをエクスポートする。
- アイテムの大きさを 0 にするシェイプキーを全て削除する。
- VRChat 用に再度 3D モデルをエクスポートする。