Version: 2017.4
ヒューマノイドアニメーションのリターゲティング
アニメーションリファレンス

パフォーマンスおよび最適化

このページでは アニメーションシステム概要 で最高のパフォーマンスを得るための Tips を提供し、キャラクターのセットアップ、アニメーションシステムおよび、実行時の最適化がカバーしています。

キャラクターのセットアップ

ボーンの数

多くのボーンを使用してキャラクターを作成しないといけない場合があります。例えばカスタマイズ可能なアタッチメントが必要なケースです。この時に必要となる追加のボーンの数によりビルドサイズは大きくなり、追加のボーン数に比例して処理コストが増えると考えるべきです。例えば、Generic モードですでに 30 のボーンがあるリグに 15 のボーンを追加すると 50% 多く時間がかかります。Mecanim におけるジェネリックアニメーション および ヒューマノイドアニメーションでの作業 のいずれでも追加のボーンを持つことができることに注意してください。追加のボーンを使用していても再生するアニメーションがない場合は、処理コストの増加は無視できる程度です。アタッチメントが存在しない場合や隠れている場合はさらに処理コストは低くなります。

複数のスキンメッシュ

スキンメッシュは可能なかぎりまとめてください。パフォーマンスの観点から言うと、キャラクターを 2 つの スキンメッシュレンダラー に分けるのは良くありません。マテリアルは 1 キャラクターで 1 つのみがベストですが、どうしても複数のマテリアルが必要になる場面もあるかと思います。

アニメーションシステム

コントローラー

Animator コンポーネントアニメーターコントローラー がセットされていなければ処理時間は増加しません。

シンプルなアニメーション

ブレンディングのないひとつの アニメーションクリップ を再生することで Mecanim旧アニメーションシステム / Legacy animation system より遅くなる場合があります。古いシステムは直接的なものであり、カーブをサンプリングして Transform に書き込みを行っています。Mecanim はブレンディングに使用するテンポラリバッファがあり、サンプリングされたカーブおよび他のデータの複製が発生します。Mecanim のレイアウトはアニメーションブレンディングに最適化されていて、より複雑なセットアップがあります。

スケールカーブ

スケールカーブのアニメーションは、移動や回転のアニメーションよりも非常に高価(処理コストが高い)です。パフォーマンスを改善する場合は、スケールアニメーションを避けます。

注意: これは、全区間にわたって常に長さの値が変わらない アニメーションクリップ のカーブには当てはまりません。この種のカーブは最適化されており、通常のカーブよりもコストはかかりません。デフォルトのシーンの値と同じ値を持つ定数カーブは、すべてのフレームに対しシーンに書き込みするわけではありません。

レイヤー

Mecanim の処理時間の多くはアニメーションの評価に使用されているため、アニメーションレイヤー および アニメーションステートマシン のオーバーヘッドは最小限に抑えられています。アニメーターに追加するレイヤーのコストは同期化されているかどうかに関わらず、どの アニメーション および ブレンドツリー がレイヤーによって再生されているかどうかに依存しています。レイヤーのウェイトが 0 である場合、レイヤーの更新はスキップされます。

Humanoid vs Generic モード

次の Tips がモードを決定するための参考になります:

  • Humanoid アニメーションをインポートするとき、ボディマスクを使用して IK ゴールまたは不要な指のアニメーションを除いてください。
  • Generic を使用する場合は、root motion によって処理負荷が増加します。root motion を使用しないアニメーションのときは、root bone が選択されていないことを確認してください。

Mecanim シーン

最適化できる要素は豊富にあり、いくつかの便利な Tips としては以下があります。:

  • Animator にクエリをかける際に文字列の代わりにハッシュを使用すること。
  • Animator を制御する 小規模な AI レイヤー を実装すること。OnStateChangeOnTransitionBegin 、などのためにシンプルなコールバックを提供するようにします。
  • State タグ を使用して AI ステートマシンMecanim ステートマシン にマッチングするようにすること。
  • イベント をシミュレートするために追加したカーブを使用すること。
  • 追加したカーブを使用してアニメーションをマークアップすること。例えば ターゲットマッチング とともに使用します。

実行時の最適化

Visibility と Update

アニメーターの Culling ModeBased on Renderers にセットして、スキンメッシュレンダラーの Update When Offscreen プロパティーを無効にすることでアニメーションを常に最適化できます。これによりキャラクターが非表示のとき、アニメーションは Update されません。詳細については スキンメッシュレンダラー を参照してください。


ヒューマノイドアニメーションのリターゲティング
アニメーションリファレンス