Humanoid / GenericアニメーションとAvatarについての基礎知識です。
HumanoidとAvatarの概念
Humanoidは、人型のモデル用に作られたモーションを他の人型モデルにも適用できるようにする仕組みです。
例えば今、人型のモデルAの左肩のGameObject「LeftShoulder」を回転させるモーションAがあるとします。
そしてこのモーションAを他の人型モデルBに適用することを考えます。
人型であればモデルBにも「左肩」は必ず存在するはずなので、本質的にはこのモーションは適用できるはずです。
しかし、モーションファイルが持っている情報はあくまでGameObject「LeftShoulder」を回転させるという情報なので、
モデルAのGameObject名や階層構造がモデルBと一致しないとモーションAを適用することはできません。
そこでHumanoidは、「LeftShoulder」は「左肩」であるという対応付けを行います。
つまり個別のモーションで定義した名前をHumanoidで定義されている名前と紐付けて、モーションを使いまわせるようにします。
この対応付けの情報を持つのがAvatarというファイルです。
Unityでは下記のような画面でこの対応付けを行います。
Genericの概念
HumanoidのようにGameObjectと人型の部位との対応付けを行わない場合、
このモーションはGenericであるといいます。
この場合モーションは「LeftShoulder」を回転させる、という情報をそのまま持つことになります。
AvatarはHumanoidのようにいろんな情報を持たず、Root Nodeの情報だけを持ちます。
設定してみる
HumanoidとGenericについてもう少し具体的に理解するために、
それぞれの設定をした時に生成されるAnimationファイルがどのように変化するかを見てみます。
まず、モーションのImport SettingsからAnimation TypeをGenericに設定した状態でApplyします。
モーションはUnity-chanのものを使っています。
この状態でAnimationをみてみると、
Transformをアニメーションさせていることがわかります。
次に、Animation TypeをHumanoidに設定した状態でApplyします。
そして同じようにAnimationをみてみると、
Humanoidによる汎用的なパラメータに切り替わったことがわかります。
Avatarの使いまわし
例えばUnity-chanのようにモデルのファイルとモーションのファイルが別れている場合、
全てのモデルファイルとモーションファイルにHumanoidの設定をしなければいけません。
これはなかなか大変な作業だし、ミスの原因にもなります。
このような場合、Import SettingsのAvatar DefinitionをCopy From Other Avatarにすると、
他のファイルで設定したAvatarをSourceに設定して使いまわすことができます。