您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 真实感论文纹理映射论文
真实感论文纹理映射论文摘要:在计算机图形学中,引人注目的是图像的真实感问题。图像的真实感来源于建模软件中渲染效果的好坏,渲染用时越少,质量越高,渲染出来的图像就越逼真。利用纹理映射技术,即“贴”墙纸的方法将反映物体表面细节的图案贴到物体表面上。现有的纹理映射技术存在诸多方面的缺陷,用时长,清晰度低,走样等使得渲染出来的图像不能满足实时的需求。在原有纹理映射反走样技术的基础上,利用opengl图像库,改进原有纹理映射技术中存在的问题,能得到高度真实感的图像。关键词:真实感;纹理映射;opengl;走样;反走样theanti-aliasingresearchoftexturemappingbasedonopenglzhaofang,zhangjun-he,pengya-xiong(computerscienceandinformationdepartment,guizhouuniversity,guiyang550025,china)abstract:incomputergraphics,themostimportantistherealisticofimages.therealisticofimagesisformthestandorfallofrenderingeffectsinmodelingsoftware,thelesstimespent,thehighqualityis,theimagesmorerealistic.usetexturemappingtechnology,thatisstickwallpaper,itwillreflectobjectsurfacedetaildesignontheobjectsurfacetack.theexistingtexturemappingtechnologyhasmanydefects,moretime,lowduration,aliasingandsoon,itcouldnotsatisfythereal-timedemand.intheoriginaltexturemappingtechnologybasedonanti-aliasing,usingopenglimagelibrary,improvingtheoriginaltexturemappingtechnology,problemexistingintheimagecanbesloved.keywords:realistic;texturemapping;opengl;aliasing;anti-aliasing计算机图形学中,图形的真实感是指计算机所生成的图形反映客观世界的程度。长期以来,图形真实感问题一直是计算机图形学研究的一个主要课题。然而,要用计算机生成一幅比较逼真的图形并不是一件容易的事情。在实际应用中,为了获得比较高的显示速度,往往以牺牲图形的真实感为代价。尽管这样,显示一幅较复杂的图形往往需要好几个小时。于是,人们就想象是否可以用“贴”墙纸的方法将反映物体表面细节的图案贴到物体表面上。这就是纹理映射技术,与建造3d模型的方法相比,在模拟物体表面细节方面,纹理映射是个行之有效的方法。通过纹理映射技术,我们可以得到高度真实感的图形。然而纹理映射中反走样的实现也很困难,它的前像(pre-image)的形状会随着像素而变化,并且滤波过程的代价也很大。这种方法一定在程度上有其相应的局限性。本文将要探讨的利用opengl图形库在vc++环境下,基于算法的改进的纹理映射的反走样技术,相对的避免了上述方法所具有的局限性,理论上可以取得较好的纹理映射效果,有效解决走样问题。1opengl工作基本流程opengl是一个与硬件图形发生器的软件接口,它包括了100多个图形操作函数,opengl提供了以下的对三维物体的绘制方式:网格线绘图方式、深度优先网格线绘图方式、反走样网格线绘图方式、平面消隐绘图方式、光滑消隐绘图方式、加阴影和纹理的绘图方式运动模糊的绘图方式、大气环境效果、深度域效果,这些三维物体绘图和特殊效果处理方式,说明opengl已经能够模拟比较复杂的三维物体或自然景观。opengl基本工作流程如图1。2纹理映射2.1纹理映射走样纹理映射是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程。在纹理映射中,常常会产生走样纹理走样。纹理映射涉及到将纹理图案映射到不同大小的景物表面上,当各屏幕像素中的可见曲面区域与纹理像素的大小相匹配时,他们之间形成一对一的映射。而当景物表面在平面上的投影区域较小时,位于平面内的曲面区域映射到纹理平面上后可能覆盖多个纹理像素。因此,必须取这一区域上纹理颜色的平均值作为当前平面像素内可见区域的平均纹理属性。如仍基于屏幕像素中心在纹理平面是那个的点做采样,则会导致严重的走样现象。这时我们就需要解决此类问题,即纹理映射反走样技术。2.2纹理映射反走样因为图形信号是连续的,这种用离散的量(像素)表示连续的量(图形)而引起的失真,叫做走样(aliasing)。而用于减少或消除这种效果的技术,就称为反走样(anti—aliasing)。走样可以分为边缘走样和纹理失真。我们采用逆向映射的方法来实现反走样。其流程图如图2。逆向映射技术最典型的纹理映射技术是williams发明的mip-mapping技术,而纹理映射中反走样的实现也很困难,它的前像(pre-image)的形状会随着像素而变化,并且滤波过程的代价也很大。这种方法在一定程度上有其相应的局限性。本文介绍基于改进的mip-mapping区域取样纹理映射技术,相对的避免了上述方法所具有的局限性,能取得较好的纹理映射效果,有效解决走样问题。williams提出的mip-mapping的纹理映射技术,该算法的基本思想是以适当大小的正方形来近似表示每一像素在纹理平面上的映射区域,并预先将纹理图像表达为具有不同分辨率的纹理数组,作为纹理查找表,其中低分辨率的图像由比它高一分辨率图像取平均得到。mip-mapping所用的方法是在确定屏幕上每一象素内可见面的纹理颜色时,需要计算以下几个参数,即屏幕象素中心在纹理平面上映射点的坐标(u,v)和屏幕象素内可见表面区域在纹理平面上所映射区域的边长d,其中(u,v)取为屏幕象素内可见表面在纹理平面上近似正方形映射区域的中心,可通过纹理映射变换和取景变换的逆变换求得,d取为该近似正方形的边长。willams通过式(1)求d:(1)经实验研究表明,这种计算d值的方法在实际应用中会产生很大的误差,那么寻找到一个合适的d值的计算公式,将会在模糊和走样之间寻找到一个很好的平衡点,使得渲染出来的图像比之前能得到较高的清晰度。式(2)是经过改进的d值的计算公式:(2)3实验结果利用opengl在vc++环境下,基于算法的改进的纹理映射反走样技术能有效解决走样。实验结果如图4所示:部分代码如下:intinitgl(glvoid){if(!loadgltextures()){returnfalse;}glenable(gl_texture_2d);glshademodel(gl_smooth);glclearcolor(0.0f,0.0f,0.0f,0.5f);glcleardepth(1.0f);glenable(gl_depth_test);gldepthfunc(gl_lequal);glhint(gl_perspective_correction_hint,gl_nicest);gllightfv(gl_light1,gl_ambient,lightambient);gllightfv(gl_light1,gl_diffuse,lightdiffuse);gllightfv(gl_light1,gl_position,lightposition);glenable(gl_light1);glcolor4f(1.0f,1.0f,1.0f,0.5);glblendfunc(gl_src_alpha,gl_one);returntrue;}4结论反走样一直是纹理映射中最关键的问题和图像是否能满足实时性的核心技术所在,在结合了原有算法的基础上,本文利用opengl图形库,在vc++编程环境下,验证了经过改进后的纹理映射反走样图案的质量确实得到了很大的提高,使得实时渲染的时效性能得到广泛的应用。但是对于本文改进的方法是否有更大的发展空间,能否进一步使得图像的清晰度再次得到提高仍然是以后工作的核心问题。参考文献:[1]thomasdriemyer.mentalray.渲染技术超级手册[m].费广正,译.北京:人民邮电出版社,2007.[2]alanwatt,fabiopolicarpo.3d游戏卷1实时渲染与软件技术[m].沈一帆,陈文斌,朱怡波,等,译.北京:机械工业出版社,2005.[3]alanwatt,fabiopolicarpo.3d游戏卷2动画与高级实时渲染技术[m].沈一帆,陈文斌,朱怡波,等,译.北京:机械工业出版社,2005.[4]daveshreiner.opengl编程指南[m].李军,徐波,译.北京:机械工业出版社,2010.[5]张宏军,党留群,赵天巨.visualc++6.0编程案例精解[m].北京:电子工业出版社,2005.[7]坎宁安,石教英,潘志庚.计算机图形学[m].北京:机械工业出版社,2008.[7]顾钦.基于纹理映射的快速渲染技术研究[d].天津:天津大学,2004.[8]孙艳英.三维场景建模及其实时渲染方法[d].武汉:武汉理工大学,2004.
本文标题:真实感论文纹理映射论文
链接地址:https://www.777doc.com/doc-6059705 .html