プログラマブル深海魚

目立たないけど華やかに

アバター改変でやってしまったアニメータ関連のミス事例

VRC向けのアバター改変をしている際に、アニメータ関連でミスしてしまった事例を備忘録としてまとめます。

目次

事例

アニメーションレイヤーのWeightが0になっている

初歩的なミスにして、結構やりがち(だと思う)なミス。Weightが0になっているので、当然アニメーションが適用されない。
これをやりがちなのには理由があって、アニメーションレイヤーを新規作成したときのWeightのデフォルト値が0だからです。(デフォルトは1でもいい気がするんだけどね……)

新規作成したレイヤーはWeightが0となっている

VRC Expression Parametersにアニメーションパラメータを追加していない

VRC特有の問題です。アバターを他人から見たときに、アニメーションが同期されない問題。
アニメーションパラメータはVRC Expression Parametersに設定して"Synced"にチェックを入れると他人にパラメータ値が同期されますが、設定していなかったためにパラメータが同期されず、他人視点ではアニメーションが発動しませんでした。
もともと私は少し勘違いをしていて、VRC Expression ParametersはVRC Expression Menuでパラメータを変更できるようにするための設定だと思っていたのですが、それが理解として正しくありませんでした。

アニメーションパラメータを新規追加した (New Bool)

VRC Expression Parametersにもパラメータを追加しないと他人に同期されない

なお、ContactReceiver等に"LocalOnly"というパラメータがありますが、こちらのチェックを外してもパラメータが同期されるわけではありません。詳細は割愛します。

Interruption Sourceの設定が適切でない

この問題は、おそらく私が使用しているアバターの「びしょぬれのしずくさん」の表情アニメータコントローラがやや特殊な作りであるため発生したものだと思います。(他のアバターについてはあまり知識がないので、もし一般的な作りだったらすみません)
しずくさんの表情アニメータコントローラは、以下のように表情が切り替わるときにデフォルト表情を経由するようになっています。本来、ステートのTransision設定でInterruption SourceがNext Stateになっているため、途中のステート(デフォルト表情)がスキップされて変更先の表情に直接変わるような動きになっています。それが、Interruption SourceがNoneになっていたことで、表情の切替時に一瞬だけデフォルト表情が表示されるようになってしまっていました。

しずくさんの表情アニメータコントローラを簡略化して、Face 1からFace 2の切替を図示したもの

おわり

以上、アニメータ関連のミス実例3つでした。ただの備忘録ですが、誰かのお役に立てば幸いです。

参考文献

知識0だけどExメニューでアクセとか武器とかをオンオフしたい!!(初心者向けExpression解説1)[VRChat]|Ran_kotonoha
https://note.com/ran_kotonoha/n/nd1fc7f1d84ea#9fe187ed-1547-45ba-b9d3-f3b695817597

【VRChat】Contactsで物を出し入れする【Avatar Dynamics】|風庭ゆい
https://note.com/yui0471/n/n54beffc6df97

VRChat上のアバター間データ同期の概念|おにく/Oniku@VRC
https://note.com/onikuvrc/n/n4fc95cf23dab

【初心者Unity】アニメーションの遷移を検証③【遷移の割り込み】 | TECH PROjin
https://tech.pjin.jp/blog/2021/08/31/unity-transition_3/