基于GeoMipMaps算法大规模地形优化探究.docVIP

基于GeoMipMaps算法大规模地形优化探究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于GeoMipMaps算法大规模地形优化探究

基于GeoMipMaps算法大规模地形优化探究摘 要:针对大规模地形存在的数据量多、渲染速度慢等问题,提出了一种高效的地形场景优化方法。对GeoMipMaps算法进行改进,利用地形分块技术进行视域剔除,减少地形块数量;同时,引入高度判断方法,保留地形块高度数据,在降低需要绘制三角形数量的同时保留较多的地形起伏细节。实验结果表明,该方法能有效提高地形漫游的效率和可视化结果,实时生成大规模地形。 关键词:GeoMipMaps;地形简化;区域划分 中图分类号:TP317.4 文献标识码:A 文章编号2013)003015602 0 引言 随着虚拟现实技术的快速发展,大规模地形的实时描绘渲染已经成为当前计算机图形学、虚拟现实等领域的研究热点。近年来,虽然图形硬件加速技术已经有了巨大进步。然而,对于海量地形数据更逼真、更精细的场景显示需求,单纯依赖硬件加速,并不能满足实际应用对地形渲染速度的需求。对于上述问题,近年来许多专家从不同方面进行过研究。主要有:一方面,通过平均分割处理方法将地形分割成数据量较小的子块,通过一定的调度策略,来解决由于数据过于庞大不能将地形数据一次性调入内存的问题;另一方面,采用LOD算法对调入内存的地形数据进行简化,以减少需要绘制的地形数量。 Geometrical Mipmapping(几何多层映射,简称GeoMipMaps)方法使地形绘制算法更好地适应现代图形卡的硬件架构。该方法细节简化,方式非常简单,但是由于该算法需要对每个地形块与视点进行距离判断来确定层次细节,计算开销巨大。虽然传统的GeoMinMaps算法采用隔行扫描的算法来减少计算量,但该方法是在降低地形细节精度的同时降低距离精度,生成的地形失真度大。同时由于该算法是直接剔除简化的地形细节,会导致地形出现较大的高度偏差。 对此,本文对GeoMipMaps算法进行了改进,引入四叉树结果对地形块进行多层次区域划分,首先将视点与区域块中心进行比较,当距离满足特定条件后再与下一层次区域块进行比较,从而剔除不需要进行比较的区域块,大大降低距离比较的计算开销。同时,在每个地形中引入高度判断方法,在地形层次细节简化后保留地形最高、最低数据来保持地形的高度细节。 1 GeoMipmaps算法思想 传统GeoMipmaps算法的思想是在X-Z平面上对整个地形场景进行划分,并通过正方形规则网格表示一个地形块的顶点数据,且块的大小满足(2n+1)×(2n+1)。在同一个块内分辨率相同,不同的块采用不同的分辨率。最高的细节层次用原始地形块网格表示;而后续的每个网格表示对上一个网格的简化。通过简化,地表特征细节也越来越少。在地形预处理时,对每个层次中块的分辨率,都取一个屏幕误差阈值δ,并根据δ预先计算出视点到块的距离λ,保存在查找表中。当实时绘制时,根据距离查找表中的距离λ决定该地形块的分辨率。简化后的模型距离视点越远处,分辨率越低,地形也越粗糙。 2 GeoMipmaps算法改进 传统的GeoMipmaps算法需要对每个地形块与视点进行距离判断来确定该地形块所显示的层次细节,计算量巨大。而视点外的地形块在地形绘制中是可以剔除的,因此对这些地形块进行的比较并不是必须的。本文通过引入四叉树结构对地形进行多层次分区,通过对某一层分区与视点的距离来确定是否对其子分区进行距离比较,从而减少了地形块的距离比较次数,降低计算开销。 整个虚拟场景可以看作是根节点区域,场景中每个子区域形成一个树节点,当对应区域未达到地形块大小时,区域继续划分,树的叶子节点继续分裂,同时将节点与视点的距离保存在查找表中。 针对四叉树结构,定义如下数据结构: Struct TerrainBlockQuadTree { long blockTreeID int blockTreeLen TerrainBlockQuadTree Children\[4\] TerrainBlockQuadTree farChild } blockTreeID表示当前区域标识;blockTreeLen表示当前树节点与视点之间的距离;Children\[4\]表示当前节点的4个子节点,其中Children\[0\]-Children\[3\]分别表示“左上”、“右上”、“左下”、“右下”象限。farChild表示当前节点的子节点中距离视点最远的节点。 算法的具体思想是首先利用四叉树结构对地形进行多层次划分,在划分的同时判断当前节点到视点的距离、子结点中距离视点距离最远的节点farChild,并保存在查找表中。然后从最大的分区开始进行距离判断,确定需要进行显示的区域,并剔除不需要显示的区域。这

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档