If you see this warning when you render
Warning: [mtoa] [translator polymesh] ShadingGroup exampleSG has no surfaceShader input
it’s because a
shadingEngine node either has nothing connected to the surfaceShader port, or (more likely) it has an unknown node plugged into surfaceShader.
For example, if you load a scene that was set up with a different renderer, and that renderer is not loaded, then you’ll get some “ShadingGroup has no surfaceShader input” warnings.
This error means that you are trying to render multiple AOVs into a single file, and the file format (PNG in this example) does not support that.
JPEG, PNG, and TIFF cannot have multiple AOVs in a single file. The AOVs have to be rendered in separate files.
If you get this error, check the
Common tab. If you don’t see the <RenderPass> token, then you’re going to get the “more than one output statement was associated with single layer driver” error.
For JPEG, PNG, and TIFF, you need the
Normally, MtoA will automatically add the
<RenderPass> token for you. But sometimes Merge AOVs gets enabled for EXRs, and then the Image format is changed to another format, like PNG.
So just switch back to EXR and disable
Merge AOVs. Then switch back to the other image format.
If you want to control object visibility with operator, or the Arnold Python API, or by editing an ASS file, you need to understand Arnold’s visibility parameter.
In the UI, the object visibility options look like a bunch of separate parameters:
but in Arnold, all those options are stored in one
For example, if an object is visible to the camera (primary visibility), and to transmission (both diffuse and specular), then that’s
Why 13? Because 13 = 1 + 4 + 8
camera rays = 1
diffuse transmission rays = 4
specular transmission rays = 8
The Arnold visibility parameter tells Arnold the rays to which the object is visible.
visibility 0 means the object isn’t visible to any rays
visibility 255 means the object is visible to all rays
visibility 253 means the object isn’t visible to shadow rays (so the object does not cast shadows).
Here’s the decimal
values for all the different ray types.
To figure out the visibility, just add up the values for the rays you want.
Ray type Decimal Value Camera (Primary Visibility) 1 Shadow (Casts Shadows) 2 Diffuse transmission 4 Specular transmission 8 Volume 16 Diffuse reflection 32 Specular reflection 64 SSS (subsurface) 128
You can use kick to render with debug shading. Here’s the flags to use:
-is to ignore the shaders assigned to the shapes
When you ignore shaders, a default utility shader is used to render the scene.
-sm sets the shade mode ( ndoteye lambert flat ambocc plastic metal)
-cm sets the color mode (color ng ns n bary uv u v dpdu dpdv p prims uniformid wire polywire obj edgelength floatgrid reflectline bad_uvs nlights id bumpdiff pixelerror)
Here’s some examples that show how to kick with different types of debug shading (I’ve used the Arnold Render View debug shading modes for these examples)
Basic: disable all shaders in the scene, switching to a gray ‘ndoteye’ shader; a very fast shading mode.
kick -is -sm notdoteye
Lighting: renders the scene with a white lambert shader
kick -is -sm lambert
Occlusion: use ambient occlusion shading
kick -is -sm ambocc
Wireframe: displays geometry as a wireframe
kick -is -cm polywire
kick -is -sm ndoteye -cm polywire
Normal: visualizes the normal vector (between 0 and 1, in tangent space)
kick -is -sm flat -cm n
UV: displays the coordinates of the primary UV set (red=U, green=V)
kick -is -sm flat -cm uv
Primitive ID: displays random colors based on the per-primitive (triangle, curve) index
kick -is -sm flat -cm prims
Barycentric: displays intra-primitive parametric coordinates (barycentric for triangles, parametric length, and width for curve segments)
kick -is -sm flat -cm bary
Object: displays random colors based on the per-object ID
kick -is -sm flat -cm obj
Arnold 5.1 adds operators, which among other things, allow you to override parameters in ass files loaded by procedural nodes.
Here’s a quick example using the brand new
I exported some particles from Softimage, loaded them into Maya with an aiStandin (aka an Arnold procedural), and then used a
set_parameter operator to scale the radius by 0.5
Note that I connect my operator by setting the
Target Operator in the Render Settings.
I can chain two set_parameter operators together, to set the mode and then scale the radius:
First, here’s some Arnold renders of a few old-time Softimage models:
And now, here’s the announcement:
Softimage to Arnold (or SItoA), the Arnold plugin for Autodesk Softimage is being made available to the community under an Apache2.0 open source license at:
This repository contains the official SItoA plugin source code. Solid Angle, the company behind the Arnold renderer, and now part of Autodesk, developed the SItoA plugin commercially from 2009 to 2017.
After the Softimage end-of-life announcement in April 2014, Solid Angle committed to continue the development and maintenance of SItoA for at least a year, and then extended this period until July 2017, porting SItoA to the new Arnold 5 API along the way.
Please submit your issues and pull requests on github, the old Trac server will remain available for a while as read-only but we won’t accept any new users.
We will continue to monitor and review pull requests submitted to this repo on a voluntary basis, but will not release official builds any more.
Before it was open-sourced, throughout the years, SItoA has been developed by:
With contributions by:
Special thanks to all the users who passionately provided feedback, production assets, bug reports and suggested features during those years.
You can export an ASS file from Maya (with the XGen primitives) and then use an Arnold Procedural to load the ASS file into 3ds Max.
You need to add these two folders to the system environment variable
For example, you can copy this:
C:\Program Files\Autodesk\Maya2018\plug-ins\xgen\bin;C:\Program Files\Autodesk\Maya2018\bin;
and paste it at the beginning of the current
Restart 3ds Max after you do this.
Then add the MtoA procedurals folder to the
Plugin Search Path:
You’ll get an error like this if your project path has characters like
é or ü or Ô in it. // Error: [driver_exr] defaultArnoldDriver@driver_exr.RGBA: can't create file ".exr": OpenEXR exception: Permission denied. //
// Error: [driver_jpeg] defaultArnoldDriver@driver_jpeg.RGBA:
can' t create file ". jpg": Unable to open file ". jpg”
// Error: [driver_png] defaultArnoldDriver@driver_png.RGBA: can't create file ".png": Could not open file ".png"
Arnold can’t create the output file, because the special characters mess up the resolution of the output path, which ends up as an empty string.
So with no path provided, the ouput driver tries to write “.jpg” in the current working directory, which is probably something like
Use plain text characters for your project folders.
If you see something like this:
[Arnold]: MAXtoA_Shaders.dll was compiled against non-compatible Arnold 220.127.116.11
it usually means you have an older Arnold trying to load something compiled with a newer Arnold. There’s two common reasons for this happening:
The system PATH includes the location of the older Arnold, so the older Arnold is loaded instead of the Arnold version included with the plugin.
The plugin install is messed up, and has the wrong Arnold version in it.
If you see this error in the script editor
# Error: Register failed for arnoldAOVChildSelector #
that means your preferred render layer setup is Legacy Render Layers (so MtoA fails to register something that’s used for the new Render Setup).
If you’re not using Render Setup, then you can safely ignore this error.