Method

These nodes act as sources for Array data. Arrays are used to instance multiple other nodes on the basis of an array of ‘points’. A ‘point’ holds the following data:

  • Position, Scale, Rotation
  • Colour
  • A persistent ID
  • Age since creation (turned on)
  • Age since deletion (turned off)

Arrays differ from clones. Clones simply render a piece of geometry multiple times as identical instances, all processed on the GPU; arrays cause the node sub-tree to be traversed and evaluated multiple times, once for each point. An array could be thought of as a replacement for multiple Nulls, each one parenting the same sub-tree. As such, arrays are able to be used for cases where clones can not – such as within particle systems or fields; but clones are far more efficient for rendering multiple instances of a piece of geometry.

Arrays can be generated by various sources:

Node Description
Windows Touch Array Use Windows touchscreens to create points
Transform Array Used to create an Array from various other internal Notch sources such as a set of Nulls, Particle Systems, Blob Tracker
CSV/Table Array Create points from CSV files
Exposable Array Take Arrays of points from a host media server (only some media servers support this feature)
Hokuyo UST Lidar Array Use Hokuyo LiDAR sensor to detect hands, people etc on walls or floors and more.
TUIO Array Receive arrays of points via the TUIO network protocol
Blacktrax Array Take a filtered set of Blacktrax trackables and turn them into an array

What can you do with Array sources?

You can instance various node types from an Array by making them a child of the Array:

  • Objects (Shape 3D, 3D Object)
  • Particle Affectors
  • Particle Emitters
  • Field Affectors
  • Field Emitters
  • Clone Affectors

These nodes can often make use of the ‘age’ values of points to Ease On and Off (via Scale and Opacity etc.) making thing appear and disappear more smoothly.

To use an Array Source, you would place it within the parent-child hierarchy (like a Null). Children of the Array Source node will be instanced for every point in the Array.

In the below example, a LiDAR sensor is generating an Array of points and we’re using the Array Copy to use those points in two places: Instancing the Shape 3D node (attaching back to the root node) and Instancing multiple Primitive Emitters (parenting back to the Particle Root Node).

Managing Array data

There are numerous Array Operators that allow you to copy, filter Arrays as well as other functions.

Scripting

You can also programatically address the Exposed Array using Javascript with the following functions: SetTransformArrayPRS(), GetTransformArrayPRS(), SetTransformArrayColour(), GetTransformArrayColour(), SetTransformArrayUVScaleOffset() and GetTransformArrayUVScaleOffset(). The functions to set elements are only usable on the Exposable Array, as the other array nodes grab data from their source constantly.

Grabbing specific point data

You can grab specific point data using the Array Element Extractor operator.