This tutorial was written by the amazing Amaru Zeas and appeared in issue 106 of 3D Artist. Subscribe now and never miss an issue!
When it comes to lighting and shading, we can make the most of our CG work with a good lighting rig that includes realistic, artistic shaders.
Arnold is a ray-tracing renderer built for feature animation films and VFX. A plugin for Maya, Arnold is outstanding for giving you good results in a very short time. Arnold’s progressive render system is fantastic, and you can achieve really fast feedback when you’re adjusting your lighting, shaders and geometry.
Arnold has an awful lot of features on offer that you can use to your advantage. Motion Blur is extremely accurate with 3D motion and interacts with shadows, indirect lighting and refractions, and its Deformation motion blur is pretty amazing. The combination of Arnold and Maya’s XGen will give you brilliant results for rendering hair and fur using very little memory, and its hair shader has double offset speculars and transmission. SSS or subsurface scattering, which is great when you use it for skin, is very easy to use and supports motion-blurred lighting. Arnold has great AOVs (Arbitrary Output Variables) built in and ready to use, and of course you can create your own as well if you want to. This is perfect for compositing since it will give you total control, and it also supports deep image data.
Progressive rendering is without a doubt one of our favourite features in Arnold, as it is extremely responsive and has useful built-in debug menus that enable you to have lots of control before rendering the final image. In this tutorial we will be using Arnold for Maya 2017. The good news is that Maya now comes with Arnold as its main renderer, enabling you to render still images, but if you wish to render animations or sequences you will have to buy a licence from Solid Angle. There are so many features in Arnold and in this tutorial we will aim to cover as many as possible. After the tutorial you will have a better understanding of how to use Arnold’s lights, improve rendering time and create fantastic shaders to help with your light rig.
Step 01 – Get started with Arnold
Maya might not have the plugin loaded by default, so go to Windows>Settings/Preferences>Plug-in Manager>mtoa.mll. Once you have loaded the plugin successfully you will be able to use the tools under the Arnold tab. Now, in the Render Settings window menu you have five tabs; we will learn a bit more about Arnold Renderer and AOV render settings, which are the ones you will use the most.
Step 02 – Render sampling
The more samples, the better the image but the longer it will take to render. The actual number of samples is the square of the input value. For example, if the Camera (AA) samples is 4 it means that 4 x 4 = 16 samples will be used for anti-aliasing. Now if the Diffuse is 3, then 3 x 3 = 9. Do the maths and we have Camera (AA) 16 x 4 Diffuse = 64 samples. It works the same for Glossy, Refraction, SSS and Volume Indirect. I have found that in most cases these values are a good compromise: Camera (AA) 7-11, Diffuse 2, Glossy 2, Refraction 2, SSS 2.
Step 03 – Render settings
Ray Depth enables you to control the amount of ray bounces you want to have in your scene, and the higher the values the longer the render time. Ray Depth can especially help you in interior renders. Sometimes just adding a few more Diffuse rays can light your scene and have more colours blend with each other. One of the most commonly used is Diffuse Ray Depth to increment the light rays bouncing in your scene. Refraction Ray Depth is the maximum number of times a ray can be refracted, which is very useful when using glass shaders.
Step 04 – TX textures
Arnold gives you the option of using TX textures, which are better because they are tiled. Arnold loads one tile at a time instead of loading the entire texture, therefore even 8K textures will load faster because Arnold loads only what it needs to render. Under the Textures tab there is the option to Auto-covert Textures to TX. If this is enabled, Arnold will convert all the textures in your scene to TX files every time it renders. You can turn that off, though, and just use the existing TX textures.
Step 05 – AOVs
Arbitrary Output Variables or AOVs give you the ability to render any arbitrary shading network component into individual images. For example, you might want Diffuse, Specular and AO separate, as that way you have much more control over the look of your render when you do the final comp. Go to Render Settings>AOVs>AOV Browser. Here you can add the desired AOVs. Select one or multiple AOVs and click on the arrow to bring them to the far right. Once you have rendered go to the RenderView and now you can select the AOVs that you have previously added.
Step 06 – RenderView
The render windows are great, and can certainly help you achieve your desired look very quickly. There is also a debug menu that can give you instant masks or simple AO right out of the box. To find this menu you might have to load it – in RenderView go to Window>Toolbar Icons>Show Debug Shading icon. One of my favourites is Isolate Selected. You can pretty much isolate anything that you need to, including objects, lights and even individual shader nodes in the hypershade.
Step 07 – Area Lights
Area lights are very important. In the Color attribute you can pick any colour you want, and there is also an option to work with colour temperature using Kelvin values. I highly recommend to always leave the intensity at 1, and if you want more light to emit you should use the Exposure controller. Increasing the samples of the area light will improve the shadow quality, but it will also increase render time – a sample value of 3 is enough. When the Normalize option is off, then the intensity of the light will depend on the size of the area light.
Step 08 – Photometric lights
Photometric lights are physically based simulations of the spread of light. Photometric lights are mainly used on side lamps and
ceiling lamps. These lights use IES profiles; you can definitely find these on the internet, so just plug them in the Photometry File attribute, and you will see the result right out of the box.
Step 09 – Physical sky
The Physical Sky or aiSky shader is intended to be used as a global environment shader or a background shader. This system is usually used to simulate a real daytime light. You can adjust the ‘Sun’ direction by changing the elevation (how low the Sun is) and the Azimuth (where the Sun is positioned in your scene). You can tint your sky any colour you want as well as the Sun tint. The Sun size will determine how soft your shadow is, and the higher you set it the softer your shadow will be.
Step 10 – Skydome light
Skydome lights or IBL (Image-Based Lighting) are great for achieving photorealism, as they simulate light from a hemisphere or dome above the scene. They can also be used with high dynamic range (HDR) images to perform image-based environment lighting. This is the node that is typically used for lighting interior scenes as well as
studio lighting setups. In the light colour attribute you can connect any texture you want, but it definitely works much better with HDR files. Again, here I would recommend adjusting the Exposure instead of the Intensity. One thing you must know is that if you have an EXR or HDR, make sure you set the Color Space to Raw.
Step 11 – Light portal
These are great for reducing noise in interior scenes, where light comes in through small openings such as windows. They can also sometimes help increase the light bounce throughout your scene. You want your portal light to be a little bit bigger than your window or gap opening. The light portal should be oriented so that it is pointing in through the opening. There is an option to select ‘interior_only’ and ‘exterior_only’. If you have multiple windows, doors or openings, add a portal light for each one.
Step 12 – Mesh light
You can turn any object into a light. Mesh lights are awesome, I have been using them to simulate neo lights or just to create cool light effects. It is very simple; you only have to select the object, go to its attributes and under the Arnold tab change the Arnold Translator from polymesh to light mesh. Adjust the exposure to around 8 or more to start seeing the light intensity. Then don’t forget to turn Light Visible on in order to see the object that is emitting the light. Be aware that mesh lights ignore smoothing on poly objects.
Step 13 – aiStandard
The aiStandard material is a multi-purpose shader that will enable you to create pretty much any type of material, from car paint and matte plastic to physical glass. The channels I use the most are Diffuse, Specular, Roughness, Bump Mapping, Normal, IOR and Displacement. There is a basic built-in SSS, but if you want to get more realistic subsurface scattering then there is shader built specifically for that called aiSkin. You also have some basic presets where you use them as a base.
Step 14 – alShaders
alShaders are free, third-party, open- source shaders built specifically for Arnold. You can find them at anderslanglands.com. The amount of power is endless. Some key features are two specular channels (amazing control of specular), built-in subsurface scattering, and lots of customisable AOVs and IDS channels. It also comes with more shaders like alHair (spectacular for hair and fur) and some amazing shading nodes such as alFlake (great for car paint) and alCurvature (great for procedural roughness).
Step 15 – Colour space on textures
When you use textures for Normal, Bump, Displacement, EXR and HDR you will need to set the texture’s colour space to Raw. Go to Preferences>Color Management. Turn Color Management on. Under Input Color Space Rules you can create your own rules and apply them to the entire scene. Click on Add and give any name to your rule. On the right you can select the file extension. Now, next to Image Name Pattern you will have to add the words that a specific texture contains. For instance, if I was changing all my Normal textures I would type ‘Normal’. Finally, next to Input Color Space, choose Raw.