Arnold Procedural

Duck models are instanced Arnold Procedurals


In C4DtoA, you can export any object as an .ass file. A Procedural references the .ass file on disk (or other procedural formats supported by Arnold such as .obj.dll, .ply, etc). Arnold Procedurals (also called "stand-ins" in MtoA and SItoA) allow you to keep your working scene light and workable by deferring the loading of geometry data until render time (when a ray hits the bounding box of the Arnold Procedural).

Defer StandIn Load must be disabled when a procedural has light inside. Lights can only be expanded correctly when the procedural they belong to is expanded at render initialization.

Arnold Ass Export

The work-flow is as follows. Before you can use Arnold Procedurals, 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 Plugins > C4DtoA > Ass Export.
  3. Enabled Export bounding box (.asstoc). This results in an optimized performance of the viewport when loading the procedural in a C4D scene.
  4. Choose a name for your archive.

The archive is saved as an Arnold Scene Source (.ass) file.



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 CINEMA 4D renderer options will be used in the names of the ass files.

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

Arnold Procedural

To use the Arnold Procedural, you need to create a Arnold Procedural primitive. Go to Plugins > C4DtoA > Arnold Procedural and specify the archive to be used.

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

This will create a Arnold Procedural node which you can use in place of regular geometry. The attributes of the Arnold Procedural node are described below.

If you experience slow down in CINEMA 4D's viewport when viewing the Arnold Procedural, try exporting the ass file with CINEMA 4D's 'Bounding Box' display override enabled for the mesh.

Procedurals are supported via the Arnold Procedural node


The path to the archive (.ass) or the compiled procedural program (.dll or .so).

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 you 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, you can manually change the path string and replace the padding pattern in the corresponding filename.


This string parameter is used to pass parameters that are parsed by the procedural program and can be used for its creation/initializations. The format of this string is not standard and is dictated by the particular implementation of each procedural program. A better and more compact way of passing parameters and data to the procedural is through user data.

Display Bounding Box

Reads the bounding box from the Geometry File. Bounds for .ass files will be displayed more efficiently if an .asstoc file is found alongside the .ass file. 

Object Display Mode

Display mode of the procedural.

Create objects

If enabled the Arnold Procedural object behaves as an object generator and geometries of the procedural will be generated to the scene as Poly objects.

You can use the Make object command (press c) to turn the procedural to actual polygon objects if this option is enabled.

Start frame

Defines the first frame of the animation when a frame sequence is defined (with # is used in the path).

End frame

Defines the lastt frame of the animation when a frame sequence is defined (with # is used in the path).

Step frame

Defines the increment of the animation when a frame sequence is defined (with # is used in the path). For example start frame 0, end frame 10, step frame 3 selects frame 0, 3, 6, 9 from the animation.


Defines which frame of the scene the animation starts at. For example offset 2 means that the first frame of the animation is at frame 2. Offset -2 positions the third frame of the animation at frame 0 of the scene.


Defines how the animation is repeated.

  • none: no repeat, nothing is displayed when the animation is ended.
  • freeze: keeps the last frame rendered when moving further on the timeline.
  • repeat: repeats the animation from the beginning.
  • ping pongwill animate forward, then in reverse, then forward again, and so on.

Load at init

If disabled the loading of the Arnold Procedural will be deferred at render time until a ray hits its bounding box for the first time. Enabling it will make Arnold load the Arnold Procedural at render initialization. 

Must be enabled when a procedural has light inside. Lights can only be expanded correctly when the procedural they belong to is expanded at render initialization.

Bounding Box Scale

A scale factor applied to the bounding box before it is set as the procedural bound. If the stand in contains a poly mesh with a displacement map it might be necessary to rescale the bounding box, should the shaders displacement values change.

Custom Bounding Box

Controls for defining the min/max edges of the bounding box. Scale applies to the custom bounding box as well.


Choose to 'mute' or 'disable' various rendering options for selected Arnold Procedurals. This will override the values set within the procedural file. 'Mute' (set by default) uses the values set within the procedural file.

User options

This string field can be set to override any parameter of the Arnold procedural node. For more info see User Options.


Procedurals can reference other assets in ASS files which are 'invisible' for C4DtoA. For example if you have an object with a texture in your referenced ASS file, C4DtoA does not know anything about this texture and won't distribute it to the clients. In this case you have to manually define these assets on the Assets tab.

It is important that you define the same paths here as they are in the ASS file. If the path is absolute in the ASS file you must set an absolute path here. If only the file name is given, you must set the file name here as well. If you have a sequence in the ASS file, define it using padding (#) characters. This is because C4DtoA has to replace the path in the ASS file with the downloaded assets on the client machines. Note, that absolute paths do not work with ass.gz files.


The .asstoc file is a cache which describes the bounding box of the procedural. It allows an optimization of the scene since the plugin does not have to read the referenced ASS file to detect the bounds. The asstoc file can be exported via the ASS Export dialog (see above), however there are cases when no asstoc files exist (e.g. the ASS files are coming from a different source (RealFlow, etc.)). If C4DtoA can not detect the bounding box (e.g. no asstoc file is given and the bounds could not be read from the referenced ASS file) then a default bounding box is used (with size of 1000 unit) and a warning is displayed in the log. The Asstoc tab of the procedural offers a user-friendly cache generation for this case.

The frame range of the generation can be defined on the UI, the default is to use the frame range defined in the Render Settings. Clicking on the Generate button writes the .asstoc files to the disk, next to the ASS files. The result of the generation (success or fail) displayed on the C4D status bar, error is displayed in the console by failure.

Sharing Arnold Procedurals between plug-ins

Some users may be in a studio environment where CINEMA 4D, Maya, Softimage and Houdini are used.

It is perfectly possible to export .ass Arnold Procedurals from C4DtoA and re-use them in MtoA, SItoA or HtoA (and vice versa), as long as Arnold can find both C4DtoA and the MtoA/SItoA/HtoA shaders. To do this, make sure that the Arnold shader path environment variable ARNOLD_PLUGIN_PATH is set to pick up both sets of shaders.

If you want motion blur on a Arnold Procedural, you will have to export the Arnold Procedural with motion blur enabled.

Procedural File Formats

Procedural formats supported by Arnold include .obj.dll, .ply, etc). These models can be opened and rendered directly within C4DtoA as an Arnold Procedural. 

116 million polygon Stanford .ply model rendered directly as an Arnold Procedural. .ply models can be downloaded here.

The Utility shader's Object mode does not work with Arnold Procedurals. This is a known limitation with C4DtoA.

The color of the two spheres change when the Utility shader's mode is set to 'Object' . However, the Arnold Procedurals color remains the same (rollover image).




Further examples of Arnold Procedurals

  • No labels