Duck models are instanced Arnold Procedurals


In SItoA 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, .ply). Arnold Procedurals (previously called "stand-ins") allow you to keep your working scene light and workable by deferring the loading of geometry data until render time. The object is exported as an Arnold procedural node.


To apply it, select an object and run either:

  • Property->Arnold Properties->Procedural
  • Arnold->Properties->Procedural
  • SITOA_AddProceduralProperties (script editor).



The full path to the file to be loaded. Valid extensions are .ass.ass.gz.obj.obj.gz.dll (Windows), .so (Linux).
The path string supports the use of Softimage tokens. For example, c:\temp\dummy.[Frame].ass is resolved with the current rendering frame when rendering a sequence.
Tokens support padding and shifting. So, c:\temp\dummy.[Frame #4 +2].ass is resolved as c:\temp\dummy.0022.ass at frame 20.

Override Frame, Frame

If Override Frame is on, the Frame value is used to resolve the Path's [Frame] token (if it exists). For example, you can have Frame defined by an expression and still benefit from the Path padding and shifting syntax. If Path is not a sequence, these parameters are not used.

User Data

If enabled (Mute off), each row of the grid can define a user data by its Name, Structure, Type, and Value. You can add a row by clicking New Data, or delete an existing one by selecting it and clicking Delete Data.
Value can contain Softimage tokens, that are resolved if Resolve Tokens is enabled. 

A Structure can be either SINGLE or ARRAY, the Type can be BOOL, INT, VECTOR, POINT, etc.

The syntax to use for the Value depends on the structure and the type.

  • If the structure is SINGLE, and the type is made of a single element (bool, int, float) just type the plain value. Instead, if the type is a vector, point, etc, each field must be separated by a white space.

  • If the structure is ARRAY, the array members must be separated by a ',' character.

As an example, here is a list of valid entries, and the corresponding section of the exported ass file.

  name cube
  dso "C:/temp/someArchive.ass"
  min -4 -1 -4
  max 4 1 4
  1 0 0 0
  0 1 0 0
  0 0 1 0
  0 0 0 1 
  declare BoolSimple constant BOOL
  BoolSimple on
  declare VecSimple constant VECTOR
  VecSimple 1 2 3
  declare VecArray constant ARRAY VECTOR
  VecArray 3 1 VECTOR 4 5 6 7 8 9 10 11 12 
  declare FloatArray constant ARRAY FLOAT
  FloatArray 2 1 FLOAT 13 14 
  declare StringArray constant ARRAY STRING
  StringArray 3 1 STRING   "One" "Two" "Three" 

Procedurals as ICE instance shape

A typical usage of the Procedural property is to replace an ICE instance shape with complex geometry, as shown below. Because of the number of objects in the model, having all that geometry in the scene would make the export time rather long.
Referencing the archive, on the other hand, makes the render start in a matter of seconds.

For more information, see the ICE page.

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


We use the following convention: if the material of the placeholder object is called Scene_Material or Procedural_Material, then the original shaders are used, i.e. the shaders stored in the .ass (or other types of procedural).
Else, the material applied to the placeholder propagates to the Procedural, allowing you to, for instance, render an occlusion or matte pass from the Procedurals without having to export an .ass file with that material already applied.  In the image below, we override the native elephant's material with a utility shader, getting its color from the Color attribute set by ICE.


Properties (Visibility, Sidedness, User Options ...) applied to the proxy object propagate to the objects generated by the procedural.

Previewing Procedurals

The SITOA_Viewer graphic sequencer allows you to preview the content of the procedural in the viewport. 

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

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


  • No labels