本文整理自西安交通大学软件学院祝继华老师的计算机图形学课件,请勿转载
阴影相关术语
- 接受物:可能接受光源照射的物体 。
- 本影:任意一点均无法观察到光源任何部分。
- 半影:任意一定可观察到部分光源。
- 阴影:即任意一点不能完全地观察到整个光源。
- 遮挡物:可遮挡光源中任意一点的物体。
Hard 阴影 vs Soft阴影
- Hard阴影:点光源照射下,阴影问题是个二值状态
- 在计算机图形学中,很容易生成点光源,并且有一些生成Hard阴影的实时算法;
- Hard阴影真实感较差。
- Soft阴影:几乎不存在真正意义上的点光源
- 如太阳,其实也不是真正意义上的点光源,其所对应的阴影也不属于Hard阴影;
- 对于非点光源,计算本影和半影区域是非常复杂的过程。
阴影分类
自身阴影:光源被景物遮挡而在该景物本身;
投影阴影:在其后面产生的较暗的区域。
自身阴影
点光源下,生成产生具有自身阴影的步骤:
- 将视点移到光源位置,将景物的面分成向光面和背光面;
- 将视点移到原来的观察位置,对景物的向光面和背光面进行消隐,选用一种光照模型计算景物各面的亮度
- 如果面在阴影区域,那么该面的光强就只有环境光那一项,其他的那几项光强都为零,否则就用正常的模型计算光强
阴影算法与消隐算法相似
- 消隐算法是根据视点看过去确定哪些面是可见的(前向面)或是不可见的(后向面)
- 而阴影算法则要确定哪些面从光源位置看过去是亮的(向光面)或暗的(背光面)
投影阴影
投射阴影的区域和形态与光源及景物的形状有很大的关系
在光源的照射下,景物A在屏幕上产生了3个区域:本影区、半影区和无影区
投射阴影区域:实际上是将光源作为观察方向时景物在与光源反向的某一平面上的落影区;
投射平面可以是场景中另一景物的表面或是一个非场景范畴的基面,如建筑物所在的地平面或屏幕等
经典的三种本影阴影方法:
- 投影阴影;
- 阴影图(Shadow Map)的方法;
- 阴影体(Shadow Volume)的方法。