6
$\begingroup$

So I've baked an ambient occlusion map for my model, and want to apply it now.

Currently, I have a material, which I've added two textures to:

  • A color map
  • The ambient occlusion map

(in this order)

Following one of the tutorials on Blender Cloud, I set the Ambient Occlusion texture's blend property to Multiply.

Problem is, this gives me a very dark result on the model, something like this:

Not to surprising when the AO map looks like this:

Those greys are dirtying my colors to around half their brightness when multiplied on top!

Is there a way to have the AO included, without darkening the entirety of my model? The other Blend options don't seem to cause the AO map to affect the base colors at all, except for Value, but I have no idea what "Value" even does, and it still darkens the colors on the model anyways.

Is there a better way to bake the ambient occlusion that you use?

$\endgroup$

1 Answer 1

18
$\begingroup$

Multiplying AO over diffuse/albedo/base color is never "right", hence why it often gives that overly shadowed and dirty look. This is a pretty famous blog post by Zap Andersson on the subject that sums it up really well:

http://mentalraytips.blogspot.com/2008/11/joy-of-little-ambience.html

The tl:dr if you don't feel like reading all that is that AO is not color information at all, it is a sort of fake indirect shadow pass.

The "correct" way to attach baked AO in Blender Internal - assuming you are actually using it for pre-cached ambient occlusion - is to set the mode to multiply and change the influence to just the ambient channel, like so:

enter image description here

This way it will only shadow the ambient light (ex, the environment light in the world panel) and not the direct illumination from your real lights, which is already shadowed.

Of course, all this assumes you are actually using it as baked AO data. If you have AO enabled in the world settings, you don't need baked AO at all, because you are calculating global AO at render time. Also, ambient occlusion bakes are useful for a lot of texturing tricks besides actual AO, since they tend to highlight contact points and crevices where dirt is likely to collect. If you're using AO for dirt, you generally will end up blending it over the diffuse color (and possibly the spec/gloss/roughness/whatever-it-is-in-your-shader). This is because in that case, the AO is not shading data at all but is instead being used as color information. On a side note, if you are using AO maps for dirt, it helps to take the map into an image editor and use a brush to break up the even shading. Dirt doesn't collect in nice gradients the way AO shading does. You may even want to pre-layer it over your color map at this point to save having to load an extra texture.

While we're discussing AO, I should probably point out a pretty common misconception when using Cycles. Cycles does not NEED actual AO for anything, ever. Cycles does not have a true ambient light. The world light acts like one, but it's actually a physical light at infinity in all directions rather than a classic CG ambient light. Cycles calculates indirect light "for real" and those diffuse rays are already occluded, even on secondary bounces.

Cycles has AO functions because they're useful for all sorts of artistic things, but in most cases you should not use an actual AO map. If you want it for artistic texturing purposes it is almost always better to integrate it with your color map ahead of time rather than within the shader. But it's not a shading thing you have to do, your GI is already properly shaded without AO.

$\endgroup$
2
  • $\begingroup$ When I set the AO map's influence to Ambient, it doesn't seem to affect the model at all. Checking and unchecking it I don't see any different at least. I'm using an AO map because the model is intended for use in a game engine by the way. $\endgroup$ Commented Feb 4, 2016 at 9:14
  • $\begingroup$ No, and nor is it supposed to. AO is not meant to do anything to areas that are only lit by direct light. Remember, it's shadow data for the AMBIENT light, hence the name. Renderers that use ambient lights like BI or your game engine will have a dedicated input where you can add the AO map to will only affect the ambient lighting like it is supposed to. If you like the look of multiplying it over diffuse, go ahead ("if it looks right, it is right"). But that's not what AO is meant for and often produces the nasty overshadowed look you came here asking about. $\endgroup$
    – JtheNinja
    Commented Feb 4, 2016 at 14:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .