On this page |
This is not a list of all TOP nodes. This is a list of the most commonly useful nodes. These nodes should give you an idea of how to get started with common workflows in TOPs. See
Kicking off ¶
If these nodes have no input, they create a number of static work items specified by their parameters. If their input is connected, they create the specified number of new work items for each incoming work item.
Creates a work item for each file that matches a pattern (for example, |
|
Generates work items to download one or more URLs to disk. |
|
Creates a work item for each variation of one or more attributes you specify. See wedging attributes for more information. |
|
Creates a work item to render each specified frame. |
|
Creates a work item to generate geometry for each specified frame. |
|
Creates a work item for each frame image extracted from a video file. |
|
Create new work items for each “row” in an input file. |
|
Creates new work items for each row returned by a database query. |
Doing work ¶
Cooks a digital asset and writes the asset’s output to a file. |
|
Cooks another node in the same HIP file as this node. |
|
Runs a Python script for each incoming work item. This is the node you will usually use for making TOPs do custom work. You can set new output attributes on the work item from this script based on the work done. This is easier to use than creating a custom processor code with Python Processor, but doesn’t have the full flexibility (for example, this node can’t create static work items from scratch, or generate multiple new items for each incoming item). |
|
Runs a command line executable for each incoming work item. This does not allow you to set attributes based on the result of the executable, so it is not as flexible as the Python Script node. However, for simple jobs where you can infer the results (for example, you know the output files have a certain pattern), this may be useful. |
|
Command servers let you start up a persistent shared “server” process (such as an instance of Houdini or Maya), send it commands, and then shut it down when all work is finished. |
See wrapping external programs and command servers for more information.
Waiting for results ¶
See waiting for results.
Image/video outputs ¶
Compiles a set of frame images into a video file. |
|
Manipulates an image file using the ImageMagick library. |
|
Writes text over an image. This is very useful for overlaying metadata (for example, frame number, wedge attributes, filename) over non-final images. |
File management nodes ¶
Creates a work item to create a new directory on disk. This can be useful for organizing output files and creating temporary storage areas. |
|
Renames or moves a file. Turn on Async to perform the rename(s) in work items at run time. |
|
Copies a file from one name/location to another. Turn on Async to perform the copies in work items at run time. |
|
Deletes a file. Turn on Async to perform the copies in work items at run time. |
Tip
You may want to avoid destructive file operations such as move/rename and delete, to avoid making the dependency system do extra work because of missing files.
See file management tips.
Utilities ¶
Adds one or more attributes to the incoming work items. You can use expressions to compute the contents of the new attribute(s).
Splits the incoming work items into separate outputs based on some criteria. This lets you process different types of work items using different node chains.
“Recreates” the work items that were merged into a given partition. This can be useful to wait for a group of items (by partitioning them) but then continue on to generate separate work from the items.
Finishing ¶
This is a partitioner that puts all incoming work items in a single partition, so it doesn’t proceed until all upstream work is done. This is usually needed at the end of the network (before clean up and/or notification nodes), and sometimes at the end of logically distinct pipeline steps, if the next step requires all work to be finished. |
Creates a work item that sends an email. This can be useful after a Wait for All at the very end of a large network, to notify a user/group that the work is finished.
For any other types of notifications besides email, you can use a Python Script node to use a notification API. For example, you could post a Slack message at the end of the network:
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!" )