この記事では、よく利用されるTOPノードについて簡単な紹介を行います。
ここには、全てのTOPノードは掲載されておりません。
ここで紹介する、よく使われるTOPノードを把握することで、TOPの一般的なワークフローを理解、発想しやすくなります。
全てのノードの一覧はSideFX社のTOPノードページをご参照ください。
・キックオフノード
・ワークノード
・画像、動画の出力ノード
・ファイルマネジメントノード
・ユーティリティノード
・フィニッシュノード
キックオフノード
基本的に、これらのノードがネットワークの始まりのノードになります。これらのノードに入力がない場合は、パラメータで指定されたいくつかの静的ワークアイテムを作成します。 入力が接続されている場合は、入力元の各ワークアイテムに対して指定された数の新しいワークアイテムを作成します。
File Patternノード
ファイル名を検索し、パターンに一致するファイルごとにワークアイテムを作成します(例: *.exr)。 その後、各ファイルを処理するためにProccesorノードを接続できます。
Wedgeノード
指定したアトリビュートのバリエーションごとにワークアイテムを作成します。
例えば、MantraノードのPixel Samplesを指定し、1,3,5,7のバリエーションを作成した場合は、それぞれのPixel Samplesの値が設定された4つのワークアイテムを作成します。
ワークノード
Python Scriptノード
入ってくるワークアイテムごとにPythonスクリプトを実行します。 これは、TOPにカスタムワークを行わせるために、一般的に使用されるノードです。 行われたワークに基づいて、このスクリプトからワークアイテムに新しい出力アトリビュートを設定できます。
Python Scriptノードは、Python Processorでカスタムプロセッサコードを作成するよりも簡単ですが、完全な柔軟性がありません(たとえば、このノードで最初から静的ワークアイテムを作成したり、入力アイテムごとに複数の新しいアイテムを生成することはできません)。
Generic Generatorノード
入力ワークアイテムごとに実行ファイルを実行します。 実行ファイルの結果に基づいてアトリビュートを設定することはできません。そのため、Python Scriptノードほど柔軟ではありません。 ただし、結果を推測できる単純なジョブ(たとえば、出力ファイルに特定のパターンがあることがわかっているなど)の場合などに役立ちます。
Send Commandノード
コマンドサーバにコマンドを送信できます。コマンドサーバを使用することで、永続的な共有「サーバ」プロセス(HoudiniやMayaのインスタンスなど)を起動してコマンドを送信し、すべての作業が終了したらシャットダウンすることができます。
画像、動画の出力ノード
ファイルマネジメントノード
ユーティリティノード
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!”
)