Replicator COMP

From TouchDesigner Documentation
Jump to: navigation, search


The Replicator Component creates a node for every row of a table, creating nodes ("replicants") and deleting them as the table changes. A node can be a full component and its contents.

It takes the node specified in the Master Node parameter, and makes a copy of the master for every row in the Template Table (or specified by the Number of Replicant parameter).

The nodes that are created can be named in two ways. Copies can be named/numbered sequentially using the prefix specified by the Node Prefix parameter: item1, item2, ... Alternately, copies can be named based on the string in a column of the table, specified with the Name from Table parameter.


If you want to create a node for the first row of the table, un-set the Ignore First Row parameter.

The replicants get laid out in a grid in the network, determined by the Layout and Layout Origin parameters.

The Replicator does not assume or require that the master and replicants are components – they can all be Movie File In TOPs if you want. It also does not assume or require that the replicants are Clones. However the Master Node can be a component whose Clone parameter is set to itself, so that all nodes created are clones of the master.

For every replicant, you can run a script in the callback DAT where you can see some examples of typical cases that you can adapt. Here are some others:

  • change the expression of a parameter: c.par.display.expr = "op('thing')[op.digits, 'display']"
  • Change the parameter expression mode: c.par.display.mode = ParMode.EXPRESSION The mode is one of: ParMode.CONSTANT, ParMode.EXPRESSION, or ParMode.EXPORT.

If only one line of a table changes, the other existing replicants are not changed or re-created. In the callback DAT, removing onRemoveReplicant() will keep the replicants around to be re-used when the table grows again.

This is an extremely powerful node type. Examples: (1) A button gadget for each row of the table. a geometry component, which is replicated at every point of a 3D particle system, each behaving separately. (2) You can feed the table of a Multi Touch In DAT directly to the Replicator to create something at each fingertip.


Parameters - Replicator Page

Replication Method method - - Choose between using a Template DAT Table where each row will create a replicant or using the Number of Replicants parameter below to set how many replications to make.

  • By Number bynum -
  • By Table bytable -

Number of Replicants numreplicants - Set number of replicants when using Replication Method = By Number above.  

Template DAT Table template - Path to the table DAT that will drive the replicating.  

Name from Table namefromtable - - How the node names will be generated.

  • Row Index rowindex - Uses the Node Prefix parameter followed by the row number. The default creates nodes named item1, item2, item3 .... (The top row is 0).
  • Column by Index colbyindex - The node name is in the column specified by a column number.
  • Column by Name colbyname - The node name is in a column specified by a column name in the first row.

Ignore First Row ignorefirstrow - Do not create a node for the first row.  

Column Name colname - Name at the top of the column.  

Column Index colindex - Column number, starting from 0.  

Operator Prefix opprefix - Add this prefix to all nodes.  

Master Operator master - Which node or component to replicate.  

Destination destination - Where to put the replicant nodes. If the location is .., it puts the nodes inside the parent, which is actually alongside the Replicator component. If you put ., it will put it inside itself, that is, inside the Replicator component. If left blank, it will error.  

Maximum Operators domaxops - Enable the parameter below to set a maximum number of allowed replicants.  

Maximum Operators maxops - Max number of nodes replicated.  

Script tscript - Tscript only (use callback DAT in python): For every replicant, you can run a script to customize it relative to the master, such as setting the Display or Clone parameters, or a Render flag. Replicator runs the script command to customize each replicant versus the master. me.curItem can be used here to access the current item and make changes to it. Select one of the 3 entries in the drop menu to the right for some examples.

If you are using Tscript, some local variables are defined:

  • $ITEM Name of current node being replicated.
  • $MASTER Name of master node.
  • $LOCATION Name of the location component.

The most common need is for the master to not display, and the replicants to display. For Panel components it is most commonly "opparm $ITEM paneldisplay ( 1 )", and for Geometry components it is most commonly "opset -d on $ITEM". Use the popup menu for some common scripts.  

Script Names scriptmenu - Select from some commonly used scripts (Tscript) in this menu.  

Callbacks DAT callbacks - Path to a DAT containing callbacks for each event received. See replicatorCOMP_Class for usage.  

Layout layout - - How to lay out the new nodes - all in one place (Off), horizontally, vertically, or in a grid.

  • Off off -
  • Horizontal horizontal -
  • Vertical vertical -
  • Grid grid -

Layout Origin layoutorigin - - Where to lay out the new nodes, giving the XY location of the top-left node's bottom-left corner.

  • layoutorigin1 -
  • layoutorigin2 -

Incremental Update doincremental - Enables the parameter below for incremental creation of replicants.  

Incremental Update increment - Staggers the replication of operators to avoid large frame drops when creating replicants. It will create the specified number of replicants per frame at most, by default 1 per frame, if Incremental Update is on.  

Recreate All Operators recreateall - Deletes all nodes it has created, then re-creates them using the template and its current parameters.  

Recreate Missing Operators recreatemissing - Re-creates missing operators from the template table but does not delete and re-create already existing replicants.  

Parameters - Extensions Page

The Extensions parameter page sets the component's python extensions. Please see extensions for more information.

Re-Init Extensions reinitextensions - Recompile all extension objects. Normally extension objects are compiled only when they are referenced and their definitions have changed.  

Extension Object 1 extension1 - A number of class instances that can be attached to the component.  

Extension Name 1 extname1 - Optional name to search by, instead of the instance class name.  

Promote Extension 1 promoteextension1 - Controls whether or not the extensions are visible directly at the component level, or must be accessed through the .ext member. Example: n.Somefunction vs n.ext.Somefunction  

Parameters - Common Page

The Common parameter page sets the component's node viewer and clone relationships.

Parent Shortcut parentshortcut - Specifies a name you can use anywhere inside the component as the path to that component. See Parent Shortcut.  

Global Shortcut opshortcut - Specifies a name you can use anywhere at all as the path to that component. See Global OP Shortcut.  

Internal OP Shortcut 1 iopshortcut1 - Specifies a name you can use anywhere inside the component as a path to "Internal OP" below. See Internal Operators.  

Internal OP iop1 - The path to the Internal OP inside this component. See Internal Operators.  

Node View nodeview - - Determines what is displayed in the node viewer, also known as the Node Viewer. Some options will not be available depending on the Component type (Object Component, Panel Component, Misc.)

  • Default Viewer default - Displays the default viewer for the component type, a 3D Viewer for Object COMPS and a Control Panel Viewer for Panel COMPs.
  • Operator Viewer opviewer - Displays the node viewer from any operator specified in the Operator Viewer parameter below.

Operator Viewer opviewer - Select which operator's node viewer to use when the Node View parameter above is set to Operator Viewer.  

Keep in Memory keepmemory - Used only for Panel Components this keeps the panel in memory to it doesn't reload every time it is displayed.  

Enable Cloning enablecloning - Control if the OP should be actively cloned.  

Enable Cloning Pulse enablecloningpulse - Instantaneously clone the contents.  

Clone Master clone - Path to a component used as the Master Clone.  

Load on Demand loadondemand - Loads the component into memory only when required. Good to use for components that are not always used in the project.  

External .tox externaltox - Path to a .tox file on disk which will source the component's contents upon start of a .toe. This allows for components to contain networks that can be updated independently. If the .tox file can not be found, whatever the .toe file was saved with will be loaded.  

Reload .tox on Start reloadtoxonstart - When on (default), the external .tox file will be loaded when the .toe starts and the contents of the COMP will match that of the external .tox. This can be turned off to avoid loading from the referenced external .tox on startup if desired (the contents of the COMP are instead loaded from the .toe file). Useful if you wish to have a COMP reference an external .tox but not always load from it unless you specifically push the Re-Init Network parameter button.  

Reload Custom Parameters reloadcustom - When this checkbox is enabled, the values of the component's Custom Parameters are reloaded when the .tox is reloaded.  

Reload Built-In Parameters reloadbuiltin - When this checkbox is enabled, the values of the component's built-in parameters are reloaded when the .tox is reloaded.  

Save Backup of External savebackup - When this checkbox is enabled, a backup copy of the component specified by the External .tox parameter is saved in the .toe file. This backup copy will be used if the External .tox can not be found. This may happen if the .tox was renamed, deleted, or the .toe file is running on another computer that is missing component media.  

Sub-Component to Load subcompname - When loading from an External .tox file, this option allows you to reach into the .tox and pull out a COMP and make that the top-level COMP, ignoring everything else in the file (except for the contents of that COMP). For example if a .tox file named project1.tox contains project1/geo1, putting geo1 as the Sub-Component to Load, will result in geo1 being loaded in place of the current COMP. If this parameter is blank, it just loads the .tox file normally using the top level COMP in the file.  

Re-Init Network reinitnet - This button will re-load from the external .tox file (if present), followed by re-initializing itself from its master, if it's a clone.  

TouchDesigner Build:

Actor • Ambient Light • Animation • Base • Blend • Bone • Bullet Solver • Button • Camera Blend • Camera • MediaWiki:Common.js • Component • Constraint • Container • Engine • Environment Light • FBX • Field • Force • Geometry • Handle • Impulse Force • Light • List • Null • Nvidia Flex Solver • Nvidia Flow Emitter • OP Viewer • Parameter • Replicator • Select • Shared Mem In • Shared Mem Out • Slider • Table • Time • USD • Widget • Window

Creates a new component for every line in a table. Unlike Clone, it automatically creates copies of a master component.

An Operator Family that contains its own Network inside. There are twelve 3D Object Component and eight 2D Panel Component types. See also Network Path.

The generic thing that holds an Operator, and includes Flags (display, bypass, lock, render, immune) and its position/size in the network. Whether you "lay down an Operator" or "lay down an Node", you're doing the same thing.

(1) The TouchDesigner window is made of a menu bar at the top, a Timeline at the bottom, plus one of a choice of Layouts in the middle. A Layout is made on one or more Panes, each Pane can contain a Network Editor, Viewer, Panel, etc. See Pane and Bookmark. (2) Nodes in a network are arranged using Layout commands in the RMB menu.

An Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a command Script, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.

The location of an operator within the TouchDesigner environment, for example, /geo1/torus1, a node called torus1 in a component called geo1. The path / is called Root. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.

Any of the procedural data operators. OPs do all the work in TouchDesigner. They "cook" and output data to other OPs, which ultimately result in new images, data and audio being generated. See Node.

A set of commands located in a Text DAT that are triggered to run under certain conditions. There are two scripting languages in TouchDesigner: Python and the original Tscript. Scripts and single-line commands can also be run in the Textport.

TouchDesigner's original built-in Command scripting language prior to Python.

Cloning can make multiple components match the contents of a master component. A Component whose Clone parameter is set will be forced to contain the same nodes, wiring and parameters as its master component. Cloning does not create new components as does the Replicator COMP.

Any component can be extended with its own Python classes which contain python functions and data.

The component types that are used to render 3D scenes: Geometry Component contain the 3D shapes to render, plus Camera, Light, Ambient Light, Null, Bone, Handle and other component types.

A Parent Shortcut is a parameter on a component that contains a name that you can use anywhere inside the component to refer to that component using the syntax parent.Name, for example parent.Effect.width to obtain panel width.

There are four types of shortcuts: Application Shortcuts that are built-in to TouchDesigner's authoring interface, Panel Shortcuts that you create for any custom built panels, Parent Shortcuts for accessing a component from within that component, and Global OP Shortcuts that access a unique component from anywhere in TouchDesigner.

Any of the procedural data operators. OPs do all the work in TouchDesigner. They "cook" and output data to other OPs, which ultimately result in new images, data and audio being generated. See Node.

The viewer of a node can be (1) the interior of a node (the Node Viewer), (2) a floating window (RMB->View... on node), or (3) a Pane that graphically shows the results of an operator.

A custom interactive control panel built within TouchDesigner. Panels are created using Panel Components whose look is created entirely with TOPs.

To pulse a parameter is to send it a signal from a CHOP or python or a mouse click that causes a new action to occur immediately. A pulse via python is via the .pulse() function on a pulse-type parameter, such as Reset in a Speed CHOP. A pulse from a CHOP is typically a 0 to 1 to 0 signal in a channel.

TouchDesigner Component file, the file type used to save a Component from TouchDesigner.

TOuch Environment file, the file type used by TouchDesigner to save your project.

An Operator Family that contains its own Network inside. There are twelve 3D Object Component and eight 2D Panel Component types. See also Network Path.

Every component contains a network of operators that create and modify data. The operators are connected by wires that define where data is routed after the operator cooks its inputs and generates an output.