Houdini (software)

Houdini is a 3D animation software application developed by Toronto-based SideFX, who adapted it from the PRISMS suite of procedural generation software tools.

The procedural tools are used to produce different effects such as complex reflections, animations and particles system. Some of its procedural features have been in existence since 1987.

Houdini is most commonly used for the creation of visual effects in film and television. It is used by major VFX companies such as Walt Disney Animation Studios, Pixar, DreamWorks Animation, Double Negative, ILM, MPC, Framestore, Sony Pictures Imageworks, Scanline VFX, Method Studios and The Mill.

It has been used in many feature animation productions, including Disney's feature films Fantasia 2000, Frozen, Zootopia and Raya and the Last Dragon; the Blue Sky Studios film Rio, and DNA Productions' Ant Bully.

SideFX also publishes Houdini Apprentice, a limited version of the software that is free of charge for non-commercial use.

Features
Houdini covers all the major areas of 3D production, including these:


 * Modeling – All standard geometry entities including Polygons, (Hierarchical) NURBS/Bézier Curves/Patches & Trims, Metaballs
 * Animation – Keyframed animation and raw channel manipulation (CHOPs), motion capture support
 * Particles
 * Dynamics – Rigid Body Dynamics, Fluid Dynamics, Wire Dynamics, Cloth Simulation, Crowd simulation.
 * Lighting – node-based shader authoring, lighting and re-lighting in an IPR viewer
 * Rendering – Houdini ships with SideFX's rendering engines Mantra and Karma; Houdini Indie licence and up support 3rd party rendering engines, such as Renderman, Octane, Arnold, Redshift, V-ray, Maxwell(soon).
 * Volumetrics – With its native CloudFx and PyroFx toolsets, Houdini can create clouds, smoke and fire simulations.
 * Compositing – full compositor of floating-point deep (layered) images.
 * Plugin Development – development libraries for user extensibility.

Houdini is an open environment and supports a variety of scripting APIs. Python is increasingly the scripting language of choice for the package, and is intended to substitute its original C Shell-like scripting language, HScript. However, any major scripting languages which support socket communication can interface with Houdini.

Operators
Houdini's procedural nature is found in its operators. Digital assets are generally constructed by connecting sequences of operators (or OPs). This proceduralism has several advantages: it allows users to construct highly detailed geometric or organic objects in comparatively very few steps;  it enables and encourages non-linear development;  and new operators can be created in terms of existing operators, a flexible alternative to non-procedural scripting often relied on in other packages for 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 element creation challenge makes automation trivial. Many studios that use Houdini on large feature effects, and feature animation projects develop libraries of procedures that can be used to automate generation of many of the elements for that film with almost no artist interaction.

Also unique to Houdini is the range of I/O OPs available to animators, including MIDI devices, raw files or TCP connections, audio devices (including built-in phoneme and pitch detection), mouse cursor position, and so on. Of particular note is Houdini's ability to work with audio, including sound and music synthesis and spatial 3D sound processing tools. These operators exist in the context called "CHOPs" for which Side Effects won a Technical Achievement Academy Award in 2002.

VEX (Vector Expression) is one of Houdini's internal languages. It is similar to the Renderman Shading Language. Using VEX a user can develop custom SOPs, POPs, shaders, etc. The current implementation of VEX utilizes SIMD-style processing.

Rendering
Houdini is bundled with a production-class renderer, Mantra, which had many similarities to RenderMan in its scope and application in its initial incarnation. Micropolygon rendering is supported, allowing high-quality displacement operations as well as traditional scan-line and raytracing modes. Shaders are scriptable and composed in their VEX language, or by using VOPs; their node-based interface to programming VEX. Mantra (as does Houdini itself) also supports point-clouds, which can be similar in application as brickmaps in Renderman. This allows more complicated light interactions, such as sub-surface scattering and ambient occlusion, to be produced with lower computational overhead. Mantra can perform extremely fast volume rendering, and also physically based path-tracing – a technique which attempts to more accurately model the physical interactions of light and materials.

TouchDesigner
Derivative Inc. is a spin-off of Side Effects Software that markets a derivative of Houdini called TouchDesigner. Tailored toward real-time OpenGL-generated animation, it was used on rock group Rush's 30th-anniversary tour to produce dynamic graphics driven directly by the musicians. TouchDesigner was also used by Xite Labs (formerly V Squared Labs) to create live visuals for Amon Tobin's ISAM installation tour.

Production
The notable works in which Houdini was used include the 1997 Contact movie and more recent 2016 ''Zootopia. ''