4.2.0 - Arnold for Cinema4d
30 Mar 2022
C4DtoA 4.2.0 uses Arnold 7.1.1.0 and is a major feature release bringing full support to the Arnold Node Material which is now out of beta.
- Drag & drop nodes to the node editor does not work as expected:
- Drag & drop an Arnold Material to create a reference. A Cinema 4D Object Operator node is created instead of an Arnold Material reference node.
- Drag & drop an object to create an object reference. A Cinema 4D Object Operator node is created instead of an Arnold object node.
- Drag & drop a Vertex Map to create a Vertex Map shader. A Cinema 4D Object Operator node is created instead of an Arnold Vertex Map shader.
- Ctrl + drag a shader in the node editor in S24 creates two copies instead of one. shift + drag and Shift + Alt + drag does not work.
Installation
- Download the Arnold for Cinema4D plugin
- Follow these installation instructions .
System Requirements
Cinema 4D
- R21.026 and above
- R23.008 and above
- S24.111 and above
- R25.010 and above
Windows 10 or later, with the Visual Studio 2019 redistributable.
Linux with at least glibc 2.17 and libstdc++ 4.8.5 (gcc 4.8.5). This is equivalent to RHEL/CentOS 7.
macOS 10.13 or later.
CPUs need to support the SSE4.1 instruction set. Apple Mac models with M series chips are supported under Rosetta 2 mode.
GPU rendering works on Windows and Linux only and requires an NVIDIA GPU of the Ampere, Turing, Volta, Pascal, or Maxwell architecture. We recommend using the 495.46 or higher drivers on Linux and 511.09 (Quadro/GeForce), or higher on Windows. See Getting Started with Arnold GPU for more information.
Optix™ denoiser requires an NVidia GPU with CUDA™ Compute Capability 5.0 and above.
The cache will also need to be re-populated after installing a new Arnold version, updating to a new NVIDIA driver , or changing the hardware configuration of GPUs on the system. More information can be found here .
Enhancements
Node Material support is out of BETA
- Ported shaders to the Node Editor:
- Substance Shader is now available. (C4DTOA-2047)
- Value shader is now available. (C4DTOA-2069)
- Object shader is now available. (C4DTOA-2409)
- Light blocker is now available. (C4DTOA-2060)
- User data shader popup menus are now working properly. (C4DTOA-2408)
- State shader labels : Variables in the state shaders are now displayed with a readable label instead of just the short variable name. (C4DTOA-2688)
- Shader output components in the Node Editor : Color and vector components (e.g. R, G, B, A, X, Y, Z) are now available as shader output ports in the Node Editor and can be linked to other shaders. (C4DTOA-2667)
- Matrix type shader parameters : Matrix type parameters are now displayed properly in the Node Editor. (C4DTOA-2406)
- Node list type parameters : Node list type parameters are now displayed properly in the Node Editor. (C4DTOA-2412)
- Directory browser input : Directories can now be selected and specified in shader UIs in the Node Editor (e.g. ramp_rgb shader). (C4DTOA-2403)
- Debug shader : Node Materials can be saved as custom debug shader presets, available in the IPR window. (C4DTOA-2697)
- Autoconnect first shader : The first shader created in the Node Editor is now automatically connected to the shader or displacement port of the end node. (C4DTOA-2687)
- Automatically create custom AOVs : Custom AOVs are now created automatically, when setting the AOV name in an aov_write shader. (C4DTOA-2691)
- Shortcuts : Shortcuts (e.g. connect to the shader root port via Alt+W~1, etc.) from the legacy editor are ported to the Node Editor. (C4DTOA-2701)
- Drag & drop : Image shader is created now when dropping an image file to the Node Editor (e.g. from the File Browser). (C4DTOA-2702)
- Export Arnold Node Materials to ASS or MaterialX : Arnold Node Materials can now be exported to ASS or MaterialX format via the Arnold > Utilities > Material > Export... plugin menu. (C4DTOA-2650)
- Import ASS or MaterialX to Arnold Node Materials : Materials (shader graphs) from ASS or MaterialX format are now imported to Arnold Node Materials via the Arnold > Utilities > Material > Import... plugin menu, if Node Material is set as the default material system in the Preferences. (C4DTOA-2394)
- Convert legacy Arnold Materials to Node Materials : Legacy materials can now be converted to the new Node Materials via the Arnold > Utilities > Material > Convert plugin menu, from the Arnold Shader Network Editor menu or via the Alt+W
C / Alt+WD shortcuts. (C4DTOA-2588) - Python support : A python package is added to the plugin, which allows users to easily create and edit Arnold Node Materials and legacy Arnold materials from scripts. (C4DTOA-2443)
- Ported shaders to the Node Editor:
Meter unit vector type in the value shader : The value shader has now a mode to input vectors in meter unit. (C4DTOA-2706)
Global matrix in the object shader : The global matrix of an object can now be accessed in the object shader. (C4DTOA-2707)
Arnold Volume and Arnold Procedural bounding box in the viewport : The Arnold Volume and Arnold Procedural object always shows a bounding box in the viewport, even if they are empty. (C4DTOA-2700)
DLL search path in the Preferences : A list of folders can be defined in the Preferences, which are searched for external dependencies of third-party Arnold plugins (e.g. shaders, procedurals, volumes). (C4DTOA-2695)
Custom data type python API : Reading and setting Arnold specific custom data type parameters (e.g. driver save path, shader link in lights, etc.) are now included in the python API shipped with the plugin. (C4DTOA-2694)
Scene export python API : Scene export method is now added to the arnold_scene module of the python API shipped with the plugin. (C4DTOA-2709)
Takes in command line scene export : Takes are now supported when exporting the scene to Arnold (ASS or USD) from the command line. (C4DTOA-2708)
Improved IPR interactivity: GPU and CPU interactivity is improved. ARNOLD-11981, ARNOLD-12007
Stability improvements: We've improved the stability of Arnold, especially when using multiple render sessions.
Per axis texture in triplanar: The triplanar shader can now optionally use different textures for each axis. ARNOLD-11708.
input_per_axis: disabled (default) input_per_axis: enabled A wide range of shading effects such as snow, dust, sand, and moss, can be achieved using input_per_axis (Y).
A video that shows how to use the input_per_axis can be found here .
Flip_on_opposite_direction in triplanar: A new parameter called flip_on_opposite_direction can also be used to control the behavior of the shader on faces facing the corresponding negative axis. ARNOLD-11615.
flip_on_opposite_direction: enabled (default) flip_on_opposite_direction: disabled Reduced overhead of running Imagers in IPR: Imagers will no longer always run after every progressive pass or bucket update. This can give a substantial speedup with expensive to run imagers. ARNOLD-11760
Better startup and update times with atmosphere shader: Starting renders and updating parameters when using a high number of AA samples with a volume_scatter atmosphere shader should now be much faster. ARNOLD-5503
Render times of a simple scene with volume_scatter.samples=30:
AA AA_max Arnold 7.0 Arnold 7.1 4 50 5:28min (node update: 5:20min) 8 sec (node update: 0 sec) Case insensitive output image file extension:
AiFindDriverType()
is now case insensitive, so asking, for instance, for a "png", "PNG", or "Png" will all return the png driver. This can be observed withkick -o
, which will now work for different case types. ARNOLD-11934Updated MaterialX to 1.38.3: We now use MaterialX 1.38.3. Surface materials defined in a nodegraph are now supported. ARNOLD-10534, ARNOLD-11903
Updated Alembic to 1.8.3: The alembic procedural has been upgraded to use version 1.8.3 of the alembic library. ARNOLD-11973
Faster TextureResolveUseExistingTx: The
TextureResolveUseExistingTx
stage is now much faster when many threads are trying to open textures for the first time with the use existing tx option enabled. On a 128-core machine we saw about an 8x speedup. ARNOLD-11689Faster per-pixel imagers: We removed overhead in imagers that can execute independently on each pixel. The exposure and tonemap imagers, for instance, are now significantly faster. This likely will be most noticed when interacting in IPR with small buckets. Note that bloom and denoising imagers require access to all pixels and so will not benefit from this optimization. ARNOLD-12011
Faster bloom imager: The bloom imager has been optimized. In one test we saw a 10% performance improvement. ARNOLD-11568
AOV denoising with the OptiX denoiser: Upgraded from the Optix 6 to Optix 7 denoiser. This newer denoiser supports denoising AOVs in a way that allows the denoised result to be compositable. Prevoius OptiX denoisers had no guarantees that the denoised results would combine correctly. ARNOLD-11726
Original beauty Denoised beauty Denoised diffuse AOV Denoised specular AOV Denoised diffuse + denoised specular Upgraded OIIO to 2.4.0: This allowed for fixing several defects listed in the Bug Fixes section. ARNOLD-11651, ARNOLD-11785, ARNOLD-11790
Invert view and display transform for textures using OCIO: When using an explicit OCIO or the default color manager, it is possible to specify both a display and view transform when writing outputs, using the View ( Display ) syntax. It is now possible to use the same syntax for input color transforms as well. For example, reading a texture using the ACES 1.0 SDR-video ( sRGB ) color space will correctly invert a file with a view transform baked in. (ARNOLD-11961).
Adjust how often imagers are run during IPR: A new options setting has been added called
options.imager_overhead_target_percent
which can be used to control how often imagers should run during a render. Animager_overhead_target_percent
setting of 0 will cause the imagers to only run at the end of the render. The default value of 1 will periodically run the imager during the render so that the overhead from running the imager is no more than approximately 1%. ARNOLD-11750Noice imager runs only at end of render: The noice imager, which is generally too slow for interactive IPR, will no longer run during a render and instead is only run at the end of the render pass. ARNOLD-11761
Overrides for specific instances in the instancer : Instead of specifying a value for all instances, overrides for specific instances can be defined by declaring a user data array of
instanceidxs_
prefix on the instancer node. ARNOLD-12142Reference time for OpenVDB volumes: The global
options.reference_time
attribute is now also used as the time the grid data exists, so velocity motion blur is relative to this reference time. Usually this is zero, which for frame-relative time values means "on the frame", which is typical of OpenVDB simulation data. ARNOLD-12143
GPU Enhancements
- Improved GPU IPR interactivity: GPU IPR rendering is now more interactive. ARNOLD-11981
USD Enhancements
- Point Instancer improvements : Per-instance primvars and nested instancers are now handled both in the procedural usd#944 as well as the render delegate usd#482
- Mesh builtin normals : The procedural now reads the builtin USD description for mesh normals usd#962 usd#986
- Curves UVs : The procedural now supports UVs on curves, for per-strand primvars usd#975
- Light-linking : ignoreRoots wasn't supported correctly for light / shadow links in the procedural usd#987
- Shadow parameters : The procedural now reads shadow parameters (enable, color) from USD lights usd#945
- Shader connections to array attributes : The render delegate now supports rendering shader connection to an array attribute. This is needed e.g. to have shader connections on ramps usd#970
- Render tags : Render tags are now taken into account by the render delegate usd#883
- Procedural search path : USD is now properly considering the options procedural_search_path when loading nested procedurals #usd942
- Motion blur with UsdSkel : the procedural now extends the interval used to bake the skinning, so that it includes surrounding integer frames usd#951
- Author defaultPrim in the USD writer : When an Arnold scene is saved as USD, a defaultPrim is now authored, which is needed for nested instances usd#1064
- Don't force export of ArnoldOptions: When exporting USD files, we now store the list of authored frames as custom metadatas in the usd file, and no longer need to force the export of the ArnoldOptions primitive usd#963
- Write shading trees under their material's scope : When authoring shading trees, the shaders are now written under their material's hierarchy. usd#1067
- Support velocity/acceleration in Hydra : Meshes and curves with varying topologies and velocity or acceleration primvars are now supported in the render delegate usd#1039
- Reduce default subdivision level in Hydra : The different subdivision quality settings in Solaris are now interpreted as (0, 1, 2, 3) subdiv_iterations in Arnold, instead of (0, 2, 4, 8) which was too high for Arnold subdivision usd#1056
- Control amount of arnold-usd threads when rendering a usd file : A new environment variable ARNOLD_USD_READER_THREADS allows to control how many arnold-usd threads will be used to translate the usd data to arnold when running kick on a usd file. Default value is 0 and means that all threads will be used usd#1055
- Support light temperature in Hydra : Usd native lights have a light temperature attribute that is now supported in the render delegate usd#1051
- Default to smooth meshes in Hydra : In the render delegate, meshes are now smoothed by default, as in the usd procedural usd#24
- Specify which RenderSettings to use when calling AiSceneLoad : A custom parameter render_settings allows to control which RenderSettings primitive to export to Arnold options node usd#1017
Incompatible Changes
- Relative Scale and Loop Period in the C4D Noise shader : Parameter ids have been changed. When loading an old scene, Relative Scale and Loop Period are set to their default value.
- Warnings about deprecated API usage enabled by default: Warnings about deprecated API usage are controlled by the AI_ENABLE_DEPRECATION_WARNINGS macro, which is now set to 1 by default. This will help you find any use of old Arnold API that might be causing issues. If you still need to disable them for some specific part of your code, they can be disabled by setting AI_ENABLE_DEPRECATION_WARNINGS to 0. (ARNOLD-11751).
- Changes in node_initialize/node_update : Those functions now receive a new parameter for the render session where the node is being rendered. This render session can be used for any API call requiring it to be specified. (ARNOLD-11817)
- Changes in logging API : Logging functions have been modified so that log messages are associated with a universe instead of a render session. This means the
AiMsgSetLogFileFlags
,AiMsgSetConsoleFlags
,AiMsgGetLogFileFlags
andAiMsgGetConsoleFlags
API functions will now require a universe pointer instead of a render session pointer. Also, the log callback will receive a universe pointer parameter (called "universe") instead of a render session pointer. (ARNOLD-11983) - Autodesk Network Licensing version : Arnold 7.1 switches to
ARNOL_2023
licensing.- Single-user subscriptions will work with Arnold 7.1. The plugin installers automatically register the new version. If you do not use a plugin, then after you download Arnold, open the Arnold License Manager and click Register .
- Existing network licenses will not work with Arnold 7.1. Log on to your Autodesk account to generate your new
ARNOL_2023
licenses.
- Arnold 5 porting guide removed. The Arnold_5_Porting_Guide.pdf has been removed. Arnold-11696
Bug Fixes
- C4DTOA-1801 - Crash when curvature shader is used in displacement graph
- C4DTOA-2344 - M onochrome textures appear red once converted to tx
- C4DTOA-2680 - Can not link shader to C4D Noise relative scale in the Node Editor
- C4DTOA-2692 - Opening the IPR window the first time is slow
- C4DTOA-2698 - Incorrect Arnold version in IPR Window title when saved in a layout
- C4DTOA-2712 - Invalid warning in the log when displacement input in the Node Editor is linked
- ARNOLD-11958 - Color correct shader produces incorrect values with small gamma values
- ARNOLD-11852 - Memory leak with imagers when rendering multiple frames
- ARNOLD-11835 - Full frame imagers crash with negative render region
- ARNOLD-11827 - Intel Alder Lake CPUs did not always use high performance cores in Windows
- ARNOLD-11795 - Spotlight penumbra should affect the specular intensity
- ARNOLD-11667 - GPU and CPU+FIS filtering generated sampling patterns that could alias
- ARNOLD-11242 - 'n' key was no longer toggling AI denoisers in kick IPR
- ARNOLD-10400 - Volume motion blur advection computation was incorrect
- ARNOLD-10391 - Volume motion blur used incorrect motion/shutter intervals
- ARNOLD-11889 - Maketx --monochrome-detect should generate Y not R image for exr formats
- ARNOLD-11968 - AiUniverseGetRenderSession returns invalid pointer instead of null if the session was previously destroyed
- ARNOLD-11982 - Texture invalidation in Linux and macOS occurred even when texture was not modified
- ARNOLD-12055 - [GPU] Crash switching from CPU to GPU with optix denoiser
- ARNOLD-10577 - [GPU] Textured skydome_light leaks memory over multiple frames in a session
- ARNOLD-12158 Bucket corners in kick should not be drawn for negative AA passes
- ARNOLD-12154 Poor sample quality when using multiple render sessions
- ARNOLD-12143 Volume velocity motion blur does not support non-normalized shutter intervals
- ARNOLD-12139 The legacy bifrost procedural for Max does not work with an explicit universe
- ARNOLD-12123 Changing the output driver from an operator doesn't work
- ARNOLD-12122 Arnold-7.1.0 slowdown when reading hdr images
- ARNOLD-12119 Crash rendering ramp with one point
- ARNOLD-12097 Crashes related to null strings
- ARNOLD-12026 Overlapping spotlight and camera artefact
- ARNOLD-11954 Overlapping dielectrics with equal IOR can generate a spurious specular reflection
- ARNOLD-12201 [GPU] Random slowdowns
- ARNOLD-12017 [GPU] rendered output can contain random invalid pixels
- usd#1049 Fix instanceable primitives without prototype
- usd#1045 Fix crashes with invalid indexed primvars
- usd#1031 Fix element connection in arnold node graphs
- usd#1025 Fix random results with instancer and multiple referenced files
- usd#1024 Ensure the lights normalize attribute is authored in usd
- usd#1005 Get proper instancer matrices when some instances are hidden
- usd#1010 Fix shadow/light linking when some lights don't have any collection
- usd#1019 Fix light linking with nested procedurals
- usd#1012 Light linking referencing shape parents
- usd#1088 Fix attribute calls in camera reader that were causing random crashes
- usd#1071 Write enum attributes as tokens instead of strings
- usd#1084 Fix issues when writing USD geometry lights
- usd#1081 Add point_light to the list of schemas to be generated
API
- The C4DtoA API has been modified which requires third-parties to recompile their C4DtoA extensions.