3d游戏引擎中的室外大场景渲染技术研究与实现.docx
- 文档编号:25178038
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:72
- 大小:1.01MB
3d游戏引擎中的室外大场景渲染技术研究与实现.docx
《3d游戏引擎中的室外大场景渲染技术研究与实现.docx》由会员分享,可在线阅读,更多相关《3d游戏引擎中的室外大场景渲染技术研究与实现.docx(72页珍藏版)》请在冰豆网上搜索。
3d游戏引擎中的室外大场景渲染技术研究与实现
3D游戏引擎中的室外大场景渲染技术研究与实现
关键字:
室外场景渲染 LOD技术 GeoMipMap 场景管理 多纹理混合
3D游戏特别是网络在线游戏中,室外大场景渲染是一块非常重要的内容,它也是3D图形引擎的核心。
它是图形学和图像处理理论最直接的应用,其涉及的技术还可以应用于其它领域,比如虚拟现实、3DGIS、数据可视化等,其重要性不容置疑。
随着硬件的不断发展,行业对渲染场景的规模和真实感提出了更高的要求。
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
□优□良□中□及格□不及格
3、学生综合运用所学知识和专业技能分析和解决问题的能力
□优□良□中□及格□不及格
4、研究方法的科学性;技术线路的可行性;设计方案的合理性
□优□良□中□及格□不及格
5、完成毕业论文(设计)期间的出勤情况
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
二、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
评阅教师:
(签名)单位:
(盖章)
年月日
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
□优□良□中□及格□不及格
2、对答辩问题的反应、理解、表达情况
□优□良□中□及格□不及格
3、学生答辩过程中的精神状态
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
评定成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
教研室主任(或答辩小组组长):
(签名)
年月日
教学系意见:
系主任:
(签名)
年月日
第一章绪论
1.1概述
众所周知,近几年以电子游戏为主的计算机互动娱乐产业迅猛发展,已成为国民经济的重要组成部分。
然而,由于我国的软件业起步较晚,3D游戏的核心技术被欧美、日韩等牢牢占据。
如何掌握相关核心技术已成为中国电子娱乐产业的当务之急。
室外场景渲染是指对户外所有景物的真实绘制,相对于室内场景渲染,它更为复杂。
在3D游戏特别是网络在线游戏中,室外大场景渲染是一块非常重要的内容,它也是3D图形引擎的核心(见图1.1)。
游戏引擎中大场景的渲染技术是图形学和图像处理理论的最直接应用,其涉及的技术还可以应用于其它领域,比如虚拟现实、3DGIS、数据可视化等,其重要性不容置疑。
1.1.1室外场景渲染研究的内容和难点
真实感的室外场景除包括地表的基本几何形状绘制,还包括地表上的生物如:
草、岩石、树等的渲染以及对光影效果的表现。
其中的难点主要在大规模地表的数据处理和真实感的仿真。
地形场景中模型图元的数量是以场景大小平方的速度增长的。
一个8193×8193维数的地形,如果不考虑减低细节程度和裁剪,绘制一帧将要渲染128M个三角形,这样的三角形量在PC级别的机器上目前还是远不能实现交互式帧率的。
所以,如何减少渲染地形的图元数目一度成为室外场景实时渲染的关键问题。
随着硬件技术的发展,每秒钟处理上亿个三角形已不再困难。
很多计算如几何变换和光栅处理都可以交给GPU去计算。
在GPU数据吞吐量很大的情况下,如果~个算法在剔除渲染图元的过程中占用了太多CPU资源,出现GPU等待CPU的情况,那么即使算法在剔除多余顶点方面做得很好,总体绘制效率也不是高效的。
所以在目前的显卡硬件架构下,能充分发挥CPU与GPU性能,消除局部效率瓶颈的算法才是最好的算法。
在真实感仿真上,比如对草丛的模拟,如果全部用细节三角形面片,那即使一片草地需要渲染的三角形个数也是难以想像的。
目前对物体细节的表现还主要是运用纹理贴图的方式来实现。
光影效果的表现涉及局部光照模型、全局光照模型、光照贴图、阴影生成等相关算法和技术。
1.1.2国内外技术发展历程和现状
在国外,3D游戏中场景渲染技术的发展大致可以分为三个阶段:
三维真实感场景渲染领域的研究在国外起步很早,很多相关算法在80—90年代就已提出,并建立了非常严密的理论体系。
比如对场景渲染非常重要的多边形LOD算法,场景空间管理的BSP、四叉树、八叉树等算法,光照模型,阴影算法等。
但是这些算法在资源有限的微机上受到各方面限制。
当时的这些算法还仅限于在大型机和图形工作站上实现。
92年,随着IDSoft公司一款游戏Quake(雷神之锤)的发布,标志着第一款支持多边形模型、动画、粒子系统的全三维游戏在个人计算机上正式诞生。
在随后发布的QuakeII、Unreal、HalfLife等游戏中,场景渲染相关的LOD技术、BSP空间管理技术、光照贴图、凹凸贴图、多重贴图等相继应用在3D游戏中。
随后出现的Quake、Unrea]游戏引擎,更是标志着3D游戏引擎技术走向成熟。
现阶段,随着显卡技术的发展,GPU不但支持标准的(固定的)变换与光照(T&L)管道线,还支持顶点着色(vertexshader)和像素着色(pixelshader)方式,开发人员因此有了更大的自主空间,可以实现更真实的绘制功能。
在此环境下,各大公司都着手开发新一代3D游戏引擎。
其中商业引擎以QuakeIII、UnrealII最为出名。
此外,软件开源社区的不断壮大,也诞生出一些比较好的开源3D引擎,比如OGRE等。
运用这些引擎中的场景渲染技术能生成真实感更强的水波、天气系统、茂密的森林、流熔岩的火山等效果,场景的规模也更大,顶点动态光照技术也开始在室外场景中应用。
3D游戏的趋势是往超大规模场景,真实感表现的虚拟世界发展。
大规模场景表现和游戏的虚拟仿真,自然也成为了世界上3D游戏行业非常热门和前沿的研究领域与方向。
比如美国暴雪公司的“魔兽世界"和韩国NCSOFT公司的“天堂2"已经在这两个方而取得了相当的突破和进展。
暴雪的“魔兽世界"按人的比例来计算,世界地图已达到35km×35km。
随着电子娱乐业的迅猛发展,国内目前从事3D引擎研究和开发的公司也多了起来。
比如目标软件的GFX3D引擎,盛大公司的3D引擎,网易公司的3D引擎,锦大科技的AURORA引擎等,还有一些游戏工作组的3D引擎,比如WIN3D系列,Origo系列,TUAM9系列引擎等。
但总体上来说,国内还处在使用和模仿优秀引擎的阶段,很多都是在国外优秀引擎上做一些延伸。
真正严格意义上自主开发产品还几乎没有,或者说自主开发产品的质量和欧美日韩还有一定差距。
这种差距在一定程度上反映在3D大场景渲染技术方面,因此深入的展开这方面的研究十分必要。
1.2课题研究的目的
本课题希望通过剖析多款成熟3D游戏、引擎,对3D引擎的核心部分一室外场景渲染技术进行探讨,并设计和实现自己的一些方案,给我国商业游戏引擎的开发带来一些启示。
1.3论文的篇章结构
本文本着注重实际应用的前提,通过剖析开源3D引擎并运用推测验证的方法,对室外场景渲染的主要技术进行了研究和实现,在很多章节也提出了自己的方案和优化方法。
以下对各章的内容进行简要描述。
第一章绪论。
介绍3D室外场景渲染的基本概念,介绍国内外在这一领域的研究现状,阐述课题的意义和研究内容。
第二章介绍3D图形渲染的基础知识,包括图形渲染的原理、流程以及实现图形渲染可以应用的类库OpenGL。
第三章研究室外超大场景地形网格的生成与简化算法,比较各种基于LOD思想的网格简化算法的优劣,提出基于几何多重映射(GeoMipMap)的地形绘制优化方案,并得以实现。
研究也涉及到地形的空间管理算法、可见性剔除算法、超大场景的数据加载方式研究等。
第四章研究场景的真实感渲染技术。
主要涉及应用多层纹理混合贴图模拟融合性地表技术,室外场景的光影效果处理技术,天空、树、草、雾等的渲染方案和技术。
第五章描述本设计实现的室外渲染软件DemoOSRender,以及程序编写过程中可用的优化技术。
第六章对全文进行总结,介绍开题论文的完成情况,客观评价优点和不足,并给出改进的方向。
第二章3D游戏场景渲染的基础知识
室外场景渲染从基本原理上来说可以分为两类:
基于体素的渲染方法和基于多边形的渲染方法。
早期的3D游戏,如三角洲特种部队就是采用的体素渲染法。
体素法类似光线跟踪渲染,它从屏幕空间出发,找到地形与屏幕像素发出的射线交点,然后确定该像素的颜色。
这种方法不依赖具体的图形硬件,整个渲染过程完全使用CPU处理,因此它不能使用图形卡硬件来加速,并且对于一个场景来说,往往不只是地形,还有其他使用多边形描述的物体,体素法渲染的图像很难与硬件渲染的多边形进行混合,因此这种方法现在用得极少,而多边形渲染方法则成为一种主流。
选择多边形来描述和渲染地形有很多优点,最主要的是它能够很好地使用硬件加速,并且能够和其他多边形对象一起统一管理。
因此本课题仅对基于这种多边形面片的场景渲染技术进行研究。
2.1基于多边形面片的3D渲染原理
2.1.1基于多边形面片的图形绘制流程
用多边形面片来建立物体的三维模型有容易表示、计算简单、容易绘制几个方面的好处,因此在游戏三维图形渲染中被广泛采用(通常是三角形面片)。
从模型的顶点送入渲染管道到最后形成二维图像的过程如下图2.1所示:
2.1.2变换
渲染管道中大部分工作是把对象模型的顶点在一个坐标系中的表示转化为另一坐标系中的表示,一般需要经过模型变换和相机变换两个过程。
通常,几何模型被保存在自身的建模空间,即每个模型拥有单独的局部坐标系统。
为了建立场景几何关系,模型将统一放置到世界坐标系中,从建模坐标系变换到世界坐标系叫模型变换。
几何模型的最终成像是在摄像机坐标下,将场景物体从世界坐标系变换到摄像机坐标系叫相机变换。
相机的外部参数决定了相机坐标系,因此场景在屏幕上的成像位置与形状和相机的外部参数有关。
模型和相机变换采用4×4齐次矩阵表示,其形式如下:
比如平移变换可表示如下:
点(x,y,z)平移(tx,ty,tz)后的坐标为(x",y",z")。
此外还有旋转、缩放变换,这三种基本的变换可以合成任意几何变换。
通常把模型变换和相机变换的矩阵复合成一个矩阵处理,便于提高效率。
在所有的图形绘制库中,都提供了程序接口供应用程序设置模型和相机变换对应的矩阵。
其中,模型变换由场景物体的平移和旋转、缩放变换组成,相机变换则通过设置相机的位置、相机方向和向上向量来决定。
2.1.3裁剪
相机的参数包括投影方式、近平面、远平面、视野和屏幕的长宽比率,它们决定了物体从相机坐标系投影变换到屏幕坐标系的位置。
这些参数实际上定义了一个视域四棱锥,也叫做视锥体。
位于视锥体之外的场景部分不需要送入后续阶段处理。
因此,对完全位于规一化的设备空间之外的几何元素,可简单地舍弃。
而部分位于规一化的设备空间之外的几何元素则需要进行裁剪操作。
由于裁剪的面就是立方体的6个表面,实现起来非常简便。
应用程序也可以定义额外的平面对场景进行裁剪。
视域裁剪通常由底层图形AP]自动完成。
注意这里所说的裁剪是比后面章节要介绍的视锥体剔除更底层的裁剪。
2.1.4投影
把三维物体变为二维图形表示的过程称为投影,其又分为平行投影和透视投影。
透视投影是所有投影线交于投影中心;而平行投影是投影线平行,投影中心在无穷远。
在游戏虚拟场景模拟中主要应用透视投影。
透视投影可分为一点透视、二点透视和三点透视。
针对一点透视投影如下图:
从上图P点在观察平面上的投影我们可以得到描述尸点的参数方程:
2.1.5光栅化
从顶点组成的几何模型变换到像素的过程称为光栅化(Rasterization)。
它的机理与得名来源于CRT显示器的电子枪发射方式。
光栅化可分为四个子阶段,即消隐、逐像素光照明计算、纹理映射和颜色融合。
(1)消隐
消隐的目的是解决场景的可见性问题。
所谓可见性计算,是指计算物体投射到投影平面如果有交叠,观察者应该看到哪个投影点。
图形学中经典的解决方案是物体空间Z一缓冲器算法和图像空间的光线跟踪算法。
由于Z-缓冲器算法易于在图形硬件中实现,逐渐演化称标准的图形硬件消隐技术。
在深度缓冲器中,每个像素上始终保留最接近视点的深度。
当光栅化产生新的像素后,该像素的深度和保存在深度缓冲器的像素深度进行比较,如果小于已有的像素深度,则用像素的颜色和深度替换分别保存在颜色缓冲器的像素颜色和深度缓冲器中的像素深度,反之保持不变。
在绘制之前,深度缓冲器必须初始化为最远的深度,以保证可见性计算的正确性。
(2)光照计算
光照计算影响物体的外观。
进行光照计算的几个要素包括光源位置、光源属性、光照模型、物体表面材质属性、纹理和物体表面几何属性(包括法向、微几何结构)等。
最简单的光照明计算技术是在物体建模时指定每个顶点的颜色和纹理坐标,在绘制时直接利用颜色和纹理映射融合为最终颜色。
这种方法称为平坦渲染(Flatshading)模式,它的速度快,但效果欠佳,是早期游戏中最常用的技术。
真正意义上的光照计算必须指定每个光源本身的属性,包括光源的类型(点、线、面光源)、位置和光源的漫反射/镜面反射的颜色,然后根据光照模型(分局部光照明模型和全局光照明模型,前面所述直接指定顶点颜色的方法可看作最简单的局部光照明模型)在物体的每个顶点计算每个光源对该顶点的光亮度贡献,最后在光栅化层插值顶点上的颜色。
这种处理模式称为Gouraud渲染模式,著名游戏guakeEi就使用了Gouraud渲染模式。
逐顶点的光照计算对应于Gouraud渲染模式,而逐像素光照计算则对应于法向渲染模式(也称为Phong渲染模式)。
Phong模式在游戏场景渲染中也被广泛采用。
在游戏三维引擎设计中,必须根据图形硬件配置和场景复杂度选择合适的光照渲染模式。
(3)纹理映射
纹理映射是增强场景真实感的一种简单有效的技术。
它将预生成的图像直接贴在物体表面,模拟物体表面外观,因此也叫贴图法。
纹理映射的扩展技术有很多,包括环境映射、光照图、球面映射、立方体映射、凹凸映射、位移映射等,是图形渲染加速中最重要的手段。
在真实感渲染章节会有更详细的讨论。
(4)颜色融合
对于每一个像素,前面步骤可能产生光照计算和纹理映射两类颜色值。
不仅如此,光照明计算的结果可能来自多个光源,而每个光源可导致漫反射和镜面反射的光亮度。
此外,同一像素也可能采集来自多个纹理的值,如多通道纹理映射和单通道多重纹理映射。
所有这些颜色值将根据各自的不透明度融合出最终结果。
颜色融合不仅能加强场景真实感,还能产生半透明绘制、景深、基于alpha缓冲器的反走样、软阴影等特效。
2.2图形绘制库OpenGL
2.2.1OpenGL的基本理解
图形渲染引擎中的最底层可以自己实现,但是没有显卡硬件厂商的支持,自己实现的往往不能得到硬件加速特性。
所以游戏中的图形渲染通常需要利用0penGL和DirectX等成熟图形库。
现在很多游戏引擎对两个库都提供支持,作为学术研究OpenGL是更好的选择,所以本设计在实现算法时选用了OpenGL。
OpenGL是一个封装了硬件图形加速器的软件接口口7|,几乎全部显卡对它都提够良好支持。
它也是图形库的业界标准。
OpenGL包括了100多个图形操作函数,开发者可以利用这些函数来构造景物模型、进行三维图形交互软件的开发。
也可以说,OpenGL是一个高性能的图形软件开发包。
OpenGL支持网络,在网络系统中用户可以在不同的图形终端上运行程序显示图形。
OpenGL作为一个与硬件独立的图形接口,它不提供与硬件密切相关的设备操作函数,同时,它也不提供描述类似于飞机、汽车、分子形状等复杂形体的图形操作函数。
用户必须从点、线、面等最基本的图形单元开始构造自己的三维模型。
当然,象3DSMax那样更高一级的基于OpenGL的三维图形建模开发软件包将提供方便的建模工具。
所以,OpenGL的图形操作函数十分基本和灵活。
例如OpenGL中的模型绘制过程就包括网格线绘图方式、反走样网格线绘图方式、平面消隐绘图方式、光滑消隐绘图方式、加阴影和纹理的绘图方式等。
总的说来,OpenGL的功能包括以下几个层面:
(1)模型绘制
OpenGL能够绘制点、线和多边形。
应用这些基本的形体,可以构造出几乎所有的三维模型。
(2)模型观察
在建立了三维景物模型后,需要用OpenGL描述如何观察所建立的三维模型。
(3)颜色模式的指定
OpenGL应用了一些专门的函数来指定三维模型的颜色。
(4)光照应用
用OpenGL绘制的三维模型必须加上光照才能与客观物体更加相似。
OpenGL提供了管理四种光(辐射光、环境光、镜面光和漫反射光)的方法,另外还可以指定模型表面的反射特性。
(5)图象效果增强
通过反走样、混合和雾化等函数来增强图象的效果。
(6)位图和图象处理
OpenGL还提供了专门对位图和图象进行操作的函数。
(7)纹理映射
OpenGL提供的一系列纹理映射函数使得开发者可以十分方便地把真实图象贴到景物的多边形上,从而可以绘制逼真的三维景观。
(8)实时动画
为了获得平滑的动画效果,需要先在内存中生成下一幅图象,然后把已经生成的图象从内存拷贝到屏幕上,这就是OpenGL的双缓存技术(doublebuffer)。
OpenGL提供了双缓存技术的一系列函数。
(9)交互技术
OpenGL提供了方便的三维图形人机交互接口,用户可以选择修改三维景观中的物体。
2.2.2OpenGL的工作流程
整个OpenGL的基本工作流程如2.4图:
其中几何顶点数据包括模型的顶点集、线集、多边形集,这些数据经过流程图的上部,包括运算器、逐个顶点操作等;图像数据包括象素集、影像集、位图集等,图像象素数据的处理方式与几何顶点数据的处理方式是不同的,但它们都经过光栅化、逐个片元(Fragment)处理直至把最后的光栅数据写入帧缓冲器。
在OpenGL中的所有数据包括几何顶点数据和象素数据都可以被存储在显示列表中或者立即可以得到处理。
OpenGL中,显示列表技术是一项重要的技术。
OpenGL要求把所有的几何图形单元都用顶点来描述,这样运算器和逐个顶点计算操作都可以针对每个顶点进行计算和操作,然后进行光栅化形成图形碎片;对于象素数据,象素操作结果被存储在纹理组装用的内存中,再像几何顶点操作一样光栅化形成图形片元。
在整个流程操作的最后,对图形片元进行一系列的逐个片元操作,最后的象素值送入帧缓冲器实现图形的显示。
2.2.3OpenGL的程序结构
第一部分是初始化部分。
主要是设置一些OpenGL的状态开关,如颜色模式(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,裁剪等等。
第二部分设置观察坐标系下的取景模式和取景框位置大小。
主要利用了三个函数:
函数voidglViewport(1eft,top,right,bottom):
设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以象素表示);函数voidglOrtho(1eft,right,bottom,top,near,far):
设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;函数voidgluPerspective(fovy,aspect,zNear,zFar):
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 游戏 引擎 中的 室外 场景 渲染 技术研究 实现