Unity が ヒューマノイド リグとアニメーションを含むモデルファイルをインポートするとき、モデルのボーン構造をアニメーション用に調整する必要があります。それを行うには、ファイル内の各ボーンをヒューマノイドアバターにマッピングし、アニメーションを適切に再生できるようにします。このため、Unity にインポートする前に、モデルファイルを慎重に準備することが重要です。
Inspector ウインドウの Rig タブ で Animation Type を Humanoid に設定します。デフォルトでは、Avatar Definition プロパティは Create From This Model に設定されています。この設定では、Unity はファイル内で定義された一揃いのボーンをヒューマノイドアバターにマップしようと試みます。
場合によっては、このオプションを Copy From Other Avatar に変更して、すでに別のモデルファイル用に定義したアバターを使用することができます。例えば、3D モデリングアプリケーションで複数の異なるアニメーションを使用してメッシュ (スキン) を作成する場合、メッシュを 1 つの FBX ファイルにエクスポートし、各アニメーションをそれぞれの FBX ファイルにエクスポートすることができます。これらのファイルを Unity にインポートするときは、インポートする最初のファイル (通常はメッシュ) に 1 つのアバターを作成するだけです。すべてのファイルが同じボーン構造を使用する限り、ファイルの残りの部分 (例えば、すべてのアニメーション) にそのアバターを再使用することができます。
このオプションを有効にする場合は、Source プロパティを設定して、使用したいアバターを指定する必要があります。
また、Skin Weights プロパティを使って、任意の頂点に影響を与えることができるボーンの最大数を変更することもできます。デフォルトでは、このプロパティの影響は 4 つのボーンに制限されていますが、より多く、またはより少なく指定 することができます。
Apply ボタンをクリックすると、Unity は既存のボーン構造をアバターのボーン構造にマッチしようとします。多くの場合、これは、リグ内のボーン間の接続を分析することで自動的に行われます。
マッチが成功すると、Configure メニューの横にチェックマークが表示されます。また、Unity はアバターのサブアセットをモデルアセットに加えます。これはプロジェクトビューで見つけることができます。
マッチの成功とは、単に Unity が必要なボーンすべてをマッチできたことを意味します。ただし、より良い結果を得るためには、Unity では必須ではないボーンもマッチし、適切な T ポーズ でモデルを設定する必要があります。
Unity がアバターを作成できない場合は、Configure ボタンの横に X が表示され、アバターのサブアセットはプロジェクトビューに表示されません。
アバターはアニメーションシステムの重要な一面であるため、モデル に適切にアバターを設定することが重要です。
このような理由で、自動的なアバター作成が成功したかどうかにかかわらず、アバターが有効で適切に設定されていることを常に確認 する必要があります。
モデルのアバターを作成できなかった場合は、Rig タブの Configure … ボタンをクリックして Avatar ウィンドウ を開き、アバターを修正する必要があります。
マッチした場合は、Rig タブの Configure … ボタンをクリックするか、プロジェクトビューからウィンドウを開きます。
まだアバターを保存していない場合は、シーンを保存するようメッセージが表示されます。
この理由は、Configure モードでは、シーンビューはボーン、マッスル、選択されたモデルのみのアニメーション情報を表示し、シーンの他の部分を表示しないからです。
シーンを保存したら、Avatar ウィンドウが Inspector に表示され、ボーンマッピングが表示されます。
ボーンのマッピングが正しいことと、Unity が割り当てなかった必須でないボーンをマップすることを確認してください。
Unity が有効なマッチを探すためには、少なくとも必須のボーンはスケルトンの正しい位置になくてはなりません。アバターにうまくマッチングさせるには、ボーンに身体の部位を表す名前を付けます。例えば、“LeftArm” と “RightForearm” のような名は、ボーンが何を制御するかを明確に表しています。
モデルが有効なマッチを探せない場合は、Unity が内部で行うのと似た手順を手動で行います。
自動マッピングが完全に、または部分的に失敗した場合は、手動で シーン または Hierarchy からボーンをドラッグして割り当てることができます。ボーンがマッチする場合は、Avatar Mapping タブは緑色で表示され、そうでない場合は赤で表示されます。
T ポーズ は Unity のアニメーションに必要なデフォルトのポーズで、3D モデリングアプリケーションでモデルを作成するのに推奨されるポーズ です。ただし、キャラクターのモデリングに T ポーズを使用せず、アニメーションが期待どおりに動作しない場合は、Pose ドロップダウンメニューから Reset を選択します。
ボーンの 割り当ては正しいにもかかわらず、キャラクターが正しいポーズでない場合は、“Character not in T-Pose” というメッセージが表示されます。Pose メニューから Enforce T-Pose を選択することで解決できます。それでもポーズが正しくない場合は、他のボーンを手動で回転させて T ポーズに収めることができます。
マスキングを行えばクリップ中のアニメーションデータの一部を破棄できるので、オブジェクトやキャラクターを部分的に動かすことができます。例えば、腕と脚両方のモーションを含む標準の歩行をするアニメーションがあるとします。しかし、そのキャラクターが大きな荷物を両手で持っている場合は、歩きながら腕を振って欲しくないでしょう。マスクを使用することで、荷物運びのアニメーションの上半身の部分のみを再生し、歩行するアニメーションに重ねることによって、荷物運びのアニメーションに標準の歩行のアニメーションを使用することができます。
マスキングは、インポート時かランタイムのいずれかにアニメーションクリップに適用することができます。アニメーションデータを削除して、ビルドから除くことができ、ファイルサイズやメモリ使用量を小さくできるため、インポート時にマスキングすることが好ましいと言えます。アニメーションデータがランタイムにブレンドされるより少なくなるので、より高速な処理ができます。インポート時のマスキングは目的に適さない場合があります。その場合には、アバターマスク アセットを作成してランタイムにマスクを適用し、アニメーターコントローラー の レイヤー設定 でこれを使用します。
空のアバターマスクアセットを作成するには、以下のいずれかを行います。
新しいアセットが Project ビューに表示されます。
これで、マスクにボディ部分を追加 し、次にマスクを アニメーションレイヤー に加えたり、ボディ部分の参照を Animation タブ の Mask セクションに追加できます。