Scene Debugger を使用すると、シーンのパフォーマンスを分析できます。シーンのエレメントによって消費された処理時間とメモリが通知されるため、処理を遅くしている原因を特定して解消することができます。
A |
[パフォーマンス](Performance)と[メモリ](Memory)を切り替えます。 [メモリ]に切り替えたら、[更新]をクリックする必要があります。[メモリ]に切り替えることによってキャプチャされたパフォーマンス データが消去されるため、再び[パフォーマンス]に切り替えたときにデータを再キャプチャする必要があります。 |
B |
テキスト ファイルに書き出すか、プリファレンスを設定します。 |
C |
表示を更新します。ノード下で統合を停止または開始した後、あるいはプリファレンスを変更した後に、クリックします。 |
D |
データをクリアします。キャプチャも停止されます。 |
E |
パフォーマンス データのキャプチャを開始または停止します。これは、パフォーマンス データの表示に必要です。([パフォーマンス]タブのみ) |
F |
表示用にオペレータがどのようにグループ化されるかをコントロールします。([パフォーマンス]タブのみ)
|
G |
パフォーマンスまたはメモリに関する情報がこのペインに表示されます。 [パフォーマンス]タブで特定のノードを右クリックすると、オペレータの統合方法をコントロールできます。続けて、[更新](Update)をクリックします。 |
H |
[パフォーマンス]タブの詳細 [メモリ]タブの詳細については、「メモリ データを表示して解釈する」を参照してください。 |
シーンに対するパフォーマンスのプロファイリングを実行するための一般的な手順について、ここで簡単に説明します。
[表示](View) [一般](General) [Scene Debugger]を選択し、[パフォーマンス]タブが表示されていることを確認します。
必要に応じて、[ファイル](File) [設定](Preferences)を選択し、[フィルタのしきい値](Filtering threshold)を設定してほとんど時間のかからないノードを除外することができます。
この設定は後からでも変更できます。[更新](Update)をクリックしてください。ただし、シーンでキャプチャ対象となるデータの量に応じて表示の更新に長い時間がかかる場合があるため、望ましい値で開始するのが得策です。
[オブジェクト下を統合する](Consolidate Below Objects)または[描画ステップ下を統合する](Consolidate Below Drawing Steps)を選択します。
この設定も後から変更できます。[更新](Update)をクリックしてください。ただし、望ましい値で開始するのが得策です。
パフォーマンス データが Scene Debugger に表示されます。データの解釈方法については、「パフォーマンス データを解釈する」を参照してください。
評価に長い時間のかかるノードが見つかったら、そのノードをさらに調べてみます。ウィンドウの下部([Category]セクションの下の[Call Graph]セクション内)で、以下のタイプのノードを右クリックできます。
コンテキスト メニューには、互いに排他的な 2 つのオプションがあります。
このノード下を統合する(Consolidate Below This Node)。このオプションを選択すると、ノードによって呼び出されたオペレータがリストにまとめられます。データの表示を簡略化する場合に便利です。
このノードの下で統合しない(Don't Consolidate Below This Node)。このオプションを選択すると、そのノードの下でネストされたコール スタック全体が表示されます。どのノードがどのノードを呼び出しているかを詳細に確認する場合に便利です。
これらの設定はノードごとに保存されます。どちらかのコマンドを選択すると表示が[カスタム](Custom)に変わりますが、すぐには更新されません。その他のノードを右クリックして、そのオペレータ コールの統合方法をコントロールできます。[更新](Update)をクリックしてください。統合を別の設定に切り替えると[カスタム]設定は維持されないため、メニューから[カスタム]に戻しても前のビューを復元することはできないことに注意してください。
また、オペレータなどのノードの下に統合するように選択しても、ノードがコール スタックの上のポイントですでに統合されている場合は、機能しないことに注意してください。オブジェクトやオペレータの上の描画ステップからの統合を停止しなければ、オペレータの下での統合の効果を得ることはできません。
デバッグを終了したら、[Scene Debugger]ウィンドウを閉じる前に[クリア](Clear)をクリックしてパフォーマンスデータを破棄します。
Scene Debugger におけるデータの解釈には注意を要します。たとえば、特定のノードの評価に異常に長い時間がかかっているように見える場合がありますが、それは単に、いずれにせよ評価しなければならない負荷の高いオペレータを最初に引っ張るノードであったためかもしれません。そのような場合、そのノードが負荷の高いオペレータを引っ張らないようにシーンを修正しても、同じ状態が他のノードに引き継がれてしまうだけです。また別の例では、左目の変換の計算に多くの入力を必要とした場合も、右目の計算には 1 つの入力しか必要でないことがあります。なぜなら、他の入力はすでに評価されているためです。
Scene Debugger の[パフォーマンス]タブの情報は、3 つのセクションに分けられています。
最初の 2 行は、時間単位とフィルタリングに関する情報です。ユーザが設定した[フィルタのしきい値](Filtering threshold)より短いノードを除外することによって、データを簡略化することができます。「[Scene Debugging]プリファレンス」(「プリファレンス リファレンス」)を参照してください。しきい値を変更した後で、[更新](Update)をクリックしてデータを更新する必要があります。
次のセクションは[カテゴリ]で、オペレータの全カテゴリの要約情報が表示されます。メインのセクションでのデータの統合方法に関係なく、このセクションは同じです。カテゴリは評価時間の降順に表示され、評価時間の長いカテゴリは自動的に展開されます。
メインのセクション[Call Graph]には、ユーザが選択したオペレータの統合方法に応じて、詳細なタイミング データが表示されます。ここでも、ノードは評価時間の降順に表示され、評価時間の長いノードは自動的に展開されます。
トップレベルの各ノードは個別のコール スタックを表します。ビューがミュートまたは最小化されていない限り、各ジオメトリ ビューに 1 つのノードがあります。ビューの描画以外で実行されたコール スタックを表す追加のノードがある場合もあります。たとえば、ローカル モードでマニピュレータを操作した後に、Softimage で階層の変換を評価する必要がある場合などです。
オペレータは、Scene Debugger 上部近くにある要約でタイプ別に分類されます。
デフォルトでは、メインのセクションにある統合されたリストでも分類されます。これは[統合されたカテゴリを表示](Show the consolidated categories)でコントロールされます。「[Scene Debugging]プリファレンス」(「プリファレンス リファレンス」)を参照してください。このオプションがオフの場合、統合されたオペレータは分類されていないフラットなリストとして表示されます。
アニメーション オペレータ |
このカテゴリには、キネマティクスやコンストレイントなど、すべてのアニメートされた変換が含まれます。 |
デフォーム オペレータ |
このカテゴリにはデフォーメーションが含まれます。デフォーメーションに使用される ICE ツリーは含まれません。 |
描画 |
このカテゴリは以下の描画ステップに分けられます。
|
ICE オペレータ |
このカテゴリには、その使用目的(デフォーメーション、シミュレーションなど)に関わらず、すべての ICE オペレータが含まれます。 「ICE ツリーのパフォーマンスをプロファイリングする」(「ICE ガイド」)の説明に従って ICE オペレータのパフォーマンスを個別にプロファイルすることができます。 |
オブジェクト |
オペレータ評価外でオブジェクトによってもたらされたオーバーヘッドを表します。値は非常に小さなものでなければなりません。 |
OpenGL レンダ |
更新されたビューのレンダリングにかかった時間を表します。 |
カスタム オペレータ |
このカテゴリには、スクリプトおよびカスタムのコンパイル オペレータが含まれます。 |
スクリプト |
パフォーマンス データのキャプチャ中に実行したスクリプトが含まれます。 |
タスク |
操作中に呼び出したコマンドが含まれます。 |
トポロジ オペレータ |
ジオメトリ コンポーネントを追加または削除するオペレータが含まれます。 |
その他のオペレータ |
他のカテゴリに該当しないすべてのオペレータが含まれます。たとえば、エクスプレッション(アニメートされた変換を表す場合も表さない場合もあります)、クラスタ オペレータなどです。 |
イベント |
これには、データ キャプチャ中のイベント処理にかかったすべての時間が含まれます。 |
[パフォーマンス]タブと比べて、[メモリ]タブは非常にシンプルです。何もキャプチャする必要はありません。ただ[更新](Update)をクリックするだけです。[パフォーマンス]タブに再び切り替えたときに、パフォーマンス データを再キャプチャする必要はあります。
メモリ データは、以下の 2 つのセクションに分けられています。
この情報によって、シーンで使用されているメモリを大まかに把握できます。ただし、全バイトがカウントされているわけではない点に注意してください。
データのコピーがリストされている場合は、メモリを節約するためにフリーズ可能なデータがあるかもしれません。ただし、これが該当しないケースもあります。コピーは内部データを表す場合もあり、こうしたデータは不要になったときに自動的に削除されます。