I'm writing a script that reads an .ass file and conforms texture formats and locations to a standard. However, with Layer nodes, the script does not seem to read them, and once the updated .ass file is written using AiASSWrite() it is excluded, resulting in broken links.
I am using the AI_NODE_ALL mask in both the load and iterator, still nothing. It's as if AiASSLoad() knows nothing about the Layer nodes and ignored them.
C4D Exports the layer nodes just fine, from both the GUI and from call c4d.CallCommand()
This is especially problematic as Arnold uses layer nodes to work with selection groups.
Solved! Go to Solution.
Solved by Stephen.Blair. Go to Solution.
Layers are a C4DtoA thing, not Arnold.
You need to have the c4dtoa_shaders in your shader search path before you load an ass file.
If you enable logging before you load an ass file, you'll see errors for unrecognized nodes (unless you add the c4dtoa_shaders to the shader search path eg ARNOLD_PLUGIN_PATH)
As Stephen said, the layer shader is part of the c4dtoa_shaders library, so you have to load it first via the AiLoadPlugins() function. The binary is in the [C4D install]/plugins/C4DtoA/shaders folder.
I figured it was along these lines, since HtoA doesn't have Layers, just wasn't sure what I needed. If the proper Plugin Path is included in the ass file's options, will arnold load the plugins automatically, without AiLoadPlugins()?
Thank you! Along with Peter's help I got it figured out and working perfectly!