One of the things that Alec mentioned that could be wrong with my jar model, was the modelling of it itself. He advised I had a look at the following article on Solid Angle’s website.
Blob Blob. (Support.solidangle.com, 2016).
The article talked about a lot of common problems when rendering refractive glass surfaces in Arnold- stating a few guidelines needed to be followed. The problem lies in how the renderer determines if we are entering or exiting an object, and what the incoming and outcoming interfaces are. Arnold Standard shaders assume outward facing normals, that objects are embedded in air, and that there is no overlapping between them.
The article also suggested I look into three different things, when considering creating glass surfaces.
- Modelling the glass and the liquid (if using)
- Shading the glass and liquid
- Render setting in Arnold
Modelling the Glass and Liquid
To ensure that Arnold accurately renders the surfaces, it is important that the following modelling guidelines are followed;
- The air to glass surface (IOR 1.5) has normals that are pointing out of the glass, covering the area where air directly touches the glass.
- The glass to liquid surface (IOR 1.33), has normals that are pointing out of the liquid, covering the area where air directly touches the liquid.
A ray of light travels through the air (IOR = 1.0), enters the glass, and is refracted by the IOR of the glass (1.5). After travelling through the glass the ray leaves the glass and enters the liquid, i.e. it travels from one medium of IOR 1.5 to another medium of IOR 1.33.
Glass Surface Model
Below we have a simple glass bowl model. You can see in the image on the right that the normals of the mesh are correctly pointing outwards. Correct normal direction is important when rendering refractive objects with Arnold.
Surface normals are pointing outwards
Modeling Liquid – Coincidental surfaces
In the example below, the surfaces of both the glass and liquid are sitting on top of each other, and are therefore coincidental. The renderer has problems identifying between each surface, which will output as overlapping artifacts.
Glass and liquid surfaces are coincidental
In this case the liquid has been scaled down slightly. The gap between the glass and the liquid is very small. The resulting render does not look realistic.
Liquid is scaled down (looks wrong)
Here the scale of the liquid has been increased so that it overlaps the glass bowl geometry. This looks much better as the liquid appears to be touching the glass.
Liquid is scaled up
Shading the Liquid and Glass
Below are the material settings used to accurately shade the glass and water.
Before rendering transparent surfaces with Arnold you must ensure that Opaque is switched off.
This can be found in the Arnold attributes of the mesh.
Set the Diffuse Weight to 0 and increase the Specular Weight to 1. Enable Fresnel Use IOR and change the Index of Refraction to that of glass 1.5. Increase the Refraction Weight to 1.
Lowering the Transmittance value attenuates the amount of light that passes through the volume of the glass (distance-based coloring). By default, transmittance is white, which means no distance-based tint. Try lowering it from full white.
You can read more about how transmittance affects transparent surfaces here.
Repeat the settings used for the glass material. However, make sure that the Index of Refraction is set to that of water 1.33.
To create a milky liquid, it helps to add small amounts of sub-surface scattering. Additionally, to make the liquid appear more vibrant, you could experiment by adding a small amount of light emission to it.
Correct Refraction Depth settings are important for achieving realistic glass and water effects. Bear in mind that higher values will increase render time.
By default Arnold uses a Refraction depth of 2. This does not give us enough rays to pass through both the glass and the liquid and therefore the render appears black. Increasing the ray depth to 6 allows enough rays to pass through both the liquid and the glass.
The scene below contains many glass surfaces. Increasing the refraction ray depth reveals more detail in the refracted glass.
When increasing ray depth settings, make sure that the total depth is set high enough to include the refraction ray depth.
The total depth specifies the total maximum recursion depth of any ray in the scene (Diffuse + Reflection + Refraction + Glossy < Total).
N.B. to self- this may be were I’m going wrong!
Here is the final image. The Refraction Depth has been increased slightly to 8 in order to further reduce areas in the splashed water where the render appears solid black.
Support.solidangle.com. (2016). Rendering Glass Surfaces with Arnold – Arnold for Maya User Guide – Solid Angle. [online] Available at: https://support.solidangle.com/display/AFMUG/Rendering+Glass+Surfaces+with+Arnold [Accessed 6 Nov. 2016].