Duck model exported as .ass file and imported as a procedural


You can export any object as a .ass file. A procedural (also called stand-in, proxy or placeholder) references the .ass file on disk (or other procedural formats supported by Arnold such as .abc, .obj, .ply, .usd etc). They allow you to keep your working scene light and workable by deferring the loading of geometry data until render time.

During export, Arnold's current render settings will be used. Therefore, you should finalize these settings before exporting the Stand-in. For example, you should choose whether you wish to export with motion blur enabled or not.

The utility shader's object mode does not work with procedurals (stand-ins). This is a known limitation. The color of the spheres changes when the utility shader's mode is object. However, the stand-ins color remains the same.

Sharing Arnold Procedurals Between Plug-ins

Some users may be in a studio environment where a combination of Maya, 3DS Max, Houdini, and C4D are used. It is perfectly possible to export .ass Arnold Procedurals (stand-ins) and reuse them in other Arnold plug-ins (and vice versa), as long as Arnold can find both the plug-in and shaders. To do this, you must ensure that the Arnold shader path environment variable ARNOLD_PLUGIN_PATH is set to pick up both sets of shaders.

An Introduction to Stand-ins tutorial can be found here. A tutorial that shows how to open a USD file in a stand-in and modify it using operators can be found here.

Alembic Settings
File Contents
Render Stats
StandIn Overrides
Extra Attributes


The workflow is as follows. Before you can use Stand-ins, you will have to first export some geometry to be used later.

To export the geometry you must:

  1. Select the geometry you want to export.
  2. Go to the Arnold > StandIn > Export StandIn menu option.
  3. Choose a name for your archive.


Alternatively, you can export your model as a stand-in via the File>Export All options. The archive is saved as an Arnold Scene Source (.ass) file.

Stand-in export options


You may export single objects as well as a whole hierarchy made out of multiple objects. You can also export single or a sequence of frames. In this situation, the frame padding value of the Maya renderer options will be used in the names of the ass files. To use the Stand-in, you need to create a stand-in primitive. Use either File > Import, File > Create Reference, or Arnold > StandIn > Create (whichever is most convenient to you, the same dialog will be shown), and specify the archive to be used.

Note that in addition to archive (.ass) files, precompiled custom procedural programs in the form of a dynamic library can also be loaded at this point, though none are shipped with MtoA currently.


Import .ass file as Stand-in


This will create a Stand-in node that you can use in place of regular geometry. The attributes of the Stand-in node are described below.

If you experience slow down in Maya's viewport when viewing the Stand-in, try exporting the ass file with Maya's 'Bounding Box' display override enabled for the mesh.


Stand-ins are supported via the Stand-in node. This node has the following parameters:


The path to the archive (.ass) file. There is an automatic sequence recognition in the case of an archive.

The padding patterns have this form:

  • name.#.ext  - e.g. name.1.ext, name.2.ext, name.3.ext, ... , name.10.ext, ... , name.100.ext, ...
  • name.##.ext - e.g. name.01.ext, name.02.ext, name.03.ext, ... , name.10.ext, ... , name.100.ext, ...
  • name.###.ext - e.g. name.001.ext, name.002.ext, name.003.ext, ... , name.010.ext, ... , name.100.ext, ...
  • name####.###.ext - indicates four digit padding for frame numbers and three digit padding for sub-frame digits.

For example: If we point to a file called, test_001.ass it will be recognized as a sequence pattern in the form of test_###.ass. If you want to override the automatic sequence recognition, we can manually change the path string and remove the padding pattern with the corresponding filename. 

A toggle for enabling or disabling absolute/relative pathnames for procedurals (absolute by default) can be found in the System tab of the Render Settings.

Viewport Override

Use Global Settings - Uses the Standin Draw setting from the Render Settings to determine how to display the Stand-in. 
Use Local Settings - is the default behavior.
Bounding Box - Display the stand-in as a bounding box. 
Disable Draw - Disables the display of the stand-in.

Viewport Draw Mode

The display mode of the procedural.

Use File Sequence

When enabled, it recognizes the required format and opens the sequence automatically.


The frame to read that will replace the pattern defined in the Use Frame Extension checkbox. You need to put a Maya expression ('frameNumber = frame') to get a sequence of stand-in to be loaded across the different frames.

Frame Offset

Offset to the current frame. This allows the same animation sequence to be used while creating different procedurals.

Override Nodes

Nodes inside the procedural can be replaced by other nodes with this parameter. This may be used for example to replace shaders in an existing .ass procedural. When the parameter is enabled, nodes in the immediate parent scope of the procedural will replace identically named nodes inside the procedural.


Procedurals can declare a custom namespace using this parameter. This custom namespace can be used instead of the procedural name, to reference contents through absolute or relative paths. Multiple procedurals can share the same namespace by using the same custom name. Also, they can declare an empty name and they will use the global namespace.

The parameter "Force Shader Assignments" (that is necessary for this workflow) appears in the export options UI and only appears when "Export Shaders" is disabled. 

To export Stand-ins and shaders separately, the workflow would be : 

  1. Export your asset with only "Shapes" enabled with "Force Shader Assignment" enabled.
  2. Export your asset again with only "Shaders".
  3. Create two Stand-ins and load each of them.
  4. Set the same Namespace string for both Stand-ins.

User Options

Information about User Options can be found here.

Ignore Group Nodes

It can be used for proxy geometry below the group hierarchy which is then skipped when rendering. Therefore any geometry, lights, etc. parented to the Stand-in, won't appear in the render when you activate this parameter.

Object Path

The Alembic path to expand from in the hierarchy.

Arnold Procedural Settings

Auto Instancing

Allows per-procedural selection of the use of this functionality (only '.ass' procedurals support it for now). When enabled, multiple uses of the same filename will be transparently converted to instances. This workaround is sometimes useful when overriding procedural parameters with operators.

You should only disable this to prevent automatic instancing of the same .ass file. It is enabled by default and is only intended for technical users.

Alembic Settings

Export to Alembic can be found in the Arnold -> StandIn menu.


Arnold alembic export also exports subdivision and user attribute data in Arnold formated naming e.g.

aiSubdivType = subdiv_type
aiSubdivIterations = subdiv_iterations



The frame rate in units of frames per second.


Adds extra files that can be used to override properties in the Alembic file.

Name Prefix

Optional prefix to add to all nodes created by the procedural.

Make Instance

Use instancing for polymesh nodes that have the same shape. This behavior is disabled by default. If enabled, the procedural will attempt to identify identical primitives (using Alembic's per-array-property hash keys) and create corresponding "ginstance" nodes. Two primitives are considered equivalent if the keys of their relevant point position samples match along with any specified subdivision values. This works across multiple archives or invocations of the procedural.

Use Instance Cache

This can be used to disable the internal archive cache that shares alembic data between nodes, this helps when using operators to override alembic contents and make_instance is enabled. The parameter is enabled by default.

Pull User Params

If you want to pass parameters through to the shapes being created, declare user data with the same type as the parameter, prefixed by the shape name and a colon ( : ). For example, use <shape>:<parameter>. So the following declaration will ensure that every polymesh created will have step_size set to 0.1.


pull_user_params on
declare polymesh:step_size constant FLOAT
polymesh:step_size 0.1

Ignore Visibility Attributes

Don't do velocity motion blur even if velocity attrs exist.

Radius Attribute Name

The name of the attribute that is looked up to give radius for points and curves default is blank so uses the alembic defaults of widths.

Radius Default

Default radius for curves and points if not specified via an attribute.

Radius Scale

Scale the radius attribute that is resolved.

Velocity Ignore

Don't do velocity motion blur even if velocity attrs exist.

Velocity Scale

Scale the velocities used for velocity motion blur.

File Contents

It shows the contents of the file in the Attribute Editor and allows you to apply overrides on the selected items.

There are a scene file and video available that demonstrate the use of Operators and Assignments with .abc files.


Choose to create, edit or delete look variations. Creating a new look automatically adds an aiLookSwitch node which is a combination of a switch_operator and a merge, which is connected to the root of the procedural graph. When making the first look, the current operators are moved to the first list of inputs on the variant switch node. Labels in the aiLookSwitch are used to populate the menu from the aiStandIn. This plug can be set/overrode by the Render Setup tools for adding different looks per layer/pass. The name/look/pass will get translated to an index number for rendering.

'Green' look applied


Add Assignment

A list of parameters that can be assigned to objects within itIt can be used to add attribute and parameter assignments to sub-objects of the node. It creates a Set Parameter node for each selection and puts them in order in the Operators list. The top one is the first operator and the last leaf in the hierarchy is the last Operator on the list.

Local Overrides

Assignments that are on the node in the hierarchy.

Inherited Assignments 

Overrides that affect the object below or that match the string expression selection. 

Inherited Assignments created using far left button


Add Operator

Adds a generic Operator to a point in the Graph. The selection string must refer to the nodes inside the .ass file.

Operator list

Show Graph

Displays a standalone graph of the shape and any Operators that are connected to it.

Render Stats

The Render Stats section lets you turn on or off various rendering options for selected Stand-ins. 

StandIn Overrides

Override Standin Light Linking

If enabled, the light linking of the aiStandin node is applied to all objects in the Stand-in.

Override Standin Shaders

If enabled, shaders applied to the aiStandin node override the shaders on all objects in the Stand-in.

Overrides the values set within the procedural file. Disabling override_... = OFF would mean that the value isn't forced on the Stand-in.

Overriding shaders does not override displacement maps. Displacement is handled separately by Arnold: when a scene is translated to Arnold by MtoA, the displacement is not part of the "shader" applied to an object.

Extra Attributes

There are some extra attributes (that are hidden from the user), such as overridePrimaryVisibilityoverrideOpaque etc. These are located at the bottom of the Extra Attributes in the Attribute Editor of the stand-in (see below). If you use the StandIn Overrides controls, MtoA will automatically update the appropriate checkboxes under Extra Attributes. For example, to override Primary Visibility,  you must also enable the extra attribute overridePrimaryVisibility.

Arnold Procedural

You can use proxy geometry to represent a stand-in using the Arnold Procedural Translator for a mesh. This feature uses the mesh's bounding box information from Maya. If the stand-in is clipped, you can disable Defer Procedural Load, or use the User Options to set the procedural min and max (for example min -1 -1 -1 max 1 1 1).

Polymesh procedural translator