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 a clean install of MtoA doesn’t work (and the computer does support
SSE4.1), then “The specified module could not be found.” usually means there’s a missing dependency. Dependency Walker is a decent, if aging, tool for checking out dependencies, but for leaving no stone unturned, I prefer Process Monitor.
The MtoA plugin (mtoa.mll) depends on a handful of files only. Here’s the log of loaded DLLs for a working MtoA:
Here’s a quick walkthrough (no audio) of how to get a Process Monitor log:
How can you update the paths used to load textures, standins, or volumes? Use
You can use dirmap to update the paths for the following nodes:
aiImage (Image Name)
MayaFile (Image Name)
For example, if I have a scene file that uses Linux paths like
/server/assets/textures/noicon.tx, I can do this: dirmap -en true;
dirmap -m "/server/assets" "D:/Assets/";
After I run that, when I load a scene Maya will replace “/server/assets” with “D:/Assets” in all file paths.
You can test your directory mapping (dirmap) like this:
dirmap -cd "/server/assets/textures/noicon.tx";
// Result: D:/Assets/textures/noicon.tx //
Enable dirmap with
dirmap -en, and then create a directory mapping with dirmap -m Load a scene and the dirmap is applied.
TIP For batch rendering, you can use a pre-render script to apply dirmap.
BONUS TIP: dirmap does not update a path if the path is valid. dirmap replaces paths that cannot be resolved.
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 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.
To jitter color with user data, you need to connect an
aiUserDataInt to the data input parameter, like this:
The user data is an
mtoa_constant attribute on the shape. For example, if add an extra attribute named mtoa_constant_jitterID to some shapes, then you can use aiUserDataInt to read the jitterID.
jitterID is set on the shape
Jitter by user data (with a little jitter per face too)
aiUserDataInt reads the jitterID
If you want to use the shapes as standins, and be able to set the
jitterID in the scene, then export the shapes without the mtoa_constant_jitterID attribute. In the scene, you’ll be able to add mtoa_constant_jitterID to the aiStandin node. The aiUserDataInt node in the ASS file will use that jitterID.
You can get individual log files for each frame:
Arnold Render Settings, go to the Diagnostics tab. In the
Verbosity Level list, click Warnings + Info. Click the
File check box. Click the folder icon and choose a folder for the Arnold log files.
Or you can check the
MayaRender log, which will be one log file, with the log messages for every frame.
On OSX, open the
Console and look for ~/Library/Logs/Maya/mayaRender.log
Don’t download Arnold from your Autodesk Account.
not what you need.
It’s the Arnold SDK.
You don’t need that.
You need an Arnold plugin, like
MtoA or MAXtoA or C4DtoA or HtoA or KtoA or SItoA.
Get it here: