Arnold's native scene description file format, known as ".ass" files", are human-readable ASCII text files. An .ass file typically contains cameras, lights, model geometry, and shaders as a list of nodes with their connections and parameters.
The Arnold DCC plug-ins for Maya, Houdini, etc. can export ass files. Arnold's command-line renderer, kick, can be used to render these ass files into image files.
The following is a simple .ass file that contains an options block, a filter node, a driver, a camera, a light, a polymesh, and a shader.
Just like in Python, one-line comments begin with the '#' character.
Arnold is built around different types of nodes. For example, there are shader nodes, camera nodes, light nodes, filter nodes, geometry (aka "shape") nodes and output driver nodes. Each node has a number of parameters.
Each type of node is identified by a unique name (options, persp_camera, polymesh, lambert, etc.). You can have as many nodes of each node type as you want. Each node is uniquely identified by a string parameter called "name". To create a node, you write the node type and enclose the definition of the parameter values within brackets. For example:
Here are some of the more important nodes that can be found in an ass file.
All parameters have a default value, so you don't have to explicitly set all of the available parameters. Default parameter values can be queried with Arnold's command line renderer,
The most common types are BOOL, INT, UINT, ENUM, FLOAT, MATRIX, VECTOR, NODE and STRING.
Arrays of a basic type, e.g. VECTOR[ ] or FLOAT[ ], are specified with the following syntax:
For example, the polymesh node has a parameter called
A polymesh with a single triangle would, therefore, be specified with an array of three VECTORs:
For parameters that support motion blur, you can define several values for each of the motion blur time samples (or "keys"). The following example shows the list of vertices for one triangle with two motion keys, where the triangle has moved 5 units in the Y direction: