第五章-光学模型及其算法实现
·光源的漫反射光(Diffuse Light):从一个粗糙的、无光泽的表面反射出,它与入射角有关(即符合Lamber定律)
·镜面反射光(Specular Reflection):从一个光滑的、明亮的表面反射出(或称单反射光):
由于光强函数的一阶导数不连续,线性插值法均有马赫带效应(光照效果在数值上不连续)。
在简单的光线跟踪算法中,每条射线都要和所有物体求交,然后再对所得的全部交点进行排序,才能确定可见点。因此对于每条射线,计算复杂度都是O(n)以上。当物体个数较少时,计算量还可以接受。但是当环境较复杂,物体个数较多时(例如成干个原子组成的分子模型或成万个多边形构成的建筑物模型),简单的光线跟踪算法的处理速度就无法接受了。然而,对于每—条射线,它实际上只与少数几个物体有交,与绝大多数物体根本不相交。也就是说,对于复杂环境,大多数求交计算都是无效运算。我们可以通过一些途经来减少这种无效运算。这就是加速算法所要考虑的主要问题。一般说来,加速算法是通过预先把物体按空间位置适当地组织起来,以便在绘制时缩小搜索范围,减少排序时间来提高效率的。常用的组织方法有包围体树、自适应八叉树和三维立方体阵列。
Gouraud算法优缺点:算法简单,计算量小。但不能再现高光。适用粗糙表面
在图像空间中,Phong光照模型(双线性法向插值法)计算各像素的度如下:
事实上,一个物体的颜色就是它所反射出的光的颜色,取决于光源的颜色和该物体对光的反射性。例如,将一个阳光下的红球放到只有黄灯照明的室内,它就变成黑的了,因为那里没有任何红色光可被反射,而所有黄色光都被吸收了。
目前大多数渲染软件采用Gouraud和Phong光照模型作为Quick(快速)和Full(完全)Rendering,能满足一般真实感显示要求。
(2)对于多边形边上和内部的各点(像素),用顶点明暗度的线双线性亮度插值法
简单光反射模型只模拟物体表面对光的反射作用,并不考虑物体表面的透射和散射作用。在简单光反射模型中一个点光源照射到物体表面一点,再反射出来的光,可分为三部分:环境光(泛光)、漫反射光镜面反射光。
在Phong模型中,物体表面的光照效果是环境反射光、光源的漫反射光和镜面反射光的合成效果。
Snell正弦定律(或称折射定律)属于几何光学原理,用于确定两个物体间的入射角与折射角的关系:
式中,1表示在物体1表面处的入射角,而2表示在物体2内部的折射角;1和2分别是这两个物体的折射率。
如图5-1所示,除了从同侧光源射过来的反射光外,观察者还将会看到从另一侧光源穿过物体后射出的透射光:
定义:材质(material)被定义为一个物体对环境光、漫反射光、镜面反射光的反射性。它们分别以一个对应的RGB值表示,称为材质的Ambient,Diffuse,Specular分量(即光学定律中的反射系数Ka,Kd,Ks)。
材质还可以包括另一种辐射性,用于描述自身发光的物体,例如汽车尾灯或夜光表。通常,灯具的表面也被看成是一个自发光体。
另一种计算多边形边上和内部的各点光强的改进方法是增量法,它利用扫描线的相关性来简化计算如下:
其中,Ks为单向反射率;n控制反射光束的锥度,其值越大,光束越窄,表示该表面越明亮(如磨光金属面大理石)(较小可表示苹果、木质等)
当α=0(即视线位于反射方向上)时,将呈现一个高光点(hotspot)(如白光下的铜球上的亮白点)
在图像空间中,Gouraud光照模型(双线性光强插值法)计算各像素的光强如下:九游(9游)体育官网入口