Houdini 17.5 ノード TOPノード

Block Begin Feedback TOP node

For-Loop with Feedbackブロックを開始します。このブロック内のTOPノードは直列で実行され、オプションで入力のワークアイテム毎にループさせることができます。

On this page

概要

TOPs Feedback Loopブロックは、一連の 直列による実行 工程を 何回も 実行することができます。

TOPネットワークは既になんというか並列ループのような挙動をしています。 というのも、TOPネットワークはスケジューラの設定に基づいて可能な限り同時にたくさんのワークアイテムを実行します。 つまり、"入力別に同じアクションを繰り返す"挙動はまさにTOPネットワークの挙動そのものなので、通常ではループを構築する必要がありません。

とはいえ、場合によっては並列ではなく直列に一連の工程を実行して、前のワークアイテムの出力をそれ以降のワークアイテムの入力として使用したいことがあります。 単純なシミュレーションなら、このような処理は既にROP Fetchノードを使えば制御することができます。このROP Fetchは同時に1ジョブ1フレームとして実行するバッチを生成することができます。 複数のノードが絡んだループまたはループさせる回数がまだわからないといったもっと複雑な使い方になると、 フィードバックループ を使用した方が良いです。

フィードバックループのブロック内では、TOPネットワークはノード毎にワークアイテムを実行するのですが、下流のワークアイテムが上流のワークアイテムに依存した状態で、それらのワークアイテムを直列に実行します。 そして、1回目のループですべてのワークを完了させた時に、そのブロックに2回以上のループ回数が指定されていれば、Beginノードに戻って次のループに進みます。

Tip

設定によっては、フィードバックループのブロックは、並列で 複数の直列ループ を実行する こともできます

例えば、1回づつ一握りのビー玉を瓶に詰めていくRBDシミュレーションを想像してみてください。 この処理全体を単一シミュレーションで実行することができますが、瓶の底に積み上がっていくビー玉は安定せず、次々にシミュレーションされるオブジェクトの数が増え続けていきます。 これを管理する1つの方法は、1回目に詰める一握りのビー玉に対してRBDシミュレーションを実行し、その結果を2回目のシミュレーションの静的オブジェクトとして使用することです。 3回目のシミュレーションでは、1回目と2回目のシミュレーションの結果を合わせたビー玉を静的オブジェクトとして使用します。それ以降のシミュレーションも同様です。 TOPsでは、ROP GeometryとFeedback Loopをループブロック内で使用することで、このような処理が可能になります。

(Feedback Loopはコマンドサーバーチェーンの実装でも使用します。その場合、1回づつコマンドをサーバーに順々に送信してください。)

How to

To...Do this

Feedback Loopブロックを作成する

  1. TOPネットワークエディタで⇥ Tabを押して"For-Loop with Feedback"を選択します。

    このツールはBlock Begin FeedbackノードとBlock End Feedbackノードを配置します。

  2. Block Begin Feedbackノードを選択します。パラメータエディタで、反復回数の指定方法を選択します:

    • デフォルトでは、 Iterations パラメータで指定された反復回数だけループが実行されます。Block Begin Feedbackノードに上流のワークアイテムが接続されていれば、その入力のワークアイテム毎にiterations回だけループが実行されます。

      例えば、指定した反復回数でシーンを何回も構築していくようなループ(例えば、概要で説明した"ビー玉を瓶に落とす方法")で使います。 Block Begin FeedbackノードにWedgeノードを接続すれば、そこから生成されたワークアイテム毎にループを繰り返すことができます。

    • Block Begin Feedbackノードに静的なワークアイテムが含まれていれば、 Iterations from Upstream Items を有効にすることができます。これは、反復回数に上流のワークアイテムの数を設定します。これによって、入力のワークアイテム毎に1回だけブロック内の一連の工程が繰り返されます。

      例えば、ディレクトリ内のすべてのファイルをリストするFile Patternノードとそのファイル毎に反復するループブロックを使用することで、その内容を一時ファイルに追加していくことができます。

  3. Block Begin Feedbackノードが動的にワークアイテムを生成する場合、Block End Feedbackノードの Use Dynamic Partitioning も有効にしなければなりません。

  4. そのBeginノードとEndノードの間にノードを接続することで、それらのノードをループの一部にすることができます。

    このループを可視化するために、Houdiniはブロック内のノードを囲んだ境界を描画します。

ループ内のワークアイテムに基づいて"副タスク"を並列でクックする

ループ内のノードからループ外のプロセッサに接続した場合(つまり、ループのEndノードに接続しなかった場合)、そのプロセッサのワークアイテムは、ループ内のワークアイテムに基づいて生成されるようになりますが、 通常通りに並列でスケジュールが組まれるようになります。

これは、ループ内のワークアイテムに基づいているもののループさせる必要のない"副タスク"で役立ちます。 例えば、ループ内では画像を生成してからその画像を制御していきたいような場合では、ループ外ではその生成された画像のサムネイルを並列で生成することができます。

Tipsとメモ

  • フィードバックループにはどのプロセッサノードも使用することができます。とはいうものの、現在のところ、フィードバックループ内では動的なパーティショナまたはマッパーを使用することは できません 。パーティションに同じループ回数目からのワークアイテムのみを含める場合であれば、 静的な パーティショナーを使用することが できます 。別のループ回数目のワークアイテムを無理やりパーティション化すると、そのパーティションノードはエラーを報告します。

  • ブロックのBeginノードとEndノードは、その関係性をわかりやすくするために同じカラーを設定してください。For-Loopツールで配置されたデフォルトのノードのカラーはオレンジですが、そのノードのカラーを変更することができます。これは特に入れ子化したループと区別するのに役立ちます。

    ブロックを囲んだ境界は、Endノードのカラーと同じになります。

  • Beginノードは、ループさせるワークアイテムを生成するプロセッサです。

  • 各ワークアイテムは、同じループの前のワークアイテムに依存し、その反復回数とループ番号を識別するためのアトリビュートを持っています。

    Block End Feedbackノードは、関係しているループの反復に基づいてワークアイテムをパーティション化するパーティショナーです。 フィードバックループ内のノードは自由に必要な数だけワークアイテムを追加していくので、パーティショナーはそれらのワークアイテムを収集することができて便利です。 Beginノード内の2回目のループのワークアイテムは、1回目のループのパーティションに依存します。それ以降のループも同様です。 ループが動的にワークアイテムを生成する場合、そのBlock End Feedbackノードの Use Dynamic Partitioning も有効にしなければなりません。

  • フィードバックブロック外のノードを、フィードブロック内の複数入力を持ったノードに接続することができます。

TOP Attributes

以下のアトリビュートの名前は、このノードのパラメータを使って設定することができます。

loopiter

[int]

ループの反復回数。入れ子のフィードバックループを使用する時は、レベル毎に反復回数を指定したいので、このアトリビュートには配列値を指定することができます。 一番外側のループのループ反復値はloopiter[0]に格納し、次のレベルはloopiter[1]にといったように格納します。 この場合では、loopiter[loopnum]を使って現行ループの反復を取得します。

loopnum

int

ワークアイテムがどのループに関連しているのかを追跡します。 このアトリビュートは、同じFeedback Beginノード内で複数の独立したループを生成させる時に関係します。 例えば、Wedgeノードを使ってFeedback Beginノードを駆動させる時です。

loopsize

int

現行ループの合計の反復回数。

Tip

ループを入れ子にした場合、配列を扱わなくて済むように、loopiter/loopsizeアトリビュートの名前にレベル毎に異なる名前を付けても構いません。

パラメータ

Work Item Generation

このノードが静的または動的なワークアイテムのどちらを生成するかどうか。 このノードのワークアイテムが静的に計算可能かどうか、もしくは、動的に生成させる必要があるかどうか分からないのであれば、通常では、これを"Automatic"のままに設定してください。

Dynamic

このノードが常に動的なワークアイテムを生成します。つまり、上流のワークアイテムが判明するまで待機し、その上流のワークアイテムから新しいワークアイテムを生成します。

Static

このノードが常に静的なワークアイテムを生成します。つまり、ネットワークを実行する前にパラメータ(と上流の静的なワークアイテム)に基づいて必要だと思われるだけの数のワークアイテムを生成します。

Automatic

入力が静的(静的なプロセッサ、静的な入力のみを使ったパーティショナー、マッパー)な場合、このノードは静的なワークアイテムを生成し、そうでない場合、動的なワークアイテムを生成します。

Iterations from Upstream Items

Iterations パラメータの代わりに入力の静的なワークアイテムの数に基づいて反復回数を設定します。

Iterations

Beginノードに上流のワークアイテムが存在すれば、入力のワークアイテム毎に、ここで指定した回数だけループが実行されます。

Copy Inputs For

入力ファイルをループアイテムにコピーさせる方法を決定します。 デフォルトでは、上流のファイルがすべての入力ファイルにコピーされますが、1回目のループだけ入力ファイルをコピーすることも何もコピーしないこともできます。

No Iterations

上流の入力ファイルをどのループ反復アイテムの出力にもコピーしません。

First Iteration

上流の入力ファイルを1回目のループの出力ファイルリストにのみコピーします。

All Iterations

上流の入力ファイルをすべてのループの出力ファイルリストにコピーします。

ループアトリビュート名

以下のパラメータを使用することで、このノードで生成されるワークアイテムアトリビュートの名前をカスタマイズすることができます。

Iteration

ワークアイテムの反復回数を含んだアトリビュートの名前。

Number of Iterations

反復回数の合計数を含んだアトリビュートの名前。

Loop Number

ループ回数を格納するアトリビュートの名前。

Examples

example_top_feedbackbegin Example for Block Begin Feedback TOP node

このサンプルでは、フィードバックループの作り方について説明しています。

The following examples include this node.

example_top_feedbackbegin Example for Block Begin Feedback TOP node

このサンプルでは、フィードバックループの作り方について説明しています。

example_top_feedbackend Example for Block End Feedback TOP node

このサンプルでは、フィードバックループの作り方について説明しています。

example_top_forloopwithfeedback

このサンプルでは、PDG/TOPのフィードバックの仕組みを使ってFor-Loopを使う方法について説明しています。

See also

TOPノード

  • Attribute Copy

    あるブランチのワークアイテムのアトリビュートを他のブランチのワークアイテムにコピーします。

  • Attribute Create

    入力のワークアイテムすべてに対してアトリビュートを作成または設定します。

  • Attribute Delete

    ワークアイテムからアトリビュートを削除します。

  • Attribute from String

    ファイル名などの文字列からアトリビュート値を解析します。

  • Block Begin Feedback

    For-Loop with Feedbackブロックを開始します。このブロック内のTOPノードは直列で実行され、オプションで入力のワークアイテム毎にループさせることができます。

  • Block End Feedback

    For-Loop with Feedbackブロックを終了します。このブロック内のTOPノードは直列で実行され、オプションで入力のワークアイテム毎にループさせることができます。

  • CSV Input

    CSVファイルのデータをワークアイテムのアトリビュートにコピーします。

  • CSV Output

    ワークアイテムのアトリビュートをCSVファイルに書き出します。

  • Command Send

    実行させたいコードを共有サーバーに送信します。

  • Command Server End

    サーバーブロックを終了します。

  • Deadline Scheduler

    Thinkbox社のDeadlineソフトウェア用PDGスケジューラ。

  • Download File

    1つ以上のURLの内容をファイルにダウンロードします。

  • Environment Edit

    ワークアイテムのコマンドラインが実行する環境下で設定する変数を編集します。

  • Error Handler

    失敗したワークアイテムのエラーハンドル。

  • FFmpeg Encode Video

    静止画像シーケンスを動画に変換します。

  • FFmpeg Extract Images

    動画ファイルから静止画像シーケンスを抽出します。

  • File Compress

    ファイルをアーカイブに圧縮します。

  • File Copy

    実行時またはノードがファイルを生成した時に、ファイルをある場所から別の場所にコピーします。

  • File Decompress

    入力のワークアイテムで指定されたアーカイブファイルを個々のファイルに解凍します。

  • File Pattern

    特定のパターンに合致したファイルに基づいてワークアイテムを生成します。

  • File Remove

    指定したパスのファイルを削除します。

  • File Rename

    ファイルを名前変更または移動させます。

  • Filter By Expression

    上流のワークアイテムを条件付きでフィルタリングします。

  • Generic Generator

    アトリビュートなしでコマンドラインを実行するワークアイテムを生成します。

  • Generic Server Begin

    汎用コマンドサーバーを起動します。

  • Geometry Import

    SOPまたはファイルジオメトリのポイントまたはプリミティブをワークアイテムアトリビュートまたは一時ファイルに読み込みます。

  • HDA Processor

    デジタルアセットをクックするワークアイテムを生成します。

  • HQueue Scheduler

    HQueueを使用してワークアイテムのスケジュールを組みます。

  • Houdini Server Begin

    持続型Houdiniコマンドサーバーを起動します。

  • ImageMagick

    一括で画像変換、サイズ変更、画像モザイクなどのImageMagickの機能に簡単にアクセスすることができます。

  • Invoke

    入力ジオメトリに対してコンパイルブロックを呼び出します。

  • Json Input

    JSONファイルからデータを抽出してアトリビュートを作成します。

  • Json Output

    JSON出力を生成する色々なオペレーションを実行します。

  • Local Scheduler

    ローカルマシン上でワークアイテムのスケジュールを組みます。

  • Make Directory

    ディレクトリを作成します。

  • Map All

    上流のすべてのワークアイテムを下流のワークアイテムにマップします。

  • Map by Expression

    エクスプレッションを使って、上流のワークアイテムを下流のワークアイテムにマップします。

  • Map by Index

    上流のワークアイテムをインデックスに基づいて下流のワークアイテムにマップします。

  • Map by Range

    範囲を使って上流のワークアイテムを下流のワークアイテムにマップします。

  • Maya Server Begin

    持続型Mayaコマンドサーバーを起動します。

  • Merge

    上流のすべてのワークアイテムを結合します。

  • Null

    何もしません。

  • OP Notify

    何かしらのTOPワークが完了したことを通知します。

  • Output

    サブネット出力。

  • Partition by Attribute

    アトリビュートに基づいてワークアイテムを区分けします。

  • Partition by Bounds

    境界アイテムを使って、ソースアイテムを空間的に区分けします。

  • Partition by Combination

    ワークアイテムを2個毎、3個毎などに区分けします。

  • Partition by Comparison

    既存の比較を使ってワークアイテムを区分けします。

  • Partition by Expression

    エクスプレッションに基づいてワークアイテムを区分けします。

  • Partition by Frame

    フレームに基づいてワークアイテムを区分けします。

  • Partition by Index

    インデックスに基づいてワークアイテムを区分けします。

  • Partition by Node

    ノードに基づいてワークアイテムを区分けします。

  • Partition by Range

    範囲に基づいてワークアイテムを区分けします。

  • Partition by Tile

    軸に平行な境界ボックスを使ってワークアイテムを空間的に区分けします。

  • Perforce

    PDG経由でPerforceコマンドを実行します。

  • Python Mapper

    Pythonスクリプトを使ってワークアイテムをマップします。

  • Python Partitioner

    Pythonスクリプトを使ってワークアイテムを区分けします。

  • Python Processor

    Pythonスクリプトを使ってワークアイテムを生成します。

  • Python Scheduler

    Pythonベースでプログラミング可能なPDG用スケジューラ。

  • Python Script

    スクリプトを実行するワークアイテムを生成します。

  • ROP Alembic Output

    埋め込まれたROP Alembicノードをクックするワークアイテムを生成します。

  • ROP Composite Output

    埋め込まれたROP Compositeノードをクックするワークアイテムを生成します。

  • ROP Fetch

    ROPノードまたはROPネットワークをクックするワークアイテムを生成します。

  • ROP Geometry Output

    埋め込まれたROP Geometryノードをクックするワークアイテムを生成します。

  • ROP Mantra Render

    埋め込まれたROP Mantraノードをクックするワークアイテムを生成します。

  • Render IFD

    Mantraを使ってIFDをレンダリングするワークアイテムを生成します。

  • SQL Input

    SQLクエリの作成と行毎にワークアイテムを生成する入力ノードです。

  • SQL Output

    SQL INSERTクエリを生成する出力ノードです。

  • Send Email

    電子メールを送信します。

  • Shotgun Create

    Shotgunエンティティを作成します。

  • Shotgun Download

    ShotgunからAttachmentをダウンロードします。

  • Shotgun Find

    Shotgunエンティティを検索します。

  • Shotgun New Version

    Attachmentと一緒に新しいVersionを作成します。

  • Shotgun Session

    Shotgunインスタンスに接続するセッションを開始します。

  • Shotgun Update

    既存のShotgunエンティティのフィールドを更新します。

  • Shotgun Upload

    ShotgunでAttachmentを作成します。

  • Sort

    アトリビュートのリストからワークアイテムを並べ替えます。

  • Split

    上流のワークアイテムを2つのグループに分けます。

  • Switch

    ネットワーク分岐を切り替えます。

  • TOP Fetch

    他のTOPネットワークをクックします。

  • TOP Fetch Input

    TOP Fetchで取得したネットワークの入力。

  • Text to CSV

    プレーンテキストをCSVに変換します。

  • Tractor Scheduler

    PixarのTractorを使ってワークアイテムのスケジュールを組みます。

  • Wait for All

    上流のワークアイテムすべてが完了するのを待ちます。

  • Wedge

    アトリビュート値を色々と変えながらワークアイテムを生成します。

  • Work Item Expand

    ファイルリストまたはパーティションを複数のワークアイテムに展開します。

  • Xml Input

    XMLファイルからデータを抽出し、そのデータを含んだ文字列アトリビュートを生成します。