Or: how to fix the
node “ xgen_procedural” is not installed problem.
For example, suppose you want to render XGen hair in CINEMA 4D on macOS.
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.
You can use use
color_correct with alpha_is_luminance enabled, like this:
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
There’s two denoisers. Here’s when to use them:
OptiX Denoiser for fast (GPU-powered), slightly-lower quality denoising of IPR Use the
Arnold Denoiser (aka noice) for high-quality denoising of final frames and animation sequences
For more info, check the
In this case, when the user tried to render after enabling the OptiX denoiser, they got this error:
ERROR | [gpu] OptiX version 0.30.91 is lower than the minimum required version 5.0.0
This was with MtoA 3.0.1, which means
So, that means there is an incompatible version version of the OptiX library on the system, and it’s being loaded instead of the OptiX that ships with MtoA.
I probably could have just checked the PATH setting, but I used Process Monitor to absolutely sure, and I found this:
The problem is that another renderer added itself to the PATH. That’s a bad thing 😉
The solution? Remove that folder from PATH. Create a batch file or wrapper script to set the required environment when you start Maya to use the other software. Rather like the mtoa module file sets PATH when you start Maya.
NOTE In previous versions of MtoA, this would prevent MtoA from even loading.