customisation. Houdini uses this procedural generation in production of textures, shaders, particles, "channel data" (data used to drive animation), rendering and compositing. Houdini's operator-based structure is divided into several main groups: OBJs – nodes that pass transform information (Traditionally these contain SOPs.) SOPs – Surface Operators – for procedural modelling. POPs – Particle Operators – used to manipulate particles systems. CHOPs – Channel Operators – for procedural animation and audio manipulation. COPs – Composite Operators – used to perform compositing on footages. DOPs – Dynamic Operators – for dynamic simulations for fluids, cloth, rigid body interaction etc. SHOPs – Shading Operator – for representing a dozen or more different shading types for several different renderers. ROPs – render operators – for building networks to represent different render passes and render dependencies. VOPs – VEX operators – for building nodes of any of the above types using a highly optimized SIMD architecture. TOPs - Task Operators LOPs - Lighting Operators - for generating USD describing characters, props, lighting, and rendering. Operators are connected together in networks. Data flows through, manipulated by each operator in turn. This data could represent 3D geometry, bitmap images, particles, dynamics, shader algorithms, animation, audio, or a combination of these. This node graph architecture is similar to that employed in node-based compositors such as Shake or Nuke. Complex networks can be grouped into a single meta-operator node which behaves like a class definition, and can be instantiated in other networks like any compiled node. In this way users can create their own sophisticated tools without the need for programming. In this way Houdini can be regarded as a highly interactive visual programming toolkit which makes programming more accessible to artists. Houdini's set of tools are mostly implemented as operators. This has led to a higher learning curve than other comparable tools. It is one thing to know what all the nodes do – but the key to success with Houdini is understanding how to represent a desired creative outcome as a network of nodes. Successful users are generally familiar with a large repertoire of networks (algorithms) which achieve standard creative outcomes. The overhead involved in acquiring this repertoire of algorithms is offset by the artistic and algorithmic flexibility afforded by access to lower level building blocks with which to configure shot element creation routines. In large productions, the development of a procedural network to solve a specific