Houdini 18.0 ノード LOPノード

Add Variant

Prim上のバリアントセットに1つ以上のバリアントを追加します。このノードは、そのPrimが存在しなければ、そのPrimを作成します。

On this page

概要

USDは、複数の名前が付いたプリミティブの バリアント をプリミティブ上に保存することができます。 バリアント毎に異なるアトリビュート、リレーションシップ、子Primsを持たせることができます。 レイヤー別に異なるバリアントでプリミティブを切り替えることができます。 各プリミティブは、名前の付いた バリアントセット 内に複数のバリアントのグループを保存することができます。

以下にバリアントの一般的な使用方法を載せています:

  • 異なるジオメトリのファミリー(例えば、異なるタイプのツリーを切り替えることができるプリミティブ)。

  • Levels of Detail(同じジオメトリを段階的に解像度を下げたバージョンをバリアントとして保存し、カメラまでの距離に基づいて切り替える)。

    Houdiniには、このワークフローを自動化するためのCreate LODノードとAuto Select LODノードが入っています。

  • マテリアルの割り当て(異なるマテリアルを割り当てたバリアントを保存することで、プリミティブのルックを簡単に切り替えることができます)。

以下に、ownerという名前のバリアントセットを含んだレイヤーのサンプルを載せています。 各バリアントのカラーは、そのボールを所有するストーリー内のキャラクタに呼応しています:

#usda 1.0
()

def Sphere "toyBall" (
    variants = {
        string owner = "blake"
    }
    append variantSets = "owner"
)
{
    double radius = 1
    variantSet "owner" = {
        "andy" (
        ) {
            color3f[] primvars:displayColor = [(1, 0, 0)] (
                interpolation = "constant"
            )


        }
        "blake" (
        ) {
            color3f[] primvars:displayColor = [(0, 0, 1)] (
                interpolation = "constant"
            )


        }
        "sally" (
        ) {
            color3f[] primvars:displayColor = [(0, 1, 0)] (
                interpolation = "constant"
            )


        }
    }
}

PixarのUSD用語集のバリアントセットを参照してください。

How to

  1. "メイン"ステージをこのノードの1番目の入力に接続します。

  2. Primitive Path にバリアントの追加先となるPrimのパスを設定し、そのバリアントを追加するPrim上の Variant Set の名前を設定します。

    このノードは、指定したパスでPrimとその親Primが存在しなければ、それらのPrimを作成します。 Primitive Kind パラメータと Parent Primitive Type パラメータは、この場合に作成するPrimのタイプを制御します。

  3. 追加したいバリアントPrimを含んだステージを2番目の複数入力に接続します。

    たいていの場合、この"variant"入力には"フル"ステージを接続するのではなくて、SOPネットワークから取り込んだジオメトリの結果、または、ディスクからUSDに取り込んだ結果を接続します。

    バリアントとして使用したいPrimブランチが既に"メイン"ステージ上に存在した場合、その"メイン"ステージをこのノードの1番目と2番目の両方に接続しても構いません。

  4. 追加するバリアントを定義したPrimのパス(これは2番目の入力のシーングラフツリー内のパスです)を Variant Path に設定します。

  5. パラメータエディタの下部にあるテーブル内で、入力ノード名の右隣の列をダブルクリックして、バリアントセット内のこのバリアントの名前を入力します。

    (名前を指定しなかった場合、 Variant Name Default パラメータ内のエクスプレッションによって自動的に名前が付けられます)

    2番目の入力からバリアントセットへコピーされたバリアントには、 Variant Path で指定されたPrim とそのすべての子Prims が含まれます。

Note

最後の3つの手順を繰り返すことで、指定したバリアントセットにもっとバリアントを追加することができます。 これは、 Variant Path が各バリアント入力内で同じ場合にのみ動作します。

Tips

  • このノードは、コンテキストオプションを設定します。

  • 2番目の入力に接続されたステージのレイヤーは、バリアントを定義したすべての情報をアクティブレイヤーにコピーできるように、常に単一レイヤーに"平坦化"されます。

  • 平坦化されたレイヤーの内容は、コピー処理によってまったく変更されないので、定義されたPrimsがバリアント内に定義され、overPrimsはそのバリアント内でもoverPrimになります。

  • USDは、バリアントの内容に何も制限を課しません。 Primitive Path で指定されたPrimとその子Primに対してさらにオピニオンを表現する場合、(バリアントが現在選択されているかどうかに関係なく、後で表現したオピニオンが正しく"適合"するように)各バリアントのデータの構造に一貫性を持たせたいでしょうが、それは完全に任意です。

  • Level of Detail用のバリアントを使用したいのであれば、Create LODノードとAuto Select LODノードを調べてください。

  • 異なるマテリアルアサインメントを切り替えるバリアントを使用したいのであれば、各バリアントの内容をほぼ同じようにしてください。これらのマテリアルアサインメントのオーバーライドを編集する時は、そのオーバーライドを使ってバリアントを作成する前にその場でこれらのマテリアルアサインメントの効果を確認できるようにしたいことでしょう。

    典型的には、すべてのバリアントを同じ入力LOPノード(ほとんどの場合、このAdd Variantノードの1番目の入力に接続された同じLOPノード)から分岐させます。

    各マテリアルアサインメントの前にLayer Breakノードを使用することで、平坦化時にそのLayer Breakノードよりも上流のすべての情報を取り除くことができます。 その結果、バリアント入力別にそのマテリアルアサインメントのオーバーライドのみがバリアント定義にコピーされます。

  • 指定したPrim上の指定したバリアントセット内に指定した名前が既に存在していても、このノードは、その既存のバリアントを無視して、バリアント入力からPrimsをコピーします。既存のバリアントがアクティブレイヤー内で定義されていた場合、それらの既存のPrimsの一部またはすべてがオーバーライドされます。既存のバリアントがアクティブレイヤー以外のレイヤー内で定義されていた場合、その新しいバリアントの情報が既存のPrimsよりも強いレイヤーとして構成されます。

  • 2番目の複数入力を使って何もバリアントを追加しなかった場合、このノードは、1番目の入力のステージをそのまま通過させます。

  • USD Prim上のバリアントを選択するには、Set Variant LOPを使用してください。

  • バリアント内で表現されたオピニオンは、ローカルレイヤースタック内で表現されたオピニオンよりも弱いです。この強度順によって、Prim上でそのバリアントの効果が現れないようにすることができます。 Warn of Weak Variant Opinions を有効にすると、この状況が検出された時にこのノードに警告を追加します。この場合、最も単純な解決方法は、別の Source Primitive の使用を有効にすることです。 Source Primitive には Primitive Path の現行値を設定し、 Primitive Path にはその Source Primitive の参照を使ってバリアントが作成される新しいパスを設定します。バリアント内で表現されたオピニオンは、参照で表現されたオピニオンよりも強いので、バリアント内のオピニオンが期待通りにステージ上で構成されます。

入力

First Input

バリアントの格納先となるPrimを含んだステージ。このステージは、このノードによって加えられた変更と一緒に出力に通過されます。

Second Input (Multi-Input)

接続した各入力は、1番目の入力内のPrim上にバリアントとして追加したいPrimを含んだステージを表現します。

Note

一度に複数のバリアントを追加するのは、すべてのバリアントがそれぞれのシーングラフツリー内の同じ Variant Path にある場合にのみ動作します。

パラメータ

Primitive Path

新しいバリアント情報の追加先となるPrimのパス。

Source Primitive

バリアントが編集されるベース定義となるPrimのパス。 このPrimは、バリアントが定義されるPrimパスにおける新しいPrimで参照されます。 この間接的な参照によって、バリアント内のオピニオンがそのSource Primitive上の既在のオピニオンよりも強くなります。

Warn of Weak Variant Opinions

バリアントのオピニオンが既存のオピニオンよりも弱い場合に警告を追加します。 各バリアントが追加されると、このオプションは、そのバリアントを選択して合成されたステージかどうかを検証します。 バリアントによって追加されたオピニオンが合成ステージ上で一番強いオピニオンでない場合、警告を追加します。 この状況の検証によるパフォーマンス負荷を回避したいのであれば、このオプションを無効にしてください。

Primitive Kind

指定したPrimitive PathにPrimが存在しなかった場合、且つ、このノードが指定した場所に新しいXform Primを作成しなければならない場合、 このパラメータは、この新しいPrim上で編集されるKindを制御します。

Parent Primitive Type

指定したPrimitive Pathに何もPrimが存在しなかった場合、且つ、このノードがその位置に新しいPrimを作成する場合、 このパラメータは、最終Primを作成する前に作成する必要のある親PrimsのPrimタイプを制御します。

Create Options Block

通常では、このパラメータを手動で設定または変更する必要はありません。 このノードが"Variant Block"の一部である時("Add Variants to Existing Primitive"ツールで作成した時)には、このパラメータを有効に設定します。 このノードがスタンドアローンな時("Add Variants to New Primitive"ツールで作成した時)には、このパラメータを無効に設定します。

(このノードは、複数入力に接続されている各ノードをクックする時、作成される現行バリアントの名前を含んだコンテキストオプションを設定します。 これを 無効 にすると、このコンテキストオプションは、入力チェーン内のすべてのノードで利用可能です。 これを 有効 にすると、このコンテキストオプションはスタック上に積み上げられ、そのブロックの頭にあるBegin Context Options Block LOPは、そのスタックからコンテキストオプションを取り出し、入力チェーンの上流にあるノードほどそのコンテキストオプションが隠れます。)

Variant Set

このノードによってバリアントが追加されるバリアントセットの名前。

Variant Primitive

各バリアント入力のシーングラフからバリアントにコピーされるPrimsのルートにあるPrimのパス。

Variant Name Default

各バリアント入力は、バリアントセット内で作成されるバリアントの名前を制御することができます。 このバリアント名は、接続入力リストを表示したインターフェース内の2番目の列で設定します。 Variant Name Defaultパラメータは、接続入力リストを表示したインターフェース内の2番目の列に何も名前が明示的に設定されていない場合のそのバリアント名を制御します。

このエクスプレッション内では、@inputローカル変数($IIDXは廃止されました)を現行入力のインデックス(複数入力の左から右に向かって1から始まる番号)として使用することができます。

Set Variant Selection

これを有効にすると、このノードは、最後に追加されたバリアントも 選択 します(Primをそのバリアントに切り替えます)。 これを無効にすると、このノードは、現在選択されているバリアントに影響を与えません。

(他には、Set Variant LOPを使用することで、バリアントを選択することができます。)

See also

LOPノード

  • Add Variant

    Prim上のバリアントセットに1つ以上のバリアントを追加します。このノードは、そのPrimが存在しなければ、そのPrimを作成します。

  • Additional Render Vars

    複数のRender Varsを作成します。

  • Assign Material

    1つ以上のUSD Primsにマテリアルを割り当てます。VEXを使用することで、プログラム的にマテリアルを割り当てたり、プログラム的に割り当て毎にマテリアル設定をオーバーライドしたり、プログラム的にジオメトリサブセットにマテリアルを割り当てることもできます。

  • Attribute VOP

    VOPネットワークを使ってUSDアトリビュート値を作成/編集します。

  • Attribute Wrangle

    VEXスニペットを使ってUSD Primアトリビュートを作成/編集します。

  • Auto Select LOD

    カメラからPrimまでの距離に基づいて自動的にLODバリアントを選択します。

  • Bake Skinning

    "UsdSkelで駆動されたアニメーションをトランスフォームとポイントポジションにベイクします。

  • Begin Context Options Block

    このノードは、LOPノード群のブロックを開始します。このブロック内では特定のコンテキストオプションが特定の値を持ちます。

  • Blend

    小数点ウェイトに基づいてレイヤーのアトリビュートに部分的に編集を適用します。

  • Cache

    異なる時間におけるネットワークのクック結果をキャッシュ化することで、再生パフォーマンスを上げます。

  • Camera

    シーンにUSDカメラを追加します。

  • Capsule

    カプセル(開口部を半球で閉じたチューブ)形状Primを作成/編集します。

  • Collection

    選択したPrimsを使ってコレクションを作成/編集します。

  • Cone

    円錐形状Primを作成/編集します。

  • Configure Layer

    レイヤー上のメタデータを編集します。

  • Configure Primitives

    1つ以上のPrim上の色々なメタデータを編集します。

  • Configure Properties

    プロパティ(リレーションシップとアトリビュート)上のメタデータを修正します。

  • Configure Stage

    レイヤーをステージとAsset Resolutionに読み込むための方法を示したメタデータを修正します。

  • Create LOD

    PolyReduce SOPを使って高解像度モデルから複数のLODを自動的に生成し、それらのLODをUSDバリアントとして保存します。

  • Cube

    キューブ形状Primを作成/編集します。

  • Cylinder

    シリンダー形状Primを作成/編集します。

  • Dome Light

    USD Dome Light Primを作成/編集します。ドームライトは光を 内側 に放射して、シーンを囲んだ空/環境からの入射光を模倣します。

  • Drop

    重量によるPrimsの落下シミュレーションを実行します。

  • Duplicate

    Prim(とその子孫)のコピーを作成します。

  • Edit

    ビューア内でインタラクティブにPrimsをトランスフォームさせます。物理衝突を使用して、プロップを現実的に配置することができます。

  • Edit Context Options

  • Edit Material

    パラメータやシェーダ接続を変更することで既存のUSDマテリアルを編集することができます。これは、既存マテリアルが編集不可なレイヤーの場合に役立ちます。

  • Edit Properties

    アトリビュート値とリレーションシップ値を直接編集するためのSpareパラメータインターフェースを構築することができます。

  • Edit Prototype

    ポイントインスタンスまたはUSDインスタンス可能Primが別のプロトタイプをインスタンス化するように切り替えます。

  • Edit Target Layer

    アクティブレイヤー内のPrimsとアトリビュートをオーバーライドするのではなく、下位レイヤーで直接編集を適用することができます。

  • Error

    親アセット上で表示可能なメッセージ、警告、エラーを生成します。

  • Extract Instances

    インスタンスを"実際に"編集可能なPrimに変換します。

  • Fetch

    他のLOP(他のLOPネットワーク内のLOPも可能)の出力を取得します。

  • Follow Path Constraint

    Primがパスカーブに追従するように拘束します。

  • For Each

    For-Eachループブロックの終了ノード。

  • Geometry Subset VOP

    VEXpressionまたはVOPネットワークの評価に基づいて(SOPのグループと同様に)ジオメトリPrims内にUSDジオメトリサブセットを作成します。

  • Graft

    他の入力からシーングラフツリーを受け取り、それらのツリーを1番目の入力のシーングラフツリーのブランチに取り付けます。

  • Inline USD

    レイヤーを表現したusdaコードを解読し、そのレイヤーをレイヤースタックに追加します。

  • Instancer

    ポイント上にPrimsをインスタンス化またはコピーします。

  • Karma Procedural

    Karma向けにレンダリング時にインスタンス化される仕組みをセットアップします。

  • Karma Render Properties

    Karma(ベータ)用レンダープロパティを構成します。

  • Karma Standard Render Vars

    標準Karma Render Vars(AOVs/Image Planes)を作成します。

  • LOPノード

    LOPノードは、キャラクタ、プロップ、ライティング、レンダリングを記述したUSDを生成します。

  • Layer Break

    このノードより下流のノードで編集をするための新しいアクティブサブレイヤーを開始します。

  • Layer Replace

    特定のレイヤー内のすべての用途を2番目の入力の代替レイヤーに置換します。

  • Light

    USD Light Primを作成/編集します。このノードは、Karma固有のいくつかの便利アトリビュートも追加します。

  • Light Linker

    ルールに基づいてUSDライトリンクプロパティを作成します。

  • Light Mixer

    複数のライトに対してUSDプロパティをインタラクティブに編集することができます。

  • Load Layer

  • Look At Constraint

    Primがターゲットの方へ常に向くように拘束します。

  • Material Library

    Material VOPノードをUSDマテリアルPrimsとして取り込みます。

  • Material Linker

    ルールに基づいてマテリアルの割り当てを作成します。

  • Material Variation

    Prim/インスタンス単位でマテリアルパラメータをオーバーライドするためのアトリビュート/Primvarsを作成します。

  • Merge LOP

    入力ステージのレイヤー(s)をレイヤースタックに1本化します。

  • Modify Point Instances

    個々のポイントインスタンスに対してポイントトランスフォームとポイントプロパティ値を変更します。

  • Null

    このノードは何もしません。ネットワーク内の"固定位置"としてNullをネットワークに挿入することで、エクスプレッション/スクリプト内で名前によってその位置を参照するのに役立ちます。

  • Output

    サブネットワークの出力を表現します。複数の出力を使ってノードアセットを設計することができます。

  • Parent Constraint

    ツリー内のどこかの他のPrimのトランスフォーム階層をPrimに継承させたようにします。

  • Points Constraint

    ジオメトリのポイントポジションを使ってPrimsの位置と向きを拘束します。

  • Primitive

    特定のタイプの複数のアトリビュートを一括で作成します。

  • Prune

    Primsやポイントインスタンスを非表示または非アクティブにします。

  • Python Script

    このノード内にUSD APIを使ってPythonコードを記述することで、ステージを直接制御することができます。

  • Reference

    外部USDファイルの内容を既存シーングラフツリーのブランチで参照したり、既存の参照を削除/置換します。

  • Render Geometry Settings

    シーングラフ内のジオメトリにレンダラー固有のジオメトリ設定を適用します。

  • Render Product

    UsdRenderProduct Primを作成/編集します。このPrimは、そのRender Productの生成方法を指定したアトリビュートと共にレンダラーの出力(レンダリング画像またはレンダラーが生成した他のファイルなどの中間生成物)を表現します。

  • Render Settings

    UsdRenderSettings Primを作成/編集します。このPrimには、シーンをレンダリングするための全般的な設定を格納します。

  • Render Var

    レンダラー/シェーダで計算されるカスタム変数のシェーダ出力やLight Path Expression(LPE)を指定します。

  • Retime Instances

    選択したインスタンス上のアニメーションのタイミングをオフセット/スケールさせます。

  • SOP Create

    このノード内部のSOPネットワーク内でジオメトリを作成することができるので、別にSOPネットワークを用意することなくLOPネットワーク内のその場でジオメトリを作成することができます。

  • SOP Import

    SOPネットワークのジオメトリをUSDシーングラフに取り込みます。

  • SOP Modify

    USDジオメトリをSOPジオメトリに変換し、そのジオメトリに対してこのノード内部のSOPサブネットを実行し、その結果をUSDオーバーライドに戻します。

  • Scene Import

    Objectレベルのモデル、マテリアル、ライトをLOPネットワークに取り込みます。

  • Scope

    Scope Primを作成します。Scopeとは最も単純なグループ化の形式であり、トランスフォームを持ちません。Scopeはシーンツリーを整理するのに役立ちます。

  • Set Extents

    選択したPrimsの境界ボックスメタデータを設定します。

  • Set Variant

    Prim上のバリアントセットに格納されているどれかのバリアントを選択(切り替え)します。

  • Simulation Proxy

    物理シミュレーションに適した低解像度ポリゴン衝突ジオメトリを生成し、オリジナルモデルに対してプロキシリレーションシップを作成します。

  • Sphere

    球形状Primを作成/編集します。

  • Stage Manager

    一度に多くのファイルを参照して、それらをシーングラフツリー内に配置するための便利インターフェースを備えています。

  • Store Parameter Values

    ステージ内の一時的な(保存されていない)データを格納することができます。

  • Sublayer

    USDファイルまたは他のLOPノードチェーンをサブレイヤーとして取り込んだり、既存のサブレイヤーを削除/置換/並べ替えします。

  • Subnet

    LOPサブネットワークをカプセル化することで、一部のネットワークを整理して隠すことができます。

  • Surface Constraint

    Primがサーフェスに引っ付くように拘束します。

  • Switch

    パラメータ選択またはエクスプレッションに基づいて複数入力のどれかを通過させます。

  • TimeShift

    タイムラインの異なる位置におけるステージをそのまま出力します。

  • Transform

    選択したUSD Primsのトランスフォームを編集します。

  • Transform UV

    USD Prims上のテクスチャ座標を移動、回転、スケールさせます。

  • USD ROP

  • USD Render ROP

  • Value Clip

  • Vary Material Assignment

    いくつかのPrimsに対して異なるマテリアルを割り当ててバリエーションを生成します。

  • Volume

    フィールドPrimsを含んだボリュームPrimでディスク上のボリュームデータを参照します。

  • Xform

    Xform Primを作成/編集します。Xform(とそのサブクラス)はシーンツリー内のトランスフォームを表現します。