Setting the procedural’s load_at_init parameter to true would also fix this.


There’s an Arnold error that recommends setting the load_at_init parameter, but people don’t always know where to find that in their favorite Arnold plugin.

ERROR| [proc] c4d|Arnold_Procedural: bounds supplied to procedural node are not large enough to contain the actual underlying geometry.
Replace given bounds: (-1, -1, -1) X (1, 1, 1), with: (-9.4028616, -9.43616867, -9.21633244) X (9.3304739, 9.43616867, 9.21633244).
Setting the procedural's load_at_init parameter to true would also fix this.

The load_at_init parameter controls whether the procedural (standin) is loaded during scene intialization (before rendering starts), or during rendering (when a ray hits the procedural bounding box).

By default, load_at_init is false, which means that procedural loading is deferred until render time.

And so, in MtoA, C4DtoA, and SItoA, the load_at_init parameter is exposed as Defer Standin Load, which is enabled by default. In HtoA, you have a Load At Init parameter on for the Arnold Procedural node.

[Arnold] System requirements: minimum Windows version


As of Arnold 4.2.3.1, the minimum Windows version is Windows 7. We no longer support Windows versions before Windows 7 and Windows Server 2008 R2.

This applies to all plug-ins (such a MtoA 1.2.02 and later, or SItoA 3.4 and later) that use Arnold 4.2.3.1 or later.

If you try to load an Arnold plugin on an unsupported Windows, you’ll get an error (something like “The specified procedure could not be found”).

On Vista with Arnold 4.2.3.1 or later, kick -nodes gives you a more specific error:

"kick.exe - Entry Point Not Found" 
"The procedure entry point SetThreadGroupAffinity could not be located in the dynamic link library KERNEL32.dll."

[MtoA] [SItoA] Setting multiple Arnold parameters with a User Options string


mtoa_user_options
If you want to set multiple Arnold parameters in a User Options string, you can use any whitespace (spaces, tabs, newlines eg \n) that you would use in an actual ASS file.

For example, this:

enable_procedural_cache off error_color_bad_pixel 1 .25 1 declare test constant FLOAT test 2

would add these lines to your options node:

options
{
 error_color_bad_pixel 1 0.25 1

 enable_procedural_cache off

 declare test constant FLOAT
 test 2

Note: Plugins like MtoA and SItoA use AiNodeSetAttributes to set the user options.

The User Options string is a way to set parameters that are not exposed by the plugins. MtoA provides a User Options string for the render options and for shapes. SItoA also has User Options strings for render options and shapes.

[SItoA] Installing the alShaders in Softimage


Here’s how to install third-party, SPDL-based shaders, like alShaders, so that you can use them with SItoA. You could install them in a separate workgroup, but for simplicity I’m going to show how to install them in the SItoA workgroup.

In these instructions, $AL_SHADERS is the location where you extracted the alShaders download. For example, C:\solidangle\alShaders\alShaders-win-0.4.0b18-ai4.2.0.6.

$SITOA_WORKGROUP is the SItoA workgroup location. For example, C:\Users\StephenBlair\softimage\workgroups\sita-3.3.0-2014.

  1. Copy the alShader DLLs from
    $AL_SHADERS\bin
    to
    $SITOA_WORKGROUP\Addons\SItoA\Application\Plugins\bin\nt-x86-64

  2. Create a spdl folder in your Addons\SItoA\Application folder:
    $SITOA_WORKGROUP\Addons\SItoA\Application\spdl

  3. Copy the alShader spdl files from
    $AL_SHADERS\spdl
    to
    $SITOA_WORKGROUP\Addons\SItoA\Application\spdl

  4. Restart Softimage. The alShaders should show up in the Render Tree preset manager, and assuming that your version of alShaders is compatible with your SItoA, they’ll work in a render too.
    als_shaders

Tip Don’t create an alShader from the Arnold > DLL Shaders menu; it won’t pick up the SPDL and you’ll get a raw PPG (and a raw render tree node too).

[MtoA] [SItoA] Distance between shading with Vector State


SItoA includes Arnold versions of the Softimage Vector State and Vector Scalar shaders, which you can use to do build a “distance between” shading network.

Vector State can get you the origin point of a ray and its intersection point, and Vector Scalar can get the distance between those two points.

vector_state_sitoa

You can even use these shaders in Maya (since they are just Arnold shaders). Just put sitoa_shaders somewhere in the ARNOLD_PLUGIN_PATH, and MtoA will load them. The shader UI in the Attribute Editor will be very basic (for example, integer input fields instead of drop-down lists), but you can use the shaders.

vector_state_mtoa

[SItoA] Understanding the Object color mode of the Utility shader


The Utility shader has an Object color mode that assigns colors to objects based on names. Each shape (for example, a polymesh shape or a curves shape or a box shape) gets a unique color, because each shape has a unique name.

If you’re working with SItoA, you may have noticed that the object color changes with each frame:
utility_color_mode

That’s because SItoA gives shapes names like Elephant.Elephant_Mesh.SItoA.4000, which change with every frame.

MtoA doesn’t use the current frame in shape node names, and neither does HtoA (by default). However, HtoA does provide an option for adding a suffix, like the frame number, to the shape node name.

[SItoA] Getting user parameters in the render tree


Arnold nodes can have user-defined parameters, like MyColor in this ASS snippet:

polymesh
{
 name grid3.SItoA.1000
#
# ...
#
 declare MyColor constant RGBA
 MyColor 0.703999996 0 0.526000023 1
}

In Softimage, there are a number of ways you can assign data like MyColor to a polygon mesh. You could use ICE:
userparam_ice_attribute
Or you could use the Arnold User Options property:
userparam_user_options
To access MyColor in the render tree, use the Color Attribute shader:
MyColor_render_tree
If you used ICE, MyColor will appear automatically in the Attribute list. But if you used the User Options property, you’ll have to use a script one-liner to set the Attribute value. That’s because Softimage doesn’t know about the user parameters on Arnold nodes: those come into existence only when SItoA translates the scene to Arnold.

Application.SetValue("Sources.Materials.DefaultLib.Material.Color_Attribute.attribute", "MyColor", "")

On a related note, the MtoA shader userDataColor does the same thing as the SItoA Color Attribute shader: it uses AiUDataGetRGBA() to get a color from a user parameter on the object being shaded. With SItoA 3.0, the Arnold > DLL Shaders menu makes it pretty easy to use an MtoA shader in Softimage.
mtoa_userDataColor

[SItoA] More about particle shapes


For the Point, and Sphere particles shapes, you get a single Arnold points node. For example, for the Sphere shape, you’d get a points node that looked something like this:

points
{
 name pointcloud.SItoA.Sphere.5000
 points 54 1 b85POINT
8LLwt8;`)381]^28S`W`8:l)EadWuf8[iB>89m7taW>aAaX=rn8...
 radius 54 1 b85FLOAT
!8Fcb9$$$$Z
 mode "sphere"
 visibility 255
 sidedness 255
 matrix
 1 0 0 0
 0 1 0 0
 0 0 1 0
 0 0 0 1
 shader "Sources.Materials.DefaultLib.Material.standard.SItoA.5000.2.sta_shading_group"
 id 832
}

This particular node is for 54 points in sphere mode. For each point, you get the center position (the points.points parameter) and a radius (the points.radius parameter). If there’s any scaling applied to the particle in ICE, the radius is multiplied by the X scaling of the particle.

For the Point shape, you get an Arnold points node in “disk” mode, with radius = size * X scaling.
points_disc_mode

For the other supported shapes, you get the corresponding Arnold shape.

[SItoA] Arnold, ICE, and Shapes


particle_shape
SItoA translates ICE particle shapes to native Arnold shapes. The supported particle shapes are already documented here, but here’s a little more information about how they are translated.

ICE Shape Arnold Shape
Point points (mode “disk”)
Disc disk
Rectangle box (with 0 height)
Box box
Sphere points (mode “sphere”)
Cylinder cylinder
Cone cone
Instance Shape ginstance

The Segment, Capsule, and Blob shapes are not supported. SItoA skips them and they are not translated into the Arnold scene source.

Object color mode


The Arnold Utility shader has an Object color mode, which assigns colors based on shape names. When we say “shapes”, we don’t mean Maya shape nodes; we mean the Arnold shapes.

C:\solidangle\mtoadeploy\2014\bin>kick -nodes | find "shape"
 box                              shape
 cone                             shape
 curves                           shape
 cylinder                         shape
 disk                             shape
 ginstance                        shape
 implicit                         shape
 nurbs                            shape
 plane                            shape
 points                           shape
 polymesh                         shape
 procedural                       shape
 sphere                           shape

All these nodes have a name parameter (for example, polymesh.name) that is a unique string identifier in the Arnold universe. So when you use the Object color mode, you get a unique color for each node.

If you’re using Softimage, note that SItoA puts the frame number into polymesh.name, so you’ll get a different color on each frame if you use the Object color mode. For example, on frame 5 a polymesh might be named “Dog_Mesh.SItoA.5000”, and on frame 6, “Dog_Mesh.SItoA.6000”.

In this render region comparison, you have frame 5 on the left, and frame 6 on the right:
dog_color_mode

In a case like this, you would use the Object ID color mode instead. SItoA automatically assigns unique IDs to the shape nodes (MtoA doesn’t).