エバリュエータのリファレンス

このトピックでは、評価ツールキット(Evaluation Toolkit)内の特定のカスタム エバリュエータ設定の詳細を説明します。並列評価の詳細な技術情報およびカスタム エバリュエータの背景情報については、「Maya を並列に使用する」を参照してください。

デフォーマ エバリュエータ

デフォーマ(deformer)エバリュエータは、GPU のオーバーライド (GPU Override)オプションを実行します。

デフォーマ(deformer)エバリュエータは、シーンのパフォーマンスを向上させるために、デフォーマ ノード チェーンの CPU の評価を GPU の評価に置き換えます。deformerEvaluator コマンドを使用して、シーン内でサポートされているデフォーマ ノード チェーンに関する情報を取得する、または特定のノードがサポートされない理由を検出します。GPU のオーバーライド(GPU Override)によってサポートされている頂点の数を表示するには、評価のヘッドアップ ディスプレイ(HUD)オプションを使用します。

制限

  • 各デフォメーション チェーンは、出力接続を持たないメッシュ ノードで終わる必要があります。つまり、そのメッシュがサポートされるためには、pointOnPoly コンストレイント、毛根、またはその他の出力接続を持つことができないことを意味します。
  • blendShape、skinCluster、cluster、softMod、tweak ノードのみ、および特定のフィーチャのみがサポートされます。

ダイナミクス エバリュエータ

ダイナミクス(dynamics)エバリュエータは、複雑な評価要件があることの多い、ダイナミクス関連のノードの評価を適切に処理します。いくつかの構成オプションがサポートされていますが、通常は既定の動作で対応できるため、構成オプションを使用することはありません。

ダイナミクス エバリュエータには 3 つの主な役割があります。
  1. ダイナミクス エバリュエータによって評価されるダイナミクス関連のノードをクラスタ内にグループ化します。
  2. これらのクラスタがダイナミクス関連のノードが必要とする複雑な評価ルールに従うように、クラスタの評価を管理します。
  3. サポートされない設定を検出すると並列評価を無効にする

制限

  • 評価マネージャを使用するダイナミクス シミュレーション(およびダイナミクス エバリュエータ)は、DG ベースの評価とは異なる結果を出す場合があります。しかし、これらの結果は、Maya のビューポートで行われるか Maya バッチで行われるかに関係なく一貫性があります。
  • 旧式のダイナミクス(旧式のパーティクル、流体など)は、ダイナミクス エバリュエータでサポートされません。サポート対象外のアニメートされたノードがシーンで検出された場合、並列評価は無効になります。

ダイナミクス評価とサポートされていない機能の詳細については、「並列 Maya を使用する」を参照してください。

フリーズ エバリュエータ

フリーズ(frozen)エバリュエータを使用して、評価から評価グラフのサブセクションを除外することができます。これは frozen アトリビュートを使用して機能し、エバリュエータ設定によって設定されたルールを使用して、関連するノードにフリーズ状態を伝搬します。フリーズ エバリュエータは、DAG と評価グラフ内の接続と伝搬の概念をよく理解している場合にのみ、使用してください。そうでない場合は、もっと単純な非表示エバリュエータの方を使用してください。

評価マネージャでは、frozen アトリビュートが True に設定されたノードは評価されません。フリーズ エバリュエータが有効な場合、有効化されたオプションに対応するルールに従って、関連するノードは評価されなくなります。

フリーズ(frozen)エバリュエータは、3 つのフェーズで動作します。

  1. フリーズ用にマークされた invisible および displayLayers オプションでフラグ設定されているノードを集めます。
  2. 評価グラフを通って外向きにフリーズ状態を伝搬します(downstream および upstream オプションの値に応じる)。
  3. フリーズしたノードを分析し、下流ノードに他のフリーズ解除の入力がない場合は、これらはスキップされます。この手順は、次の制限事項で説明するランタイム操作と呼ばれます。

制限事項

  • フリーズ エバリュエータが、影響下の複数のノードの評価をオフにするには、少なくとも 1 つの frozen アトリビュートを "True" に設定する必要があります。最も実用的な使用法としては、これを表示レイヤ上で行って、ノードをグループとしてフリーズします。
  • frozen アトリビュート、または関連するインプリシット ノードのフリーズの定義に使用されている任意のアトリビュート(visibility など)がアニメートされている場合は、エバリュエータはこれらを評価から除外しません。これらはスケジュールされたままになります。この場合、不要な評価を避けるには runtime オプションのみが有効なオプションになります。
    注: runtime オプションはエバリュエータ操作を変更せず、ノードの評価スケジュールを修正します。cmds.evaluator(query=True, clusters=True, name='frozen' ))からの出力など、エバリュエータ情報内には、このオプションの影響を受けているノードは表示されません。
  • サイクルのメンバーは、サイクルのすべての入力がフリーズされていない限り、このエバリュエータによってフリーズされません。これは、サイクルは 1 単位として評価されるため、サイクルの個々のメンバーをフリーズするのは無意味であるためです。

さらに詳細な解析については、「並列 Maya を使用する」を参照してください。

非表示エバリュエータ

非表示(invisibility)エバリュエータは、モデリング ビューポートの目的で非表示となっているすべての DAG ノードを特定して、表示される DAG ノードから上流にないすべてのノードを評価しないようにします。このエバリュエータは非表示としてレンダーするノードを決定するために、次の状態のいずれかを考慮します。
  1. "Visibility" アトリビュートが false に設定されたノード。
  2. "Draw Override Visibility" アトリビュートが false に設定されたノード、および "Draw Override Enabled' アトリビュートが true に設定されたノード。
  3. オプション 2 (上記)を true にする表示レイヤのノード。
  4. "IsIntermediateObject" アトリビュートが true に設定されたノード。
  5. 上方のノードからルートまでのすべてのパスで、上記の少なくとも 1 つにあてはまるノードが少なくとも 1 つ検出された場合。(この場合、インスタンス化において「すべての」という点が重要です。上記のいずれかによって、1 つのノードへのすべてのインスタンス パスが非表示としてレンダーされる必要があります)。

非表示ノードのみを制御するノードはフリーズされ、評価されません。(表示されている DAG ノードは、自らを制御するものとみなされるため、常に評価されます)。

多くの場合、非表示(invisibility)エバリュエータを有効にした場合の実際の結果は、シーンに目に見える変化をもたらすものではなく、非表示項目に応じて幅はありますが、再生速度が改善するというものです。

使用が推奨されない場合

非表示(invisibility)エバリュエータは、その表示の定義をノードの可視性状態のみから取得するため、UI またはプラグイン コードが評価に非表示ノードを必要とする場合は、非表示(invisibility)エバリュエータは使用しないでください。

制限

  • 非表示(invisibility)エバリュエータは静的可視性のみを考慮します。上記の定義によりアニメートされた可視性がある(つまり、任意のチェック対象アトリビュートがアニメートされる)ノードは、常に表示されるとみなされます。
  • サイクルが存在する場合、サイクル内のすべての項目は非表示にする必要があり、さもなければサイクルがフリーズされません。
  • ノードをインスタンス化し、上方に少なくとも 1 つの表示されているパスがある場合は、すべての上方のパスが評価されます(つまり、2 つのインスタンスのうち一方を非表示にしても効果はありません)。