ドローコールバッチング
レンダリング統計ウィンドウ

最適なパフォーマンスのためのキャラクターモデリング

最適なレンダリングスピードが出るキャラクターモデルの設計を行うテクニックを以下で示します。

スキンメッシュレンダラーはひとつ

各キャラクターで スキンメッシュレンダラー はひとつとすべきです。Unity は表示カリングおよび境界ボリュームの更新をしようしてアニメーションを最適化し、これらの最適化はひとつの アニメーション およびひとつのスキンメッシュレンダラーを使用した場合のみ有効化されます。モデルのレンダリング時間はふたつのスキンメッシュをひとつのスキンメッシュレンダラーの代わりに使用することでおおよそ 2 倍となる場合があり、複数のメッシュを使用する実用的なメリットがあることは稀です。

できるかぎりマテリアルを少なくする

各メッシュの マテリアル の数は、できるかぎり少なくするべきです。例えば、複数のマテリアルをキャラクターで使用するのは、身体の部分に合わせたシェーダーを利用しなければいけません(目の部分は特殊なシェーダーなど)が、ほぼすべてのケースにおいて、マテリアルが 2 ~ 3 つであれば気にする必要はありません。

できるかぎりボーンを少なくする

典型的なデスクトップゲームのボーン階層は 15 個から 60 個の数のボーンを使用します。ボーンの数が少ないほど、パフォーマンスが良くなります。デスクトッププラットフォームでは、30 個ぐらいのボーンで非常によいパフォーマンス結果が得られ、モバイルプラットフォームでも比較的よいパフォーマンス結果が得られます。理想的には、モバイルデバイスでは 30 個以下に抑えて、デスクトップゲームでも 30 個を大きく超えないようにします。

ポリゴンの合計数

ポリゴン数は必要な品質およびターゲットするプラットフォームに依存します。モバイルデバイスでは、メッシュあたり 300 から 1500 ポリゴンでよいパフォーマンス結果が得られ、デスクトッププラットフォームでは理想的な範囲として 1500 から 4000 ぐらいです。ゲームにたくさんのキャラクターを登場させる必要があるときには、メッシュあたりのポリゴン数を減らす必要があるかもしれません。

フォワードおよびインバースキネマティクスを分ける

アニメーションがインポートされるとき、モデルの IK ノードはフォワードキネマティクス( FK )に焼き込みされ、結果として Unity は IK ノードがまったく必要ありません。しかしモデルに残ったままであるとアニメーションに影響しないにも関わらず CPU オーバーヘッドが生じます。好みに応じて Unity またはモデリングツールのどちらでも冗長な IK ノードを削除することができます。理想的には、IK および FK 階層はモデリングの際に別に保持して、必要なときに IK ノードを容易に削除できるようにすべきです。

ドローコールバッチング
レンダリング統計ウィンドウ