在上文,我们已经阐述了AO的一些特点。实际计算中,AO是怎样执行的呢?
我们依旧用刚才举过的例子。在一个封闭的环境中,依然存在点光源,有一颗枝叶茂密的树,以及树下的石凳。我们需要计算石凳表面上某一点的光照情况,那么先从这个点,发射大量的射线并确定一个固定半径的半球。在射线射向周围空间的过程中,寻找出有多少射线被空间中的物体遮挡,或者半球内有多少遮挡物体。然后根据被遮挡的数量、光线的吸收幅度来确定石凳上这一点的光照情况。被遮蔽或者光线被吸收越多的物体表面将会得到更深沉的阴影,而只有轻微遮挡的物体阴影则会淡很多。比如在树叶越密集的地方,遮挡越强烈,阴影效果就越为深沉,在树叶较少的地方,阴影就更轻微一些。
AO技术示意图,这个做法是以对象表面的一点P为出发点,在该点的法向量N(Normal)范围的半圆内对外发射很多的假想射线。
可以看出,通过AO技术能非常轻松地解决阴影没有层次感的问题,终画面效果也会变得更为鲜明,对比更强烈,层次更丰富。