1 / 16
文档名称:

3D游戏引擎中的室外大场景渲染技术研究与实现.doc

格式:doc   大小:229KB   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

3D游戏引擎中的室外大场景渲染技术研究与实现.doc

上传人:漫山花海 2019/3/19 文件大小:229 KB

下载得到文件列表

3D游戏引擎中的室外大场景渲染技术研究与实现.doc

文档介绍

文档介绍:3D游戏引擎中的室外大场景渲染技术研究与实现3D游戏特别是网络在线游戏中,室外大场景渲染是一块非常重要的内容,它也是3D图形引擎的核心。它是图形学和图像处理理论最直接的应用,其涉及的技术还可以应用于其它领域,比如虚拟现实、3DGIS、数据可视化等,其重要性不容置疑。随着硬件的不断发展,行业对渲染场景的规模和真实感提出了更高的要求。第四章场景的真实感渲染技术第三章讨论了怎样有效绘制地形的三角形面片,关于怎么在面片上表现真实的地表(草地、沙粒),以及怎么表现光照、天空、植物等,这一系列问题涉及的就是场景的真实感渲染技术。Forpersonaluseonlyinstudyandresearch;mercialuse ,由于客观世界千变万化、错综复杂,要把真实世界的各种细微结构直接用几何模型表示出来,不仅模型难以建立,而且计算量庞大,难以满足实时显示的需要,比如一张曲面可以用许多微小的多边形(或曲面片)表示其表面细节,假定每个微小多边形具有近似相同的表面特征,要显示这样一个曲面,就必须对这些微小多边形(或曲面片)进行分别处理,这将需要大量的存储空间和处理时间,因此在实际应用中,为了获得比较高的显示速度,往往以牺牲图形的真实感为代价。尽管这样,显示一幅比较复杂的图像仍然需要很长时间。于是,人们就想象是否可以用“贴墙纸"的方法将反映物体表面的细节的图案贴到物体表面,从而开辟了一个新的研究领域一纹理映射(TextureMappirig)。处理过程如下图: 纹理映射的方式主要分为三种: 颜色纹理映射:最简单和最基本的应用是将一幅花纹图案映射到物体表面,采用与表面上点的位置有关的值(如:参数曲面上一点的参数值)来确定纹理坐标并采样包含图案的纹理,采样值用定义该点的颜色。通过此类方法在图案和表面点之间建立的固定联系,不会因视线的改变而改变。当花纹或图案绘上之后,表面仍光滑如故,这种纹理称为颜色纹理,形如在物体表面绘制了一些花纹图案。凸凹纹理映射:根据粗糙表面的光反射原理,通过一个扰动函数扰动物体表面法向量,使光滑表面得到调制,并在光线下呈现出凸凹不平的形状,这种纹理称为凸凹纹理(或几何纹理)。利用扰动函数可以很好的模拟皮毛、头发、衣服之类的物体。过程纹理映射:过程纹理映射属于三维纹理,它就是将三维的纹理函数映射到三维物体上。也就是说在物体的内部也会受到纹理的影响。例如,木材和大理石的纹理,需要考虑每一个相邻面的纹理映射,通常每个面分别进行颜色纹理映射时,由于面的边界处纹理不连续,往往难以表现出自然的纹理,这种场合定义三维的纹理函数进行立体纹理映射是非常有效的。用过程纹理模拟物体表面细节,能够在非常复杂的曲面上表现连续的纹理,且纹理效果不受物体表面形状的影响,可以很大程度的解决纹理走样问题。 (1)指定纹理在最简单的情况下,纹理是单个图像。利用称为MipMap的技术,程序员可以指定同一纹理的多级分辨率图像,在进行纹理映射过程中,该技术可以按照景物表面在屏幕上所占区域分大小,自动选择合适分辨率的纹理图像对景物表面进行映射,以避免因纹理映射中的点采样方式所导致的纹理走样。另外,图像的定义可以包括边界值,以防止物体的纹理坐标超出有效区域。边界值允许程序员把多个纹理映射平滑的粘贴在一起,从而增加最大可用纹理的有效尺寸。相关函数:glTexImage2D(),glTexGen()。(2)纹理如何作用于每个像素点 OpenGL根据片元的颜色和纹理图像数据中的颜色来计算最终的RGBA值。程序员可以选择下面三种功能中的一种:,这种方法如同贴花一样,纹理被粘贴在片元的表面上;,该技术对光照和纹理的综合效果非常有用;。相关函数:glTexParameter(···),glTexEnv(···)。(3)激活纹理颜色在绘制场景之前需激活纹理映射。相关函数:glEnable(),glDisable()。(4)利用纹理坐标和几何坐标绘制几何场景在粘贴纹理之前,必须说明纹理相当于片元是如何排列的。也就是说,必须指定场景中物体的纹理坐标和几何坐标。对于二维纹理图可指定其两个方向上的纹理坐标均为[,],而要粘贴纹理的物体坐标可以是任意的。相关函数:glTexCoord*()。 ,我们可以考虑在整个地形上贴一张纹理。比如65×65的地形贴上一张128×128的图片。但是当地形很大时,我们的贴图不可能很小。当贴图很小时,地形会被拉伸产生失真;当把贴图选得太大,显卡会承受不了。于是有人想到了,利用纹理贴图坐标(texturecoo