大规模室外地形的实时渲染.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大规模室外地形的实时渲染

大规模室外地形的实时渲染 主要内容 一、海量地形数据的存储 二、LOD算法 三、四叉树结构 四、四叉树结构中的LOD算法 五、地形裂缝的消除 六、几何突变问题 七、实例展示 海量地形数据的存储 一、问题的由来 在FPS(第一人称视角)和MMORPG(大型多人在线角色扮演)游戏中几乎都存在室外场景,虽然很多游戏对室外场景大小的要求并不高,但设计一个具有无限大小的室外游戏场景仍是非常重要的。 对于一个100Km*100Km的地形而言,如果以每个网格0.1m*0.1m来计算,则需要存储:10000*10000=1亿个点的高程数据。如果直接将这么多的数据春放在计算机内存中,则对计算机内存和显卡的要求将非常高,且会极大的影响图形显示的速度。事实上,在游戏过程中,人的视角是有限的,不可能一览100Km* 100Km大小的地形,因此直接显示在计算机屏幕上的区域事实上很有限。 那么如果来存储这些地形数据,以及如何读取以及何时读取这些地形数据呢? 海量地形数据的存储 二、数据的分块存储 从下面的图形可以看到,人在浏览三维游戏场景时,往往只能看到整个场景的一部分(下面的2幅截图在不同时刻截取,其内容各不相同),也就是说在视频显示时实际上只能显示图形区域的一部分。这样就没有必要将整个场景的数据一次性的读入到内存中,而只需要将视觉范围内的数据读入到计算机内存即可。当然,当人的视点移动时,就需要更新相应的数据。 海量地形数据的存储 这样可能也存在一个问题,当人的视点频繁移动时,会不停的从磁盘中读取数据。由于磁盘读取数据所花的时间比较长,因此会严重削弱地形绘制的实时性。可采用如下方式提高数据读取的速度: (1)对数据进行分块存储,将人的视点所能观察到的范围的数据作为一块,并将整个地形分成若干个这样的块,以块为单位进行存储。如下图所示。 海量地形数据的存储 当人的视点停留在区域A时,其视觉范围不会超过A~I之间的区域。因此只要判断视点所在的区域就可以确定读入到内存中的数据块。在上图中,如果视点在A所在的区域,则需要将A~I所指示的区域的数据读入到内存中。同时由于相邻的9个数据块可分成3组,分别是C、D、E;B,A,F;I,H,G。组内的块均相邻,每块的数据连续存储,因此减少了数据读取的时间。 (2)双缓存技术。为了进一步减少读取数据的时间。当视点在A区域内时,可以事先将A~I的数据放到显存中,以便显示,并开辟一个数据读取线程,读取磁盘中的J~Y数据块的数据并保存在内存中。当视点从A区域移动到I区域时,则将显存中K,J,Y,X,W区域的数据取代原来用于保存C、D、E、F、G区域的数据,同时从磁盘中读取1~9的数据取代原内存中M~U的数据。这样能够保证数据读取的实时性。在这里需要注意的是,在每从磁盘中读取一块数据时,需要计算该数据块在文件中的偏移地址,同时还应计算其在内存中的偏移地址,以便实现正确的交换;同样,从内存交换到显存也应该计算其交换地址。 LOD算法 上述处理方法不仅可用于游戏中设计大型的场景,在虚拟现实,GIS等领域也可使用。 不过,在一些游戏中,比如空战游戏,视点往往会发生变化,其视角所能观察的范围也会发生变化。有些时候视角很大,所观察的区域也很大,如果按照上述方法将所有的物体均按照其原来的的大小全部放入显存进行渲染,则会极大的影响显示的速度。但事实上,在视点距离物体较远时,玩家根本无法区分物体的细节,也就没有必要用相同的点来描述物体。因此可以对距离玩家较远的物体进行模型简化,有的甚至可以用一个点来表示,这样就可以使得需要渲染的三角面数量减少,从而提高渲染的速度。   在DirectX 3D中,专门提供了一个ID3DXPMesh的接口,该接口可通过其提供的方法减少或增加构成物体网格的面片数,从而实现不同细节层次下的网格。如下图所示。 LOD算法 上述接口对于单个的模型而言没有任何问题,而且恰当地选择细节层次模型能在不损失图形细节的条件下加速场景显示,提高系统的响应能力。选择的方法可以分为如下几类:一类是去掉那些无法用图形硬件绘制的细节,如基于距离和物体尺寸标准的方法。另一类是去掉那些人类视觉觉察不到的细节,如基于偏心率,视野深度,运动速度等标准的方法。此外还有一种方法考虑的是保持恒定帧率。   (1)剔除法   在一些特定的情况下,场景中的一部分几何形体是什么时候都无法被观察者看到的。在此情况下,图形系统不再绘制这部分物体。 (2)距离标准   这种方法考虑的是物体到观察者的距离。这个距离是从视点到物体内指定点的欧氏距离。这种方法的理论依据是当一个物体距离视点越远,此物体能够被观察到的精细的

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档