|
|
|
|
|
|
|
|
|
|
|
第三节
阴 影 |
|
|
|
|
|
|
对于隐藏面消除算法,是从观察点看,确定哪些表面是可见的。而对于阴影发现算法,是从点光源“看”,确定哪些表面是可见的。从观察点和从点光源都能看见的表面,就是可见的表面。从观察点可见,而从点光源不可见的表面,就在阴影之中。
应当注意,这种简便方法不能构造出来自分布光源的阴影。如果要把分布光源造成的阴影也考虑进去,则必须计算阴影的本影和半影。
当要表现一个客体时,可以分别对观察点及各点光源实施同样的消除隐藏面的算法,分别对观察点及各点光源确定出相应的可见部分和不可见部分,然后把所得结果进行整理,通过正确形成明暗而表现出来。
当要对同一物体从许多不同观察点进行观察时,对所看到的一系列情形,可以只做一次发现阴影的计算,因为当点光源相对物体是固定时.阴影实际上和观察点的位置无关。
计算阴影还有许多其他的方法。对由多边形表面组成的客体, 是对从光源来说是完全可见或者部分可见的多边形,都附加上另一个与之共面的多边形,称为细碎多边形。
计算细碎多边形的方法,是用遮挡光线多边形的投影,相对多边形表面,用对多边形进行剪裁的算法进行剪裁。
下图示意说明了这种情况.图中在立方体和光源之间有一个不透明的三角形面,立方体有两个面产生了阴影,在那两个面上附加上了细碎多边形。
从观察点看是可见的,并且被细碎多边形覆盖的部分,要进行全部的明暗处理,即要同时计算漫射照明及具体光源照明等结合起来的效果.从观察点看是可见的,但没有被细碎多边形覆盖的部分.实际上是在阴影之中,应该只计算漫射照明引起的效果。
|
|
|
|