LoginSignup
15
18

More than 5 years have passed since last update.

VRChatアニメーションオーバーライド勢もAnimatorControllerの存在を意識しよう

Last updated at Posted at 2019-03-15

VRChatのアバター編集目的でUnityを軽く使っている人向けの話

ちょっとお節介かもしれませんが、
Unityは「VRChatのアバターを編集してアップロードするやつ」で、
Animationウィンドウを「アバターのアニメーションオーバーライドを編集する」程度で扱っている人って、
意外とAnimatorのことを理解していない人も多いんじゃないかと思いました。

アニメーションオーバーライドの手法が解説されている記事を見ても、
そのときに編集されているはずのAnimatorControllerの存在が割と無視されている場合が多い気がします。
まぁ、そのとき必要ないですからねぇ。

しかし、Animation編集作業でAnimatorまわりに何が起こっているのかを少し理解することで、無駄なファイルが増えすぎて訳がわからなくなることが減るかもしれません。

ここでは、AnimatorControllerが謎だと思っている人が、その存在と意味を少し理解することだけを目的とした説明をしたいと思います。
Animatorの詳しい機能は説明しません。

登場するアセット

アニメーション編集で登場するアセットの種類を紹介します。

AnimationClip(アニメーションクリップ)

こういうアイコンのやつです。
image.png
こちらは言うまでもなく、モーションのデータです。
みなさん、こちらの編集を意識すると思います。

AnimatorController(アニメーターコントローラー)

こういうアイコンのやつです。こちらが本書の主役。
image.png
これは本来、アプリを実行したときに、どのアニメーションを流して、次にどの条件になったらどのアニメーションを流して……というシナリオを描くものです。
Windows -> Animator で内容を見ることができます。
image.png
もし、今までAnimatorControllerを意識せずにアニメーション編集を行ってきている場合、
あるいはこんな感じになっている人もいるかもしれません。
image.png
例えば、ここにある部品(ステートといいます)を選択してInspectorを見ると、それぞれMotionという項目にAnimationClipが設定されています。
image.png
つまり、1つのAnimatorControllerに対して複数のAnimationClipがセットされ、管理されているということです。
遷移の矢印については、ここでは説明を省略します。
とにかく、AnimatorControllerには複数のAnimationClipがお品書きのように登録される、ということだけを覚えてください。
AnimationClipの内容までは登録されません。どのAnimationClipを使うかだけが登録されます。

Animatorコンポーネント

次に、Animatorコンポーネントについて説明します。
FBXにしろVRMにしろ、3DモデルのObjectには必ずAnimatorコンポーネントがついています。こういうやつです。
image.png
このControllerの項目にAnimatorControllerをセットすることで、そのモデルはそのAnimatorControllerのルールに従って動くことになります。
今までそんなものセットしたことないけど? という人もいるでしょうか。
Unityは便利なので、これを意識しなくてもAnimationを編集できるようになっています。

Animationウィンドウについて

AnimationClipを編集するときAnimationウィンドウを開くと思いますが、
AnimationClipの内容が表示されるシチュエーションは次の2種類です。

  • Hierarchyウィンドウ:親か自身がAnimatorコンポーネントを持ち、AnimatorControllerがセットされているGameObjectを選択する。
  • Projectウィンドウ:AnimationClipを選択する。

ただし、編集ができるのはHierarchyウィンドウの選択の場合のみです。
そのとき、AnimatorコンポーネントにセットされたAnimatorControllerに登録されているAnimationClipを表示・編集できます。
複数ある場合は、Animationウィンドウの左上のプルダウンで切り替えることができます。
clip_anim.PNG
ProjectウィンドウのAnimationClip単体の選択では、実際に動かす対象の情報が不足しているため編集できません。

よくある操作について

さて、ここまでの解説を踏まえて、実際によくある操作で何が起こっているかを説明します。

AnimationウィンドウのCreateボタンを押す

AnimationClipを新規で作成する場合、AnimationウィンドウのCreateボタンを押す、という手順があります。
image.png
Createボタンを押すと、ファイルダイアログが開いて、新規AnimationClipを保存する流れになります。
しかし、実際に行われている動作は、単にAnimationClipの作成だけではありません。

  • AnimatorコンポーネントにセットされているAnimatorControllerに、新規AnimationClipの情報を登録します。
  • もしAnimatorコンポーネントにAnimatorControllerがセットされていない場合、新しくAnimatorControllerを自動作成してセットします。
  • Animatorコンポーネントすら持っていない場合、Animatorコンポーネントを追加しつつ、AnimatorControllerを自動作成してセットします。

AnimationClipのあるフォルダにAnimatorControllerが増えていたりするのは、そういう理由です。
Animatorコンポーネントを見ると、これまで"None"だったControllerの項目に、新しいAnimatorControllerがセットされています。

AnimationCripを3Dモデルにドラッグ&ドロップする

これは、既存のAnimationClipを編集する場合の手順ですね。
Hierarchyにある3DモデルにAnimationClipを貼り付けたらアニメーション編集できると、単純にそう認識している人がいると思います。
しかし、これも実際に行われている動作は、単にAnimationClipの操作だけではありません。

  • AnimatorコンポーネントにセットされているAnimatorControllerに、持ってきたAnimationClipの情報を登録します。
  • もしAnimatorコンポーネントにAnimatorControllerがセットされていない場合、新しくAnimatorControllerを自動作成してセットします。
  • Animatorコンポーネントすら持っていない場合、Animatorコンポーネントを追加しつつ、AnimatorControllerを自動作成してセットします。

上記のCreateボタンと同じです。

今後はAnimatorControllerを意識しながら作業しよう

AnimatorControllerの存在が意識できれば、AnimatorControllerを無駄に増やしたり、ステートを無駄に増やしたりすることはなくなると思います。
たとえば今後は次のようにしてはどうでしょうか。

一度作ったAnimatorControllerを使いまわすやり方

1.AnimatorControllerのセットを意識する

最初は上記のAnimatorController自動生成でもいいのですが、2回目以降は意識的にAnimatorControllerをセットしてあげるのが良いです。
最初に生成されたAnimatorControllerをAnimatorコンポーネントにセットしてあげてください。
image.png

2.Animatorのステートを編集する

Animatorウィンドウを開き、編集したいAnimationClipをドラッグ&ドロップで追加したり、不要なステートを削除したりします。
image.png
既にステートに設定されているMotionを差し替えるでもOKです。
削除はステートを選択してDeleteキーです。
ステートを削除したからといって、元のAnimationClipが消えることはありません。
間違って別のAnimationClipを編集しないよう、なるべく整理しておきましょう。

AnimatorControllerを使い捨てるやり方

自動生成されたAnimatorControllerを用が済んだらさっぱりと消してしまうのもアリです。
これが一番簡単かもしれませんね。
ただし、必ず自分が自動生成させたものであることを理解した上で削除しましょう。

15
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
18