The opaque flag is set automatically by changing the opacity or transmission on a material.

Transmission and opacity are pretty similar in Arnold compared with other render engines, however, there are a few differences. The purpose of this document is to give users a better understanding of these differences as well as explaining when to use opacity and when to use transmission.

Arnold has two different ways of calculating transmission and opacity. They are different ray types and thus have different controls in the standard_surface shader as well as in the render settings.

These two ways of calculating transparency have different purposes, they can be used together but most of the time you'll want to use either one or the other.

Usage for Transmission
  • Glass, water, or other refractive materials.
Usage for Opacity
  • Sprite type of effect, such as cutting out the shape of a leaf from a polygon card.
  • Making the tips of hair strands transparent.

If you leave Index of Refraction (IOR) at 1.0 both methods can give similar results, however, opacity renders faster, for sprites. Opacity will also cut out the shape completely whereas transmission will leave the reflections/speculars visible even on areas that are completely transparent. Here are two images that show the difference when rendering sprites: 


This is the texture and mask used for the leaf:

Note how when using transmission the specular/reflections are still visible in the transparent areas. You can, of course, drive the specular weight using the same mask to fix the problem, but using transmission for this purpose is simply wrong. 

Using Transmission And Opacity Together

As explained earlier it's usually best not to use transmission and opacity together in the same shader as it would cause unnecessary slowdowns in the render; however, there are a few situations where combining them can be useful. Below are some examples of a simple glass sphere being cut out using a stripe mask:


In the following scene you can see the Stanford dragon rendered with opaque enabled and disabled. Note that opacity is not used at all in this example:


Below is another example with opaque enabled and disabled. In this case, only opacity is being used in the standard_surface shader: 

Optimization

As mentioned earlier using the right method for the right task will give you optimal rendering speed, however, there are some things which can further speed things up:

  • When using opacity for sprites, make sure that your mask is pure black and white, for example in the black areas there shouldn't be any noise or other imperfections as that will have a negative effect on the render times, in other words, it's not a good idea to use JPEG textures for masks as they often have compression artifacts.
  • When combining transmission and specular, such as on the dragon above, it can speed things up a lot if you make sure that the transparent part of the shader doesn't pick up any reflections, in other words disabling internal reflections, you can do this using a ray_switch shader.


Transmission and Alpha  

If you want to see transmission in the alpha channel, enable Transmit AOVs (under transmission of standard_surface. And if you're using a skydome_light, set its transmission to 0.

  

Default alpha of beauty AOV (left). Default alpha of beauty AOV (right). Rollover images.

 

  • No labels
© 2020-2021 Autodesk. All Rights Reserved / website terms / privacy/cookies / ccpa settings