kick checks the current working directory for plugins (shaders and procedurals). That means kick tries to load all .dll/.so/.dylib files in the current directory.
So if you do this:
Then you’ll get a warning like this (plus a pop-up System Error dialog that says “Qt5Core.dll is missing from your computer”).
loading plugins from .
WARNING | unable to load dynamic library .\ai_renderview.dll: The specified module could not be found.
On OSX, the warning would say ./libai_renderview.so, and on Linux, ./libai.so
Notice the “loading plugins from .” The single period, or dot, represents the current directory.
The solution? Don’t run kick in the MtoA bin folder. Don’t run kick in an any folder where there are non-plugin libraries.
Any time you see “node … is not installed” and “unresolved reference” warnings when you try to kick an ASS file exported from Maya, the problem is missing MtoA shaders.
00:00:00 18MB WARNING | [ass] line 259: node "MayaFile" is not installed
00:00:00 18MB WARNING | [ass] line 288: node "MayaShadingEngine" is not installed
00:00:03 23MB WARNING | [ass] line 238: pSphereShape1.mtoa_shading_groups: unresolved reference to 'aiStandard2SG'
00:00:03 23MB WARNING | [ass] line 137: aiSkyDomeLightShape1.color: unresolved reference to 'file1'
00:00:03 23MB WARNING | [ass] line 188: pPlaneShape1.shader: unresolved reference to 'aiStandard1SG'
00:00:03 23MB WARNING | [ass] line 197: pPlaneShape1.mtoa_shading_groups: unresolved reference to 'aiStandard1SG'
00:00:03 23MB WARNING | [ass] line 229: pSphereShape1.shader: unresolved reference to 'aiStandard2SG'
When you render with kick, you need to specify the location of the MtoA shaders. You can do this several ways:
The -o flag changes the output path for the beauty AOV only. For other AOVs, kick still uses the output paths specified in the ASS file (the AOV output paths are specified by the filename parameter of the driver nodes in an ASS file).
It is possible, however, to use kick -set to change the output path and file name of specific AOVs, but you’d have to know the AOV names in advance. For example:
kick -set defaultArnoldDriver@driver_exr.RGBA.direct_diffuse.filename "C:/temp/direct_diffuse.exr" -i example.ass
Some customers have reported a problem using a render manager (Muster, Tractor, Deadline) to render jobs with kick, typically via a wrapper script. The problem is that kick tries to read from STDIN instead of loading the specified ASS file. In the log, you’d see this:
00:00:00 0MB | [ass] reading from stdin ...
A workaround is to add the -nstdin flag (Ignore input from stdin) to the kick command line.
If you render a scene that has Skip License Check enabled, you’ll get the Arnold watermark. One way to make sure this doesn’t happen is to turn off Skip License Check from the command line:
render -r arnold -ai:slc off some_scene.mb
kick -set options.skip_license_check off -dp -dw some.ass
You might also want to enable Abort on License Fail (-ai:alf for render, -set options.abort_on_license_fail for kick).
kick -tree prints the shading network for a shader node. For example, given this:
You can print out the shader tree for the standard shader like this:
%KICK_PATH%\kick.exe -tree %NODE% -i %ASS_FILE% -l %SHADER_PATH%
For a [simple] shading tree that looks like this:
You would get this:
+-Kd_color = txt2d_image_explicit:Sources.Materials.DefaultLib.Material.Image.SItoA.41000.2
| +-tex = sib_image_clip:Sources.Materials.DefaultLib.Material.noIcon_pic.SItoA.41000.3
+-opacity = txt2d_image_explicit:Sources.Materials.DefaultLib.Material.Image.SItoA.41000.2
+-tex = sib_image_clip:Sources.Materials.DefaultLib.Material.noIcon_pic.SItoA.41000.3
max depth: 2
total shaders: 5
cycles detected: 0
Notice that txt2d_image_explicit and sib_image_clip are counted twice, because those branches are plugged into two different ports on the standard shader.
Setting up the environment right is what often goes wrong. Running kick -licensecheck from inside Softimage is a quick way to check that you set up the environment variables correctly.
Here’s two lines of Python that will open a command prompt and run kick -licensecheck (on Windows).
from subprocess import Popen
Popen(["cmd", "/K", XSIUtils.BuildPath( Application.Plugins('Arnold Render').OriginPath, 'kick.exe' ), "-licensecheck"])
Here’s the same thing, but broken down a bit for legibility:
si = Application
p = si.Plugins('Arnold Render')
sKick = XSIUtils.BuildPath( p.OriginPath, 'kick.exe' )
from subprocess import Popen
Popen(["cmd", "/K", sKick, "-licensecheck"])