What is Ambient Occlusion and what are some of it's uses? I see it is used in creating what might be called "shadow catchers" in the following node tree setup:
Blender Stack Exchange is a question and answer site for people who use Blender to create 3D graphics, animations, or games. It only takes a minute to sign up.Sign up to join this community
Ambient occlusion is an approximation of global illumination that emulates the complex interactions between the diffuse inter-reflections of objects. While not physically accurate (for that use full global illumination)
What is it?:
It is a way to make objects in a scene look more realistic. Ambient occlusion casts shadows where objects are close to each other. Note that it will also cast light where they are not. Ambient Occlusion is a fake light.
Note that in Cycles there is also a Ambient Occlusion Shader:
The ambient occlusion node gives per-material control for the amount of AO. When AO is enabled in the world, it affects all diffuse BSDFs in the scene. With this option it's possible to let only some materials be affected by AO, or to let it influence some materials more or less than others.
Ambient Occlusion enabled in the world panel.
Ambient Occlusion can make a big difference especially in the Blender Internal Render Engine. In cycles enabling Ambient Occlusion does not make a big difference in terms of realism because Cycles is already rendering with Global Illumination, which is physically correct Ambient Occlusion. So in cycles there often is no need for it whereas in the Blender Internal render engine it is very useful.
In computer graphics, ambient occlusion is used to represent how exposed each point in a scene is to ambient lighting. So the enclosed inside of a tube is typically more occluded (and hence darker) than the exposed outer surfaces; and deeper inside the tube, the more occluded (and darker) it becomes. The result is diffuse, non-directional lighting throughout the scene, casting no clear shadows, but with enclosed and sheltered areas darkened. In this way, it attempts to approximate the way light radiates in real life, especially off what are normally considered non-reflective surfaces.
Basically, the closer some geometry is to other geometry, the darker it is rendered. Angle also seems to have an effect; nearby surfaces facing towards each other will render darker than nearby perpendicular surfaces (look closely at the first and second spheres).
It's often baked into a texture. This is especially useful for game assets, as AO does not take light sources into account (only proximity and angle of nearby geometry), and so remains more consistent as the object (or objects around it) is/are moving.
It's also useful in rendering/compositing to help add a little more depth/contrast:
I've attached an image that shows a model(in grey) and visualization(arrows and blue balls) for ray-casting to show how an ambient occlusion algorithm can be constructed.
The little blue spheres indicate the current area that is being tested. For each pixel of the texture map there would be one little blue sphere. The red arrows that are shooting of the blue spheres represent ray-trace tests.
Rays(red) are shot off in several directions from every pixel(blue), and for each ray that makes contact with the surface of the model; the pixel at that point will be darkened a little bit.
So basically; areas that are concave will have lots of ray intersections with the model and areas that are convex will have very few hits and this gives a lighting cue that helps the model to look more 3D.
If you hold up your hand with your fingers together, you will see that the areas between your fingers are darker than the surrounding areas. This is basically one of the things that AO, cavity, dirt mapping are all meant to simulate.
Also, they can be used to simulate dirt and corrosion that accumulates in recessed areas.
There are many ways to calculate this effect and basically the author of the particular method in question gets to name it and this is why you will see different names like AO, Cavity Mapping, Dirt Mapping.
They are all meant to give depth to a model, whether it be a lighting cue or dirt accumulation.
PS: Vertex Paint mode's Dirty Vertex Colors is probably not ray-tracing. It's likely a slope calculation which uses nearby vertices, if you want to know for sure then you'd have to look at the code or ask someone who has.