赵 方,张军和,彭亚雄
(贵州大学 计算机科学与信息学院,贵州 贵阳 550025)
在计算机图形学中,最令人关注的就是图像的真实感问题。所谓图像的真实感就是指在计算机中生成的图形反映客观世界的程度[1]。早期对于真实感问题的研究大都集中在算法本身的研究上,但是要把复杂的客观世界中各种细微结构用几何模型直接表示出来不仅难以满足实时的需求,而且计算量庞大,所以纹理映射技术应运而生。纹理映射技术即通过光滑反光物体对周遭环境的反映,为其增加伪拟真实效果。但是纹理映射必须使用反走样方法。Willimas发明的mip-map技术是专为纹理映射设计的最普通的反走样方法。这种方法在滤波过程中的代价是非常大的[2],不满足实时的需求性。在此算法的基础上,对映射区域的边长d采用另外一种求解方法,经实验验证,能得到很好的效果,有效解决走样问题。
纹理映射是指将纹理空间中的纹理像素映射到屏幕空间中的过程,在纹理映射中经常会产生走样。走样是当纹理周期接近一个像素大小时,在纹理贴图中看到的某种图像的假象。产生走样是因为对连续图像进行了采样,并且没有在足够高的分辨率下采样来捕捉高空间频率或图像细节[3]。在纹理映射中会把将纹理图案的像素映射到不同景物表面上,当屏幕空间中各像素的可见曲面区域与纹理图案像素大小匹配时,它们之间就形成一种一对一直接的映射。如果景物表面在平面上的投影区域较小时,那么位于平面内的曲面区域映射到纹理平面上后极有可能覆盖多个纹理像素。所以必须取这一区域上纹理颜色的平均值作为当前平面像素内可见区域的平均纹理属性。如果仍基于屏幕像素中心在纹理平面是那个的点做采样,就会产生严重走样现象[4]。这时就需要用纹理映射反走样技术来解决此类问题。
纹理映射反走样(anti— aliasing)技术是用以减少或消除走样的技术。纹理映射中的反走样很困难,我们需要找到像素的前像并对落在前像范围内的 (,)Tuv的值进行加权求和,从而得到像素的纹理强度。但是前像的形状会随着像素而变化,并且滤波的代价也因此而变得很高[5]。Willimas采用了逆向映射的方法来解决反走样问题。其流程图如图1所示。
图1 逆向映射流程
这种方法是建立在预先计算,以及像素逆像接近正方形这个假设的基础上。正是这种接近使反走样或滤波操作能预先被处理[6]。Willimas没有使用单幅图像组成的纹理域,而是使用多幅图像组成的纹理域来降低分辨率。这些图像是由原始图像平均化后得到的。这种方法在一定程度上有其相应的局限性。现将映射区域的边长d采用另外一种求解方法,可以避免上述方法所自有的局限性,能得到较好的纹理映射效果,使走样问题得到有效解决。Willimas提出的Mip-Map纹理映射反走样技术方法,该算法的基本思想是用合适的正方形来近似表示每一像素在纹理平面上的映射区域,预先将纹理图像表示成具有不同分辨率的纹理数组,作为纹理查找表,其中高一分辨率图像取平均值作为低一分辨率的图像值[7]。
Mip-Map方法是在确定了屏幕上每一个象素内可见面的纹理颜色时,则需要计算几个参数,包括屏幕象素内可见表面区域在纹理平面上所映射区域的边长d和屏幕象素中心在纹理平面上映射点的坐标(,)uv,其中d是屏幕象素内可见表面在纹理平面上近似正方形映射区域的中心,可以通过取景变换逆变换和纹理映射变换来求得,d取为该近似正方形的边长。其正方形逼近像素图如图2所示。
图2 正方形逼近像素
Willimas通过下式求d:
研究表明,基于这种d值的算法在实际渲染中会产生很大的误差,因此寻找到一个合适的d值的计算公式,使得渲染出来的图像不会和实际产生较大的偏差,那么这将平衡在走样和模糊之间的分界点,让渲染出来的图像能有较高的清晰度。下式是经改进之后的d值计算公式:
有了d值的计算公式,我们在VC++环境下进行编译,得到了实验结果图,如图3所示。
图3 改进前后纹理图像的对比
图3(a)是用Willimas发明的Mip-map技术得到的图像结果,图3(b)是经过改进之后得到的图像结果。可以看到,2幅图像在质量上有明显的改善。
在原有实验结果的基础上,将从时间上和每帧平均取样数上加以系统分析,以便能更清晰的看出2种方法所具有的特征。其对比结果如表1所示。
表1 采用技术、时间及每帧取样
一直以来反走样技术都是实时渲染中纹理映射最为核心的问题,也是渲染出的图像能否满足实时性的关键所在,因此其算法的优良尤为重要。本文基于原算法的基础之上,在VC++环境下,利用OpenGL图形库,验证了改进后的算法能使渲染处理的图像清晰度大大提高,并且在实验中也得出了其性能对比图,使其能较好的满足实时性的需求。
[1] Alan Watt, Fabio Policarpo.3D游戏 卷1 实时渲染与软件技术[M].北京:机械工业出版社,2005.
[2] 谭飞.带通采样在数字多通道中频接收机中的应用[J].通信技术,2010,43(04):1-3.
[3] Thomas Driemyer.mental ray.渲染技术超级手册[M].北京:人民邮电出版社,2007.
[4] 孙艳英.三维场景建模及其实时渲染方法[D]. 武汉:武汉理工大学,2004.
[5] 顾钦.基于纹理映射的快速渲染技术研究[D].天津:天津大学,2004.
[6] 王秀敏,汪毓铎,张洋,等.通信系统中 FIR数字滤波器的设计研究[J].通信技术,2009,42(09):3-6.
[7] 陈斌.三维图形引擎中凹凸纹理映射技术的研究与实现[D].成都:电子科技大学,2006.