Unity のヒューマノイドアニメーションシステムとリターゲティングの利点をフルに活用するために、リグ と スキン のヒューマノイドタイプのメッシュが必要です。
キャラクター モデル は 3D モデリングソフトウェアで、一般的にポリゴンから構成されます。または、エクスポート前に、より複雑なメッシュタイプからポリゴンや三角メッシュに変換されます。
キャラクターの動きを制御するには、ジョイント階層 か スケルトン を作成し、メッシュ内のボーンとそれらの相互の動きを定義する必要があります。このようなジョイント階層を作成する処理を リギング と言います。
次に、メッシュか スキン をジョイント階層に接続する必要があります。これは、任意のジョイントがアニメーション化されたときにキャラクターメッシュのどの部分が動くかを決定します。メッシュにスケルトンを接続する処理は スキニング と呼ばれます。
Unity のアニメーションシステムで使用するヒューマノイドモデルを取得するには、主に 3 つの方法があります。
Poser、Makehuman、Mixamo などのプロシージャルなキャラクターシステムやキャラクタージェネレーターを使用します。これらのシステムの中には、メッシュにリグとスキンの処理を行えるもの (Mixamo など) と、そうでないものがあります。さらに、これらの方法を使用する場合は、元のメッシュ内のポリゴン数を減らして、Unity で使用できるように適応させなければならない場合があります。
デモサンプルとキャラクターコンテンツを Unity Asset Store から購入します。
モデリングは、3D モデリングソフトウェア (Autodesk® 3dsMax®、Autodesk® Maya®、Blender など) で独自のヒューマノイドの メッシュ を作成する処理です。それ自体で主題になり得るほど、大きなトピックですが、モデルが Unity プロジェクトのアニメーションとうまく機能するためのガイドラインをいくつか挙げます。
適正な構造 を持つトポロジーを使用します。メッシュの「適正な」構造の正確な性質はやや微妙ですが、一般的に、モデルの頂点と三角形がアニメーション化されるときに、どのように歪むのかに注意する必要があります。不十分なトポロジーでは、メッシュを歪ませずにモデルを動かすことはできません。既存の 3D キャラクターメッシュを調べて、トポロジーの配置方法とその理由を確認してください。
メッシュの スケール を確認します。テストインポートを行い、インポートしたモデルのサイズを「メーターキューブ」と比較します。標準の Unity キューブプリミティブは、1 ユニットの辺の長さを持つため、たいていの目的で 1m のキューブとして扱うことができます。3D モデリングソフトウェアが使用するユニットを確認し、エクスポート設定を調整します。すると、モデルのサイズがキューブに対し正しい比率になります。スケールの概念を持たずにモデルを作成するのは簡単ですが、Unity にオブジェクトをインポートしたときにサイズが不均衡なオブジェクトになってしまいます。
キャラクターの足がモデルのローカルの原点または「アンカーポイント」に立つようにメッシュを配置します。キャラクターは通常、床の上を直立して歩くので、アンカーポイント (つまり、その変換位置) が直接その床にあると、扱いがはるかに簡単になります。
できるだけ T ポーズ でモデル化します。これにより、必要な場所 (例えば、脇の下) でポリゴンを細かく調整することができます。これにより、リグをメッシュの内側に配置しやすくなります。
ビルド中に、モデルをクリーンアップします。可能であれば、穴を塞ぎ、頂点を結合し、隠れた面を削除します。これはスキニング、特に自動スキニング処理を容易にします。
リギングは、ジョイントのスケルトンを作成してモデルの動きを制御する処理です。
3D モデリングソフトウェアは、ヒューマノイドリグのジョイントを作成するためのさまざまな方法を提供します。これらは、メッシュに合わせてスケーリングできる既製の 2 足歩行のスケルトンから、個々のボーンを作成し独自のボーン構造の親子関係を作るツールに至るまで、様々です。Unity でアニメーションを扱うには、それらがボーンの階層構造のルート要素であることを確認します。スケルトンには、最低 15 個のボーンが必要です。
Unity が 有効なマッチを作成 するためには、少なくとも必須のボーンはスケルトンの正しい位置になくてはなりません。アバターにうまくマッチさせるには、ボーンに身体の部位を表す名前を付けます。例えば、“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
スキニングは、メッシュをスケルトンにアタッチする処理です。
スキニングは、メッシュ内の頂点を直接ボーンにバインド (リジッドバインド) か、複数のボーンへのブレンドした影響も加味してバインド (ソフトバインド) します。3D モデリングソフトウェアによって異なる方法が使用されます。例えば、個々の頂点を割り当て、ボーンごとの影響のウェイトをメッシュにペイントすることができます。最初の設定は一般的に自動化されています。例えば、最も近い影響を見つけるか、「ヒートマップ」を使用します。スキニングは通常、満足のいくスキンのデフォーメーションを得るために、かなりの量の作業とアニメーションによるテストを必要とします。このプロセスの一般的なガイドラインは以下のとおりです。
最初に自動化されたプロセスを使用して、スキニングの一部を設定します (使用する 3D モデリングソフトウェアに使用可能なスキニングチュートリアルを参照してください)。
リグにシンプルなアニメーションを作成するか、スキニングのテストとして使用できるアニメーションデータをインポートします。これにより、動いているときにスキニングの見え方が適切か素早く判断することができます。
スキニングソリューションをインクリメントに編集し、改良します。
ソフトバインドにする場合は、影響の数を最大 4 つに制限します。これは、Unity がサポートする最大数です。メッシュが 4 つ以上の影響を使用すると、Unity でアニメーションを再生するときにいくつかの情報が失われます。
Unity は多くの異なるジェネリックとネイティブの 3D ファイル形式をインポートします。FBX はモデルのエクスポートと検証に推奨される形式で、以下に使用できます。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.