光线/物体相交是计算光线追踪法最耗时的部分。Whitted认为:产生一个图像,光线/物体相交计算需要花费75%的时间,对于复杂图形,剩余时间仅为5%。因此,提高光线追踪速度的关键是提高相交计算的速度。
光线追踪法成像的一般步骤:
(1)建立环境及物体的造型:包括光源的性质,面的围观特性,物体的位置、方向、几何性质、材料特性等;
(2)模拟物理环境中光的传播:任何几何曲面上,光强的定义:包括光源所发出的光和其它物体之间的反射和折射光;[7]
(3)决定图像平面上的光强函数:图像平面上的位置(X,Y)和波长的函数可以表示穿过图像平面而进入视点的光强;
(4)对离散的图像平面上的光强信息进行转换,转化成可显示的形式:包括色彩分配,显示像素的精密转换,滤波以去干扰等。
有两条途径可以提高产生图像的速度:a.在追踪全部光线的过程中,处理时减少必须光线数目,物体曲面的表示也不要简化;b.相交计算采用专门的硬件,可以提高运算速度。
在图像综合的过程中,从以下几个方面着手可以提高相交计算速度:a.在物体造型固定的情况下,如何快速求出光线和物体的交点是必需的;b.减少要追踪的光线数目,怎么利用空间和光线的各种特性才能最大化优化;c.光照模拟如何建立才能合理、简单。提高光线追踪速度必须要把握前两个方面。
2.4 POV-Ray的功能
POV-RAY作为一个具有完整体系绘制图像的软件包。它的场景构成要素景物、背景、光照和视角是使用场景描述语言来定义的。用户使用POV-Ray可以很方便的画出期望的图像。
POV-Ray具有特殊的文本文件场景描述语言(scene description language)。场景描述语言一般由以下几个部分构成:POV-Ray系统定义的头文件、照相机定义部分、光照定义部分、景物定义部分、背景定义部分。[8]下面对每个部分加以解释。
2.4.1 头文件
在POV-Ray系统中,颜色、形状、材料、字符、辅助图案等都是由系统本身预先定义的。颜色(colors.inc),形状(shapes.inc),材料(textures.inc)等几种一般常会用到。[9]其中,一些常用的颜色在colors.inc中都被定义出来了。RGB组合值可在场景描述语言中也以定义颜色。[10]但是用户不能很直观地看出RGB的组合值。在colors.inc中,很多颜色都被预先定义了,用户很容易找到,从而降低了编程的难度。下面是关于colors.inc的一些语句:
#declare Gold=color red0.8 green0.498039 blue0.196078
#declare Indian Red=color red0.309804 green0.184314 blue0.184314;
从上述的语句可以看出,RGB可以精确的合成一些的常用的颜色。相对的,如果用户亲自编写相关的语句,将会消耗大量的时间而达不到预期的效果。同样,在形状方面,一些比较不好表示的物体也被定义出来了,如抛物面。[11]抛物面的定义为:
#declare Paraboloid X=
Quadric
{<0,1,1>,<0,0,0>,
<-1,0,0>,0
}
建立三文图形所必备的是材料库,材料库广泛应用于3DS、OpenGL等软件中。[12]
2.4.2 照相机定义
照相机是如何定义的,首先,我们需要将观察的位置设定好,然后用户才能观察到生成的图像,用户观察三文生成图像的视角被定义为照相机。 基于POV-Ray的二维及三维激光扫描仪的仿真实现(3):http://www.youerw.com/zidonghua/lunwen_20646.html