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

パフォーマンスと最適化

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

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

ボーンの数

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

複数のスキンメッシュ

可能なかぎりスキンメッシュはまとめてください。キャラクターを 2 つの スキンメッシュレンダラー に分けることはパフォーマンス観点ではよいことではありません。キャラクターにひとつのマテリアルのみの場合はさらによいですが、実際には複数のマテリアルが必要であるケースは存在します。

アニメーションシステム

コントローラー

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

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

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

スケールカーブ

アニメーションのスケールカーブはアニメーションによる移動や回転カーブよりも非常に重い(コストのかかるもの)です。パフォーマンスを改善するためにアニメーションによるスケールは避けましょう。

注意: これは一定の曲線( [アニメーションクリップ] (クラス AnimationClip )の長さの値が同じ曲線)には適用されません。一定の曲線は最適化され、通常の曲線よりも軽い(コストのかからない)です。

レイヤー

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 されません。詳細については スキンメッシュレンダラー を参照してください。

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