Houdini 18.0 ノード LOPノード

For Each

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

On this page

概要

このノードは、Begin Context Options Blockノードをこのノードの3番目の入力に接続してブロックを形成します。 このノードは、開始ノードからこのノードの3番目の入力の間に接続されているノードをループさせて、 Iteration Method に基づいてそれらのノードを何回もクックします。

(For-Eachブロックはコンテキストオプション変数を使って反復回数を保持することから、この開始ノードがコンテキストオプションノードになります。)

このノードの用途をいくつか挙げると:

  • 特定の数だけPrims、アトリビュート、編集、他に必要な何かを自動的に生成します。

  • 一連の変更をたくさんのPrimsに適用します。

  • 一連の変更をたくさんのPrims上のすべてのバリアントセットまたはすべてのバリアントに適用します。

How to

  1. LOPネットワーク内で⇥ Tabを押してFor Eachを選択します。

    これは、Begin Context Options Blockノードから始まってこのノードで終わるブロックを配置します。

  2. 入力となるノードチェーンをforeach_endノードの 1番目の入力 に接続します。

    ステージに 追加 するだけであれば(例えば、新しいPrimsを作成するなど)、foreach_beginには何も接続する必要はありません。 しかし、既存のPrimsを 修正 する場合には、入力となるノードチェーンがループ内で利用できるように、さらにそのノードチェーンをforeach_beginノードの入力に接続してください。

  3. このブロックの最後にあるFor Eachノード(foreach_end)を選択します。

  4. このノードのパラメータエディタで、 Iteration Method を選択します。

  5. foreach_beginノードからforeach_endノードの 3番目の入力 の間で、ループさせたいLOPノードを接続します。

    For Eachノードは、( Iteration Method に応じて)ブロックを0回以上クックします。 その結果は平坦化され、このノードの1番目の入力のステージ上にサブレイヤーとして追加されます。

ループ変数

ブロック内のノード上では、現行の反復数(ITERATION)と反復総数(NUMITERATIONS)を含んだコンテキストオプションにアクセスすることができます。

他にも、一部の Iteration MethodITERATIONVALUE変数を設定します。 この変数の内容は、その Iteration Method によって異なります。 例えば、Primsに対する反復の場合、このITERATIONVALUEには、現行Primのシーングラフパスが格納されます。 以下の Iteration Method パラメータのヘルプを参照してください。

Tip

For Eachノードのパラメータを使ってループ変数の名前を変更することができます(以下参照)。 For-Eachループを入れ子化 している場合、ループレベル毎に異なる変数名になるように変数の名前を変更してください。そうすることで、それらのループ変数を分けることができます。

例えば、"For-Eachバリアントセット"ループがあって、そのループの中に"For-Eachバリアント"ループがあるとします。 外側ループの変数の名前をVARSET_ITERATIONNUM_VARSETSに変更し、内側ループの変数の名前をVARIANT_ITERATIONNUM_VARIANTSに変更することができます。

エクスプレッション内

ループ内でのエクスプレッション内でコンテキストオプションの値を取得するには、@nameを使用します。例:

@ITERATION

またはcontextoptionエクスプレッション関数を使用します:

contextoption("ITERATION")

例えば、/lights Prim内に名前が/lights/light_0から/lights/light_99までの100個のライトを作成したいのであれば、ループブロック内にLightノードを配置して、その Primitive Path パラメータに以下のエクスプレッションを設定します:

/lights/light_`@ITERATION`

(文字列パラメータでは、エクスプレッションコードをバッククォートで閉じる必要があることを忘れないでください。)

Python内

ループ内でのPython内でコンテキストオプションの値を取得するには、hou.contextOption()関数を使用します。

ITERATIONVALUEから情報を引き出すのは、Python拡張ライブラリのstring系関数とパス操作系関数を使用するのが便利だと思うかもしれません。 hou.setContextOption()を使用することで、新しいコンテキストオプションを作成することができます。

例えば、"For Each Primitive"ループの頭に、Python Script LOPを挿入することで、フルPrimパスから抽出された親パスとPrim名を含んだ新しいコンテキストオプション変数を作成することができます。

# コンテキストオプションから現行Primのパスを取得します。
full_prim_path = hou.contextOption("ITERATIONVALUE")
# パス文字列内の最後のスラッシュのインデックスを見つけます。
last_slash = full_prim_path.rfind("/")
# 最後のスラッシュまでのすべての文字列を含んだ新しい"PARENTPATH"コンテキストオプションを作成します。
hou.setContextOption("PARENTPATH", full_prim_path[:last_slash])
# 最後のスラッシュ以降のすべての文字列を含んだ新しい"PRIMNAME"コンテキストオプションを作成します。
hou.setContextOption("PRIMNAME", full_prim_path[last_slash + 1:])

すると、ループ内の他のノードのエクスプレッションで@PARENTPATH@PRIMNAMEを使用することができます。

Tips

  • ループブロックの頭にあるBegin Context Options BlockノードPerform Layer Break パラメータのチェックを オン のままにします。

    このオプションを無効にすると、Begin Context Options Blockノードより上流のすべてのノードが各ループに含まれるようになって、反復の度に無駄に結合されてしまいます(クックの度にこのデータは同じになるので無駄です)。

  • このブロックは、コンテキストオプションを使って反復系の変数を保持しているので、他のネットワークタイプのFor-Eachループとはまったく別に動作します。

  • 選択したPrims上の特定のバリアントセット内のすべてのバリアントを編集するには:

    • Primsに対する外側"For Each Prim"ループを作成します。編集したいPrimsを選択するために、 Primitives パラメータを設定します。このループのITERATIONVALUE変数の名前をPRIMPATHに変更します。

    • 内側"For Each Variant"ループを作成します。このループのITERATIONVALUE変数の名前をVARIANTNAMEに変更します。

    • こうすることで、内側ループ内のノードにおいて、現行Primのシーングラフパスを@PRIMPATH、現行バリアントの名前を@VARIANTNAMEとして指定してバリアントを編集できるようになります。

入力

First Input

この入力には、入力ステージを接続します。 このノードは、3番目の入力に接続されたノードをループさせた結果を平坦化してから、出力内でそれをこのステージ上の新しいレイヤーとしてオーバーレイします。

Second Input

Iteration Method には、1番目の入力からではなく、この入力からのPrims/バリアントセット/バリアントに対してループさせるオプションがあります。 これによって、修正されるステージとは別のステージを使って反復を駆動させることができます。

この入力内のデータは、 このノードの出力には決して含まれませんIteration Method 設定に応じて反復を駆動させるために使用します。

Third Input

この入力は、反復毎に再クックされます。 このノードは、反復毎に生成されたレイヤーをまとめて平坦化し、その平坦化された結果を1番目の入力のステージ上に合成します。

パラメータ

Iteration Method

このノードによるループの方法/何に対してループさせるか。

For Number of Iterations

設定した回数だけループさせます。 Iterations パラメータにエクスプレッションを使用することで反復回数を動的に駆動させることができます。

このメソッドは、ITERATION(0から始まる現行ループカウント)と同じ値をITERATIONVALUEに設定します。

For Each Primitive in First Input

(1番目の入力から) Primitives パラメータ内のプリミティブパターンで選択されたPrim毎にループさせます。

このメソッドは、現行PrimのフルパスをITERATIONVALUEに設定します。

このオプションは、一連のPrimsに対して編集を行なうのに役立ちます。

For Each Variant Set in First Input

特定のPrim(またはPrims)上のバリアントセット毎にループさせます。 Primitives パラメータ内のプリミティブパターンは、(1番目の入力から)バリアントセットを保持しているPrim(s)を選択します。

このメソッドは、現行バリアントセットの名前をITERATIONVALUEに設定します。

これを使うことで、バリアントセットにバリアントを追加または削除することができます。 "For Each Variant in First Input"を使って他のFor-Eachループを内側に入れ子化することで、各バリアントセット内のバリアント毎にループをさせることもできます。

For Each Variant in First Input

特定のPrim(またはPrims)上の指定した名前のバリアントセット内のバリアント毎にループさせます。 Primitives パラメータ内のプリミティブパターンは、(1番目の入力から)バリアントセットを保持しているPrim(s)を選択します。

このメソッドは、現行バリアントの名前をITERATIONVALUEに設定します。

このメソッドは、バリアント選択を変更しません。

For Each String in Parameter

Iterate Over Strings パラメータで指定された文字列毎にループさせます。 反復回数は、そのパラメータで指定された別々の文字列の数によって決まります。

このメソッドは、そのパラメータから現行文字列をITERATIONVALUEに設定します。

1番目の入力ではなく、2番目の入力のデータを使って反復を駆動するように選択することもできます。 何かしらの理由でループさせたいものが他のノードチェーン内にある場合は、そのノードチェーンを2番目の入力に接続することで、これらのオプションを使用することができます。 2番目の入力のデータは、このノードの出力には決して含まれません。 このデータは、"in Second Input"系のオプションのどれかを選択した場合に、反復を駆動させるためだけに使用されます。

Iterations

Iteration Method が"For Number of Iterations"の時、ここにはループの回数を指定します(このパラメータにエクスプレッションを使用することで、他の何かに基づいてループの回数を駆動させることができます)。

Primitives

Iteration Method が"For Each Primitive", "For Each Variant Set", "For Each Variant"の時、検索するPrimsを指定します。 Scene Graph TreeペインからPrimsをこのテキストボックス内にドラッグすることで、それらのパスを追加することができます。 または、テキストボックスの隣にある選択ボタンをクリックすることで、ビューア内でPrimsを選択することができます。 プリミティブパターンを使って高度なマッチングを行なうこともできて、(/path/to/prim.collection:nameを使うことで)コレクション内のすべてのPrimsにマッチングさせることもできます。

Variant Set

Iteration Method が"For Each Variant"の時、ループさせるバリアントセットの名前を指定します。

Iterate Over Strings

Iteration Method が"For Each String in Parameter"の時、ループさせる文字列のリストを指定します。 個々の文字列はスペースで区切ります。 文字列を引用符で閉じることで、スペースをその値に含めることができます。

Flatten Iterations Into First Input Layer

これが無効な時(デフォルト)、ループ内で作成された編集は、1番目の入力に新しいサブレイヤーとして追加されます。 これが有効な時、ループ内で作成された編集は、1番目の入力のアクティブレイヤー上に平坦化されます(新しいレイヤーを作成しません)。

Iteration Option Name

(0から始まる)現行ループ番号を格納するために、このノードが作成するコンテキストオプション変数の名前。 便宜的にこの名前を変更することで、入れ子ループが固有の名前を使用するようにすることができます。

Iteration Count Option Name

ループ回数を格納するために、このノードが作成するコンテキストオプション変数の名前。 便宜的にこの名前を変更することで、入れ子ループが固有の名前を使用するようにすることができます。

Value Option Name

Iteration Method 特有の情報("For Number of Iterations"なら現行反復番号、"For Each Primitive"なら現行Primパス、"For Each Variant Set"ならバリアントセット名、"For Each Variant"ならバリアント名)を格納するために、このノードが作成するコンテキストオプション変数の名前。 便宜的にこの名前を変更することで、入れ子ループが固有の名前を使用するようにすることができます。

Iteration Range

これは、オプションでノードが普段実行する反復回数を特定の範囲内の開始から終了までに制限することができます。 これは、結果全体の"スライス"だけの効果を確認する時のデバッグで役に立ちます。

All Iterations

利用可能なすべての反復を実行します(これがデフォルトで、普段のオペレーションです)。

Single Iteration

First Iteration パラメータで指定されたループ番号のみを実行します。ループ番号は0から始まります。

Range of Iterations

First Iteration 以上 Last Iteration 以下の範囲のみで反復を実行します。 例えば、 Iteration Method を"For Number of Iterations"、 Iterations を5に設定すると、0, 1, 2, 3, 4の反復番号が得られます。 Iteration Range を"Range"、 First Iteration を1、 Last Iteration を3に設定すると、1, 2, 3の反復番号のみが得られます。

First Iteration

Iteration Range が"Single"の時、この反復番号のみを実行します。 Iteration Range が"Range"の時、この番号から始まる反復のサブセットのみが実行されます。 1番目の反復の番号が0になります。

Last Iteration

Iteration Range が"Range"の時、 First Iteration 以上でこの Last Iteration 以下の反復のサブセットのみが実行されます。 1番目の反復の番号が0になります。

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(とそのサブクラス)はシーンツリー内のトランスフォームを表現します。