アニメーション用モデルの作成
このページでは、Unity のアニメーションシステムで使用するモデルの作成について説明します。
すべてのタイプのモデルを作成するために共通のベストプラクティスについては、最適なパフォーマンスのためのモデル作成を参照してください。アニメーション付きのモデルを Unity にインポートする方法については、ヒューマノイドアニメーション付きのモデルをインポートまたはヒューマノイドアニメーション以外 (汎用) のアニメーション付きモデルをインポートを参照してください。
キャラクター準備のステージ (モデリング、リギング、スキニング)
Unity のアニメーションシステムで使用できるモデルには 2 種類あります。
-
ヒューマノイドモデルとは、実際の人間の骨格にだいたい適合するように編成された少なくとも 15 個の骨を含む、特定の構造のことです。
-
汎用モデルはそれ以外のすべてを指します。湯沸し用のケトルからドラゴンまで何でもありえます。
どちらもリギングとスキニングがされたモデルが必要です。このようなモデルを作成するには、以下の段階があります。
-
モデリング: モデルの作成。モデルには、メッシュやテクスチャなどが含まれます
-
リギング: スケルトン (リグやジョイントの階層とも呼ばれます) の作成。メッシュ内のボーンを定義し、その動きを相互に関連付けます。
-
スキニング: メッシュをスケルトンに結合します。これにより、指定したジョイントをアニメーション化したときに、キャラクターメッシュのどの部分が動くかを定義します。
通常は 3D モデリングソフト (Autodesk® 3ds Max®、Autodesk® Maya®、Blender など) でこれらの手順をすべて行い、出来上がったモデルをエクスポートしてから Unity にインポートします。
モデリング
Unity プロジェクトでモデルをアニメーションとうまく連動させるためのいくつかのガイドラインがあります。
- __整った構造__のトポロジーを使用してください。一般的には、モデルの頂点や三角形がアニメーション中にどのように歪むかを考慮する必要があります。優れたトポロジーであれば、メッシュを歪ませることなくモデルを動かすことができます。既存のキャラクターメッシュを研究して、トポロジーがどのように配置されているか、またその理由を確認してください。
- メッシュの__スケール__を確認してください。テストインポートを実行し、インポートしたモデルのサイズを “メーターキューブ” と比較します。標準の Unity のキューブプリミティブは 1 単位の辺の長さを持つため、ほとんどの目的で 1m のキューブとして扱うことができます。3D モデリングソフトウェアが使用する単位を確認して、モデルのサイズがキューブに対して正しい比率になるように、エクスポートの設定を調整します。
- ビルド中に、__モデルをクリーンアップ__してください。可能であれば、穴を塞ぎ、頂点を結合し、隠れた面を削除します。これはスキニング、特に自動スキニング処理を容易にします。
- キャラクターに足がある場合は、メッシュを調節してキャラクターの足がモデルのローカルの原点または “アンカーポイント” に立つようにします。キャラクターのアンカーポイント (つまり、その変換位置) が直接床についている場合は、このようにするとずっと簡単に歩かせることができます。
- キャラクターが 2 足歩行する場合は、できるだけ __T ポーズ__でモデル化してください。これにより、必要な場所 (脇の下など) でポリゴンを細かく調整することができます。これにより、リグをメッシュの内側に配置しやすくなります。
テクスチャと三角形を使用したスキンメッシュ
リギング
3D モデリングソフトウェアでは、リグのジョイントを作成する方法がいくつかあります。
ヒューマノイドモデルの場合、Unity がヒューマノイドアバターにマッチングできるように、スケルトンには特定の要件があります。
- 最低でも 15 のボーンが必要です。スケルトンには、少なくとも必要なボーンが配置されている必要があります。
- アバターにうまくマッチングさせるには、ボーンに身体の部位を表す名前を付けます。例えば、“LeftArm” と “RightForearm” のような名は、ボーンが何を制御するかを明確に表しています。
- ジョイント/ボーンの階層は、作成しているキャラクターの自然な構造に従う必要があります。腕と足がペアになっている場合、一貫した名前の命名規則に従います (例えば、左腕の場合は “arm_L”、右腕の場合は “arm_R”)。階層に使用可能な構造は以下のとおりです。
- HIPS - spine - chest - shoulders - arm - forearm - hand (腰 - 背骨 - 胸 - 肩 - 腕 - 前腕 - 手)
- HIPS - spine - chest - neck - head (腰 - 背骨 - 胸部 - 首 - 頭部)
- HIPS - UpLeg - Leg - Foot - toe - toe_end (腰 - 上脚 - 脚 - 足 - つま先 - つま先端)
2 足歩行スケルトン、T ポーズ
汎用モデルの場合、唯一の要件は、モデルをインポートする際に__ルートノード__として指定できるボーンがスケルトンに含まれていることです。これにより、モデルの重心が効果的に定義されます。
スキニング
最初の設定は一般的に自動化されています。通常、満足のいくスキンのデフォーメーション結果を得るために、スキニングでかなりの作業量とアニメーションによるテストが必要です。
インタラクティブなスキニングによる紐づけは、スキニング手法のひとつ
このプロセスの一般的なガイドラインは以下のとおりです。
- 最初に自動化されたプロセスを使用して、スキニングの一部を設定します (使用する 3D モデリングソフトウェアに使用可能なスキニングチュートリアルを参照してください)。
- リグにシンプルなアニメーションを作成するか、スキニングのテストとして使用できるアニメーションデータをインポートします。これにより、動いているときにスキニングの見え方が適切か素早く判断することができます。
- スキニングソリューションをインクリメントに編集し、改良します。
- パフォーマンス上の理由から、ソフトバインドを使用する場合はインフルエンスの数を最大 4 つに制限することを検討してください。Unity がデフォルトでサポートする最大数です。メッシュが 4 つ以上のインフルエンスを使用する場合は、以下のオプションのいずれかを選択します。
-
Skin Weights プロパティを使用して、インフルエンスの最大数を増やします。
- モデルを Maya からエクスポートする前に、Bake Deformer ツールを使用して (Maya’s のトップメニューから Skin > Bake Deformers to Skin Weights を選択して) 、デフォーメーションジョイントをベイク処理します。.詳細については、Autodesk ドキュメントのキャラクターにデフォーマをベイク処理するを参照してください。
モデルのエクスポートと検証
Unity は、汎用およびネイティブのさまざまな 3D ファイル形式をインポートしていますが、推奨されるファイル形式は FBX です。詳細は、モデルのファイル形式を参照してください。
FBX を使用する場合は、以下の通りです。
- スケルトンの階層、法線、テクスチャ、アニメーションを持つメッシュをエクスポートします。
- メッシュを 3D モデリングソフトウェアに再インポートして、アニメーション化したモデルが期待どおりに見えることを確認します。
- アニメーションをメッシュなしでエクスポートします。