Here’s a simple kick trick to get a list of AOVs and LPEs.
-laovs flag lists all the AOVs in the loaded scene, but if you give kick no input, you’ll get a list of all built-in AOVs defined by Arnold.
For example, on Windows, run
kick -laovs -i Nul
On Linux or macOS, run
kick -laovs -i /dev/null kick -laovs -i Nul
Type: Name: LPE:
VECTOR2 motionvector (~)
RGBA RGBA C.*
VECTOR N (~)
FLOAT Z (~)
RGB direct C[DSV]L
RGB indirect C[DSV][DSVOB].*
VECTOR Pref (~)
RGB albedo C[DSV]A
RGB emission C[LO]
RGB diffuse_direct C<RD>L
RGB background CB
RGB denoise_albedo ((C<TD>A)|(CVA)|(C<RD>A))
RGB sss_albedo C<TD>A
RGB specular_albedo C<RS[^'coat''sheen']>A
RGB diffuse C<RD>.*
FLOAT cputime (~)
RGB diffuse_indirect C<RD>[DSVOB].*
RGB sss_indirect C<TD>[DSVOB].*
RGB diffuse_albedo C<RD>A
FLOAT volume_Z (~)
RGB specular C<RS[^'coat''sheen']>.*
RGB coat_direct C<RS'coat'>L
RGB specular_direct C<RS[^'coat''sheen']>L
RGB specular_indirect C<RS[^'coat''sheen']>[DSVOB].*
RGB volume_direct CVL
RGB coat C<RS'coat'>.*
RGB coat_indirect C<RS'coat'>[DSVOB].*
RGB coat_albedo C<RS'coat'>A
RGB sheen C<RS'sheen'>.*
RGB transmission C<TS>.*
RGB transmission_direct C<TS>L
RGB transmission_indirect C<TS>[DSVOB].*
VECTOR2 AA_offset (~)
RGB transmission_albedo C<TS>A
VECTOR P (~)
RGB sheen_direct C<RS'sheen'>L
RGB volume CV.*
RGB sheen_indirect C<RS'sheen'>[DSVOB].*
NODE shader (~)
RGB sheen_albedo C<RS'sheen'>A
RGB sss C<TD>.*
RGB sss_direct C<TD>L
RGB volume_indirect CV[DSVOB].*
RGB volume_albedo CVA
FLOAT A (~)
FLOAT ZBack (~)
RGB opacity (~)
RGB volume_opacity (~)
FLOAT raycount (~)
UINT ID (~)
NODE object (~)
FLOAT AA_inv_density (~)
RGBA RGBA_denoise (~)
(~) No opacity blending
You can export a Bifrost scene to an Arnold ass file and then render it with kick.
Just use the
-l flag (or the ARNOLD_PLUGIN_PATH environment variable) to point to the Arnold plugins that comes with the Bifrost install. For example, on Windows: kick -v 5 -dp bifrost_aeroColors.ass
-l "C:\Program Files\Autodesk\Bifrost\Maya2020\220.127.116.11\bifrost\arnold-18.104.22.168"
kick render of a Bifrost graph
In the Arnold log, we see that Arnold loads the procedural nodes for Bifrost:
00:00:00 88MB | loading plugins from C:\Program Files\Autodesk\Bifrost\Maya2020\22.214.171.124\bifrost\arnold-126.96.36.199 …
00:00:00 100MB | arnold_bifrost.dll: bifrost_graph uses Arnold 188.8.131.52 00:00:00 100MB | arnold_bifrost.dll: bifrost_object uses Arnold 184.108.40.206 00:00:00 100MB | arnold_bifrost.dll: bifrost_multires_volume uses Arnold 220.127.116.11 00:00:00 100MB | arnold_bifrost.dll: bifrost_multires_implicit uses Arnold 18.104.22.168 00:00:00 100MB | arnold_bifrost.dll: bifrost_volume uses Arnold 22.214.171.124 00:00:00 100MB | arnold_bifrost.dll: bifrost_points uses Arnold 126.96.36.199 00:00:00 100MB | arnold_bifrost.dll: bifrost_implicit uses Arnold 188.8.131.52 00:00:00 100MB | arnold_bifrost.dll: bifrost_polymesh uses Arnold 184.108.40.206 00:00:00 100MB | arnold_bifrost.dll: bifrost_blocks uses Arnold 220.127.116.11 00:00:00 100MB | loaded 9 plugins from 1 lib(s) in 0:00.06
In other applications, like CINEMA 4D or Houdini or Katana, you can do the same thing by setting the
Plugin Search Path.
You can use kick to render with debug shading. Here’s the flags to use:
-is to ignore the shaders assigned to the shapes
When you ignore shaders, a default utility shader is used to render the scene.
-sm sets the shade mode ( ndoteye lambert flat ambocc plastic metal)
-cm sets the color mode (color ng ns n bary uv u v dpdu dpdv p prims uniformid wire polywire obj edgelength floatgrid reflectline bad_uvs nlights id bumpdiff pixelerror)
Here’s some examples that show how to kick with different types of debug shading (I’ve used the Arnold Render View debug shading modes for these examples)
Basic: disable all shaders in the scene, switching to a gray ‘ndoteye’ shader; a very fast shading mode.
kick -is -sm notdoteye
Lighting: renders the scene with a white lambert shader
kick -is -sm lambert
Occlusion: use ambient occlusion shading
kick -is -sm ambocc
Wireframe: displays geometry as a wireframe
kick -is -cm polywire
kick -is -sm ndoteye -cm polywire
Normal: visualizes the normal vector (between 0 and 1, in tangent space)
kick -is -sm flat -cm n
UV: displays the coordinates of the primary UV set (red=U, green=V)
kick -is -sm flat -cm uv
Primitive ID: displays random colors based on the per-primitive (triangle, curve) index
kick -is -sm flat -cm prims
Barycentric: displays intra-primitive parametric coordinates (barycentric for triangles, parametric length, and width for curve segments)
kick -is -sm flat -cm bary
Object: displays random colors based on the per-object ID
kick -is -sm flat -cm obj
New in Arnold 5.0.2! You can press
T to get a cputime heat map. From the Arnold release notes:
Added cputime heatmap view to : When using
kick you can now toggle between viewing kicks default output and a cputime heatmap with the
T key. The mapping of the heat map can be scaled with the
To get the cputime heat map, you have to run kick interactive (eg with the
-ipr flag): kick -ipr example.ass
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.
Suppose you have a load of ASS files that were exported with the Tiled option disabled. How could you re-enable the Tiled option without re-exporting the ASS files?
kick -set flag, that’s how: kick -set display_exr.tiled on
That will set the
tiled parameter for all EXR driver nodes in the ASS file.
If you want to set the flag for a specific driver node, you need to know the driver node name.
kick -set defaultArnoldDriver@driver_exr.RGBA.tiled on
tiled for the driver_exr node named defaultArnoldDriver@driver_exr.RGBA.
You can make your ASS files portable across different platforms by using relative paths and the texture search path. For example, if all textures are specified by relative paths like “textures/noicon.tx”, then you just have to set options.texture_searchpath to specify the location of the textures folder.
kick -set options.texture_searchpath //server/project/ -dp -dw example.ass
Or if the texture search path is set to an environment variable
To use relative paths for texture file names in nodes like MayaFile, aiImage, aiPhotometricLight, and aiSkydomeLight, you just need to do the following:
Put a relative path in the file name box (for example, in Photometry File box of an aiPhotometricLight node, or the Image Name box of an aiImage node)
Set the Texture Search Path (Render Settings > System > Search Paths)
Clear the Absolute Texture Paths check box
You can put multiple locations, using either : or ; to separate the paths (Arnold supports both separators on all platforms: OSX, Linux, and Windows)
You can use environment variables by putting the environment variable name in square brackets. For example:
Forward slashes work on all platforms.
MtoA appends the current project’s sourceimages folder to the texture search path.
You may wonder: why can’t I use
kick -set options.shader_searchpath to tell Arnold where to find shaders?
Well, it’s because kick loads the ASS file first, then applies the
kick -set parameter overrides. And also, Arnold when loads an ASS file, Arnold automatically loads shaders from the shader_searchpath as soon as Arnold loads the options node.
Here’s the sequence of events:
kick loads all plugins specified by -l or by ARNOLD_PLUGIN_PATH before it loads the ASS file
kick loads the ASS file. When Arnold loads the
options node, Arnold automatically loads all plugins specified by options.shader_searchpath.That’s why the options node is at the top of an ASS file: so Arnold can load any required shaders before loading the shader nodes. It you move the options to bottom of the ASS file, the shader nodes in the ASS file won’t be loaded. Finally, after all the nodes are loaded, the
-set parameter overrides are applied. At this point, it’s too late for any shaders from the -set options.shader_searchpath loacation. The corresponding nodes were already discarded during the loading of the ASS file.
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:
-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). driver_exr
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