The valence of a vertex is the number of edges connected to that vertex. In Arnold, the maximum valence is 255 (that’s because of the data type we use to store the valence; we minimize the memory requirements since this is stored per-vertex).
If a mesh in the scene has a vertex with more than 255 edges, you’ll get a WARNING like this:
[polymesh] example_mesh: mesh has at least a vertex with valence higher than 255, disabling subdivision
But if the adaptive subdivision results in a vertex with too many edges, you’ll get an ERROR:
ERROR: [arnold] [subdiv] example_mesh: edge (144578,287741) in face 263433 has a vertex that exceeded the max valence limit of 255
If the MtoA plug-in does not load and you get a “The specified procedure could not be found” error like this:
// Error: line 1: Unable to dynamically load : C:/solidangle/mtoadeploy/2016/plug-ins/mtoa.mll
The specified procedure could not be found.
// Error: line 1: The specified procedure could not be found.
then there’s a few basic things you need to check first.
Does your processor support SSE4.1?
Support for SSE4.1 is a minimum requirement. You won’t be able to load MtoA or use Arnold if your processor doesn’t support SSE4.1.
Check the environment in Maya
For example, does the PATH include any older versions of MtoA? If you’re on Windows, run the MEL command system(“set”) to get the environment. On OSX or Linux, run system(“printenv”).
Look for any environment variable that has an Arnold or MtoA folder in it. For example, on Windows, you should not have any MtoA bin folders in PATH.
Get a Process Monitor log
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:
If mtoa.mll is not listed in the Plug-in Manager, that means that Maya did not find the MtoA module file (mtoa.mod). And if you try to manually load mtoa.mll, you’ll get errors like this:
// Error: file: C:/Program Files/Autodesk/Maya2016/scripts/others/pluginWin.mel line 781: Unable to dynamically load : C:/solidangle/mtoadeploy/2016/plug-ins/mtoa.mll
The specified module could not be found. //
// Error: file: C:/Program Files/Autodesk/Maya2016/scripts/others/pluginWin.mel line 781: The specified module could not be found. (mtoa) //
To load MtoA, you need to make sure that Maya finds the MtoA module file.
By default, the MtoA installer puts the mtoa.mod file in the user’s modules folder. For example:
If you installed MtoA using one user account, and try to run Maya with a different user account, Maya will not find the module file.
The module file has to be in the MAYA_MODULE_PATH. For example, for the user account “StephenBlair”, here are the default places where Maya looks for modules:
In this case, a scene that used to render yesterday, now just resulted in a blue render view, like this:
Anytime the render view doesn’t update when your render, you can be fairly sure there’s some ERROR in the Arnold log.
In this case, the problem was a broken path to the IES file used by a photometric light. In the Arnold log, there was this ERROR:
00:00:04 870MB ERROR | [photometric] can't open C:/Assets/IES/example.ies
It’s easy to say “check the log”, but where do you find the log? It’s not like there’s a nice, color-coded button (red for error) on the render view UI that will pop up the log for you.
On Windows, you should see the Arnold log in the Output Windows. However, I find that this happens only when I start Maya from the command line. If I start Maya from the Windows Start menu, the Arnold log messages don’t show up in the Output Window. So I have to enable file logging, and check the log file.
On OSX and Linux, you’ll also have to enable file logging, unless you start Maya from a terminal.