Unity のヒューマノイドアニメーションシステムとリターゲティングの利点をフルに活用するために、リグ と スキン のヒューマノイドタイプのメッシュが必要です。
キャラクター モデル は 3D モデリングソフトウェアで、一般的にポリゴンから構成されます。または、エクスポート前に、より複雑なメッシュタイプからポリゴンや三角メッシュに変換されます。
キャラクターの動きを制御するには、ジョイント階層 か スケルトン を作成し、メッシュ内のボーンとそれらの相互の動きを定義する必要があります。このようなジョイント階層を作成する処理を リギング と言います。
次に、メッシュか スキン をジョイント階層に接続する必要があります。これは、任意のジョイントがアニメーション化されたときにキャラクターメッシュのどの部分が動くかを決定します。メッシュにスケルトンを接続する処理は スキニング と呼ばれます。
Unity のアニメーションシステムで使用するヒューマノイドモデルを取得するには、主に 3 つの方法があります。
Poser、Makehuman、Mixamo などのプロシージャルなキャラクターシステムやキャラクタージェネレーターを使用します。これらのシステムの中には、メッシュにリグとスキンの処理を行えるもの (Mixamo など) と、そうでないものがあります。さらに、これらの方法を使用する場合は、元のメッシュ内のポリゴン数を減らして、Unity で使用できるように適応させなければならない場合があります。
デモサンプルとキャラクターコンテンツを Unity Asset Store から購入します。
3D モデリングアプリケーションを使用して、独自のキャラクターの モデリング、リギング、スキニング をゼロから行います。
モデリングは、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 モデリングソフトウェアに使用可能なスキニングチュートリアルを参照してください)。
リグにシンプルなアニメーションを作成するか、スキニングのテストとして使用できるアニメーションデータをインポートします。これにより、動いているときにスキニングの見え方が適切か素早く判断することができます。
スキニングソリューションをインクリメントに編集し、改良します。
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.