チュートリアル:マニュアルでのルートモーションのスクリプティング
旧アニメーション システム

メカニム パフォーマンスおよび最適化

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

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

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

ボーンの数

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

複数のスキンメッシュ

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

アニメーションシステム

コントローラ

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

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

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

スケール カーブ

全てのアニメーション クリップスケール カーブ がないことを確認します。アセットのポストプロセッサにより,自動的に削除または警告することが出来るため,詳細は AssetPostprocessor を参照して下さい。

レイヤー

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

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

  • Humanoid アニメーションをインポートするとき,ボディマスクを使用して IK ゴールまたは不要な指のアニメーションを除いて下さい。
  • Generic を使用する場合, root motion を使用することで処理負荷が増加します。root motion を使用しないアニメーションのときは, root bone が選択されていないことを確認して下さい。
  • Android 上では NEON が現在 Android でサポートされていないためにパフォーマンさらに悪化します。Humanoid モードは数値計算が特に負荷が多きため, NEON がないために 2 - 2.5 倍遅くなることが容易に発生する場合があります。

メカニム シーン

最適化できる要素は多く,いくつかの便利な Tips としては:

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

実行時の最適化

VisibilityとUpdate

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

チュートリアル:マニュアルでのルートモーションのスクリプティング
旧アニメーション システム