よく利用されるTOPノードの紹介


この記事では、よく利用されるTOPノードについて簡単な紹介を行います。

 ここには、全てのTOPノードは掲載されておりません。
ここで紹介する、よく使われるTOPノードを把握することで、TOPの一般的なワークフローを理解、発想しやすくなります。
全てのノードの一覧はSideFX社のTOPノードページをご参照ください。


キックオフノード
ワークノード
画像、動画の出力ノード
ファイルマネジメントノード
ユーティリティノード
フィニッシュノード

キックオフノード

 基本的に、これらのノードがネットワークの始まりのノードになります。これらのノードに入力がない場合は、パラメータで指定されたいくつかの静的ワークアイテムを作成します。 入力が接続されている場合は、入力元の各ワークアイテムに対して指定された数の新しいワークアイテムを作成します。

File Patternノード

ファイル名を検索し、パターンに一致するファイルごとにワークアイテムを作成します(例: *.exr)。 その後、各ファイルを処理するためにProccesorノードを接続できます。

Download Fileノード

URLをダウンロードするためのワークアイテムを作成します。

Wedgeノード

指定したアトリビュートのバリエーションごとにワークアイテムを作成します。

例えば、MantraノードのPixel Samplesを指定し、1,3,5,7のバリエーションを作成した場合は、それぞれのPixel Samplesの値が設定された4つのワークアイテムを作成します。

ROP Mantra Renderノード

指定された各フレームをレンダリングするためのワークアイテムを作成します。

ROP Geometryノード

指定した各フレームのジオメトリを生成するためのワークアイテムを作成します。

FFmpeg Extract Imagesノード

ビデオファイルから抽出された各フレーム画像のワークアイテムを作成します。

CSV Inputノード

.csv形式のファイルを入力し、ファイルの各「行」に対して新しいワークアイテムを作成します。

JSON Inputノード

.json形式のファイルを入力し、ファイルの各「行」に対して新しいワークアイテムを作成します。

XML Inputノード

.xml形式のファイルを入力し、ファイルの各「行」に対して新しいワークアイテムを作成します。

SQL Inputノード

SQLクエリによってデータベースから返された行ごとに新しいワークアイテムを作成します。

 

ワークノード

HDA Processorノード

デジタルアセットをクックして、そのアセットの出力をファイルに書き込みます。

Invokeノード

このノードと同じHIPファイル内の別のノードをクックします。

Python Scriptノード

入ってくるワークアイテムごとにPythonスクリプトを実行します。 これは、TOPにカスタムワークを行わせるために、一般的に使用されるノードです。 行われたワークに基づいて、このスクリプトからワークアイテムに新しい出力アトリビュートを設定できます。

Python Scriptノードは、Python Processorでカスタムプロセッサコードを作成するよりも簡単ですが、完全な柔軟性がありません(たとえば、このノードで最初から静的ワークアイテムを作成したり、入力アイテムごとに複数の新しいアイテムを生成することはできません)。

Generic Generatorノード

入力ワークアイテムごとに実行ファイルを実行します。 実行ファイルの結果に基づいてアトリビュートを設定することはできません。そのため、Python Scriptノードほど柔軟ではありません。 ただし、結果を推測できる単純なジョブ(たとえば、出力ファイルに特定のパターンがあることがわかっているなど)の場合などに役立ちます。

Send Commandノード

コマンドサーバにコマンドを送信できます。コマンドサーバを使用することで、永続的な共有「サーバ」プロセス(HoudiniやMayaのインスタンスなど)を起動してコマンドを送信し、すべての作業が終了したらシャットダウンすることができます。

 

画像、動画の出力ノード

FFmpeg Encode Videoノード

一連のフレーム画像をビデオファイルに変換します。

ImageMagickノード

ImageMagickライブラリを使用して画像ファイルを処理します。

Overlay Textノード

画像の上にテキストを表示します。 これは、ファイナルではない画像の上にメタデータ(フレーム番号、ウェッジアトリビュート、ファイル名など)を表示させる際に使われます。

 

ファイルマネジメントノード

Make Directoryノード

ディスクに新しいディレクトリを作成するためのワークアイテムを作成します。 これは、出力ファイルを整理したり、一時記憶域を作成したりするのに役立ちます。

File Renameノード

ファイル名の変更やファイルの移動を行います。 実行時にワークアイテムで名前の変更を実行するには、「Async Rename」をオンにします。

File Copyノード

ある名前/場所から別の場所にファイルをコピーします。 実行時にワークアイテムのコピーを実行するには、「Async Copy」をオンにします。

Remove Fileノード

ファイルを削除します。

 

ユーティリティノード

Attribute Createノード

入力ワークアイテムに1つ以上のアトリビュートを追加します。 エクスプレッションを使用して新しいアトリビュートの内容を計算できます。

Splitノード

いくつかの基準に基づいて、入力ワークアイテムを別々の出力に分割します。 これにより、さまざまなノードチェーンを使用してさまざまな種類のワークアイテムを処理できます。

Work Item Expandノード

特定のパーティションにマージされたワークアイテムを「再作成」します。 これは、アイテムのグループを分割して待機させるのに役立ちますが、その後もアイテムから個別のワークを生成し続けるのに役立ちます。

 

フィニッシュノード

Wait for Allノード

これは、入ってくるすべてのワークアイテムを1つのPartitionにまとめるパーティショナです。そのため、上流のワークがすべて実行されるまで続行されません。 これは通常、ネットワークの最後(クリーンアップノードや通知ノードの前)、および次のステップですべてのワークを完了する必要がある場合は論理的に異なるパイプラインステップの最後で必要になります。

Send Emailノード

電子メールを送信するワークアイテムを作成します。 これは、大規模ネットワークにおける最後のWait for Allの後に、ワークが終了したことをユーザー/グループに通知するのに利用できます。。

Python Scriptノード

前述したPythonScriptノードはフィニッシュノードとしても便利に利用できます。電子メール以外の他の種類の通知には、Python Scriptノードを使用して通知APIを使用できます。 たとえば、ネットワークの最後にSlackメッセージを投稿することができます。

import os
from slackclient import SlackClient

slack_token = os.environ[“SLACK_API_TOKEN”]
client = SlackClient(slack_token)

client.api_call(
   “chat.postMessage”,
   channel=“C0XXXXXX”,
   text=“:tada: The big long job finished!”
)