Usage of Shadows With AO & SSAO

Welcome to our series on 3D Best Practices. In this series, we address the key components of describing the differences and optimal usages of AO and SSAO. This article focuses on what AO and SSAO are, and how to use them most effectively. Following these simple steps can dramatically improve the visual quality of the configurator output.

What is AO?

Ambient Occlusion or AO is a method where shadows are pre-baked into a texture. In 3D this is a shading and rendering technique which calculates the exact area in which ambient light would interfere, thus causing shadowed areas.

Why is AO used?

AO is primarily used to greatly improve the visual quality of your scene. You can have AO baked onto your model, the floor beneath it, or the room around it. Essentially anything that is a 3D Mesh can have AO. AO is calculated with consideration of the other objects in the scene, which means some implementations cannot use AO easily.

AO does a few things:

  • Increases the realism of your object by giving it “weight” and grounding it

  • Reduces blown out areas due to bright lighting, and overall softens the look of the objects it is applied to

  • Helps with anti-aliasing and having very jagged white edges on the mesh

  • The most visually appealing method of applying realistic shadows

When should AO be used?

AO is a very useful tool to have in your arsenal when it comes to creating visually appealing configurators or renders. AO should definitely be used in simple configurations, especially those that do not have moving or changing physical properties. Basically, any implementation that is material property changes only are perfect for the use of AO, and should always be used for maximum visual appeal.

When should AO not be used?

AO is a lot more simple to use when the configuration involved does not have many changing physical parts. The reason for this is because the shadows being baked makes them static, and being static means that if parts move or change, those shadows will remain and look incorrect. The way around this is to bake a different shadow for every possible iteration of the configuration. Sometimes, you can get around this by “exploding” your mesh and baking shadows. What this means is separating all the parts and moving them apart slightly to bake a more general shadow. In any case, it’s quite evident why this can become complicated depending on the implementation.

What is SSAO?

Screen Space Ambient Occlusion or SSAO is a similar method for utilizing shadows, but has different uses and performance capabilities. The main difference that SSAO provides over AO is real-time shadow enablement. This is highly effective for any configurations that utilize a dynamic scene, as well as those that need to be time efficient. Figuring out whether your configuration is dynamic or static will reveal if you should use SSAO or AO (in most cases). Sometimes you can use AO in dynamic scenes as stated above, but it will take more planning and time to execute properly. The Threekit player has a very good and optimized SSAO setting within the scene.

Here you can see the options available for SSAO within Threekit. These can be found in a Scene asset on the right hand side. SSAO is a fairly optimized option for real-time usage, and should always be used when baked AO can not. It’s the easiest and most time efficient option since it only needs to be enabled, and a few settings adjusted. The caveat here is that it does not look as visually appealing as AO. This reduces the overall appearance of the configurator and lacks the look of real-world shadows. However, it is much better to use than nothing at all.

Last updated