Take the 2-minute tour ×
Blender Stack Exchange is a question and answer site for people who use Blender to create 3D graphics, animations, or games. It's 100% free, no registration required.

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:

enter image description here

share|improve this question

3 Answers 3

up vote 11 down vote accepted

Per definition:

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.

enter image description here enter image description here


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.

enter image description here

Ambient Occlusion enabled in the world panel.

enter image description here


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.

enter image description here

share|improve this answer

From wikipedia:

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).

enter image description here

Uses

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.

enter image description here

It's also useful in rendering/compositing to help add a little more depth/contrast:

Without AO:

enter image description here

With AO:

enter image description here

share|improve this answer

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. enter image description here

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.

share|improve this answer
    
I think in vertex mode the AO get calculated per vertex, the area in between is interpolated linearly. –  Vader Mar 17 at 18:27
    
Yeah, From the way it looks, it seems like a slope calculation which uses nearby vertices to determine whether an area is concave or convex. The more sharp the slope is on concave areas; the darker it becomes. The more sharp the slope is for convex areas; the lighter it becomes. That's how I'd start if I were going to try and code something like that. But as I said, I have not looked at the code so I'm only making an educated guess. It may be something totally different from this. –  MarcClintDion Mar 17 at 18:33

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.