没有合适的资源?快使用搜索试试~ 我知道了~
基于DirectX的真实感地形实时渲染技术-开题报告.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 76 浏览量
2022-06-21
09:13:47
上传
评论
收藏 1.39MB DOC 举报
温馨提示
试读
27页
基于DirectX的真实感地形实时渲染技术-开题报告.doc
资源推荐
资源详情
资源评论
一.综述本课题国内外研究动态,说明选题的依据和意义
1.选题意义
地形漫游已经被广泛应用于游戏、虚拟现实(VR)、飞行仿真和地理信息系统
(GIS)等环境中。在传统的仿真中,地形采用艺术家手工建模,但是手工建模价格昂
贵,而且不能产生连续的细节层次(Level of Detail,LOD)
[6]
。大规模的地形渲染算法
需要采用细节层次来减少实际需要绘制的地形数据
[3]
。
地形在军事和飞行仿真、虚拟现实(VR)、地理信息系统(GIS)等领域中起着越来
越重要的作用
[4]
。对于数字高程数据,经常使用的规则网格模型是数字高程模型
(Digital Elevation Model,DEM)
[11]
,然而,在大规模地形场景中,DEM 数据就会显
得很庞大,甚至于超出普通图形卡的显示范围,使得交互性很差。在实际场景中,
观察者在每个观察点所能看到的只是整个数据的一小部分,所以靠近观察者的场景,
需要渲染得详细,而远离观察者的场景就不需要那么详细
[5]
。
2.国内外的研究动态
下文对前人提出的各种算法作一个介绍,并进行比较,分析其优缺点。
1996 年,Hugues Hoppe 首先提出了将递进网格(Progressive Meshes)应用到地形
中,该算法通过一系列的边折迭(EdgeCollapse),将原始数据网格简化为一个简单的
基网格,这样就可以根据其逆操作边分裂(EdgeSplit)将细节逐渐增加到基网格上。它
的优点是在简化的过程中自然形成序列和层次结构,可以抽取多个连续的细节层次,
支持数据的压缩存储、渐进传输和几何数据重建。
1996 年,Lindstrom 提出了一种基于规则网格的细节层次实时高度场 (height
field)绘制算法
[2]
。该算法使用三角形进行自顶向下二叉分割细分,引入了四叉树
(Quadtree)技术。该算法有个主要的缺点就是随着视点的移动,在构网的过程中会产
生顶点裂缝。
1997 年 , Duchaineauy 提 出 了 实 时 优 化 性 网 格 (ROAM , Real—time Optimal
Adaptive Meshes)算法
[10]
,其基本思想是在对地形进行三维显示时,依据视点的位置
和视线的方向等多种因素,对于表示地形表面的三角形片元进行一系列的基于三角
形二叉剖分分裂与合并,最终形成和原始表面近似且无缝无叠的简化连续三角化表
面。该算法是目前应用最广的一种算法。它也是基于三角形二叉剖分进行实时简化,
但是它使用合并三角形队列和分裂三角形队列对网格进行增量式简化和细分。
2000 年 , Willem H . de Boer 在 MipMap 技 术 的 基 础 上 提 出 了 Geometrical
MipMapping 技 术 , 将 它 引 入 到 快 速 地 形 渲 染 的 算 法 中 , 该 技 术 简 称 为
GeoMipMap
[13]
。采用 MipMap 技术的綦本思想是,根据物体所处的不同远近距离,
选用并生成不同的纹理,物体在视点近处时采用细节多的纹理,远离时采用细节少
的纹理。GeoMipMap 在地形渲染领域中是个全新的概念,适应了当时 3D 硬件的发
展。
2002 年,Christopher Zach 提出把 Geomorphing 整合到细节层次技术中进行地形
的 实 时 渲 染 。 该 方 法 选 用 离 散 细 节 层 次 技 术 , 在 两 个 不 同 层 次 地 形 过 渡 时 ,
Geomorphing 插入顶点,使得过度平缓,从而提高在漫游过程中的视觉效果。但是
寻找需要插入的顶点会有一定的难度,如果不匹配,就会产生明显的瑕疵。
2003 年,Bent Dalgaard Larsen 等人把优化的细节层次方法应用到实时地形渲染
中,其基本思想是比较当前 tile 的层次和较低分辨率 tile 之间的差别
[7]
,计算出误差
如果误差超出一定局限,就采用较低分辨率来进行渲染。但是该方法中误差标准制
定不是很严格,而且当视点发生交化时,每一帧渲染的多边形的数量就会发生明显
的变化,这在实时渲染中会产生一定的视觉影响
[9]
。
二.研究的基本内容,拟解决的主要问题
主要研究和探讨了基于 DirectX 的真实感地形实时渲染技术。在规则格网 DEM
基础之上,采用基于 LOD 的 DEM 多分辨率动态构网技术和多层纹理贴图方法,生
成比较真实的地面景观,同时添加了天空、烟雾等效果,使显示效果更加真实。
使用当前较为主流的 LOD(level of Detail)地形算法,地形(Terrain)的动态
渲染技术,其中包括四叉树(QuadTree)地形分割、视点相关的细节层级判断条件、
节点的三角扇形渲染等完成真实感地形的渲染。
1.基于 LOD 的动态构网算法的实现
由于地形规则格网数据的特殊性,我们不需要采用链表结构来实现四叉树,而
是创建了两个数组,一个用来存储地形的高程信息,另一个用来存储对应点的分层
信息,通过两次扫描数组来实现地形的分层和渲染。这样,既可以降低编程难度,
也能提高访问内存的效率,从而整体提高运行的速度。LOD 技术可分为规则的自顶
向下的简化和不规则的自下而上的简化,而自顶向下的简化又有四叉树和二叉树。
我们采用自顶向下的四叉树算法。其基本思路是:先把地形一分为四,用递归
的方法对每个网格渲染。对每个网格,如果达到最高精度则退出;如果不在视野内
也退出。接着对符合条件的网格递归下去。该算法的关键之处主要有:数据的存储
布局、如何生成连续实时的 LOD 化的地形网格以及节点评价。在决定地面的细分精
度时,我们要考虑两个因素:一是该小块距离视点的远近,离视点越近,需要的精
度越高;二是地面的起伏程度,地面的起伏程度越高,需要的精度越高,反之越小。
2.地表细节的处理
当地形较大而对应的纹理比较小时,往往每个高程点只对应纹理上的一个像素,
甚至几个高程点对应一个像素,这样在渲染时,可能屏幕上的一个三角形只对应纹
理中的一个或几个像素,得到的贴图效果就会非常的差,很容易出现色块或者很大
一块都是一种颜色的情况,效果很差。解决这一情况的方法有两种,一是将大纹理
分割成小的单位,动态加载需要的纹理,另一种是采用多遍纹理映射的方法,它用
一个较大的纹理来表现地面的大致特征,然后再用一个小的纹理和大的纹理调制在
一起,表现地面的细节。第二个纹理通常采用循环贴图的方法。不同的细节纹理可
以表达不同的地貌。相比之下,第二种方法更简单,效果也更好。因此本文采用了
第二种方法来绘制纹理
[12]
。
三.研究步骤、方法及措施
1.DirectX 三维图形环境
Direct3D 即 DirectX 的三维部分,集成了开发 DirectX 程序三维图形部分的所有
API 函数。Direct3D 标准的图形显示过程可分为两个阶段。第一阶段称为坐标变换
和光照。在这个阶段,通过设置一个虚拟相机,世界空间的三维浮点坐标转换成屏
幕空间以像素为单位的整数坐标(坐标变换不只是物体顶点位置的变换,它还可能
包括顶点法线向量、纹理坐标等的变换)然后通过计算当时场景中的光照属性,赋
予顶点相应的颜色值
[8]
。第二阶段称为光栅化处理段,Direct3D 将经过 T&L 处理的
顶点组织为以点、线、面为基础的图元,应用纹理贴图和物体的颜色属性,决定顶
点(或像素点)的最终颜色值。有时根据特殊的需要,我们可以跳过其中的某些阶
段
[1]
。
2.地形处理
基于高度图的 3D 地形渲染,其最基本的原理就是,地形上各个点的高度值存
于一个文件中(高度图),渲染时,把高度图中的高度数据设为顶点缓冲区中对应顶
点的 Y 坐标值,那么自然就会产生高低起伏的地形了。
(1)地形高度图
从几何形态看,不同的地形外貌,取决于地形表面的每一个距离地平面的高度
值,这些高度值可用二维数组来存储。
生 成 一 个 地 形 高 度 图 数 据 的 最 直 接 方 法 是 , 利 用 图 形 编 辑 软 件 ( 如
Photoshop),绘制一个与地平面尺寸相同尺寸的黑白图形,即所谓的地形高度图 。
(2)地表的四叉树分割
LOD 地形渲染技术是根据观察者距离的远近,来决定地形表面细节层级(Level
of Detail)的。近处的地形采用更细的层级进行渲染,远处的地形采用较粗糙的细
节层级进行渲染。这样不仅可节省远处地形的渲染时间,又不失近处地形的较精致
渲染。
LOD 算法是利用四叉树(QuadTree)对二维地面进行分割的,每次将正方形分
割为四个等分的正方形,直至分割的正方形大小达到某个预设值,才对每个正方形
进行三角形渲染。由于预先设定了方阵的边长为 2 的指数次方,因此,分割所获得
的的新地表顶点坐标总是一个整数。为了存储四叉树分割的结果,可创建一个二维
数组来记录每个节点的分割状态。
(3)视点距离相关的细节层级判别
上面利用节点是否与视截体相交构造了一个分割条件。当节点不在视线范围内
时,节点分割标志将设置为 false。对于同样位于视线范围内的节点,可以通过计算
节点与摄影机距离的远近,重新修正节点是否应该分割,以此构造出在视线范围内
的更细致的节点细节层次分割。
其实现函数以一个节点的中心 x 和 z 坐标、节点边长以及一个摄影机作为参数,
先判断节点是否在视截体内,在则设置分割标志数组元素值为 true,不在则设置
false 返回并返回。在视截体内的,继续进行视点距离相关的分割判别,然后再重新
设置分割标志,对于确定要继续分割的节点,采用递归方式继续将节点分割下去,
相应的数组分割标志得到重置。
(4)地形节点的渲染
上面的四叉树地形分割,将地形划分成一个个大小不同的地块。近视点的地块
分割得大些,远视点的地块分割得小些。渲染这些大大小小的正方形地形块,大的
地块用大的三角形渲染,而小的地形用小的三角形来渲染,从而达到 LOD 不同细节
层级渲染的目的。渲染是一个递归的过程,关键是判断出节点的分割标志,没有分
割的,将该节点地块渲染出来,分割的节点地块则通过递归函数继续进行渲染。
每个正方形节点地块的三角扇形方式的渲染,最多需要送入 10 个顶点到渲染管
道流水线,这些顶点包括节点的中心点,4 个角点、可能需要的 4 个边线中点以及重
复一次的顶点,以形成一个封闭的正方形。在渲染各个节点前,先创建一个长度为
10 的顶点数组。每次节点渲染时,将该节点的三角扇形顶点写入数组,然后调用函
数将数组中的顶点数据装入顶点缓冲区进行渲染。
(5)规范节点的分割
按上述渲染方法将地形渲染出来,会出现地表“窟窿”现象。地表“窟窿”是由于节
点间层次大于等于 2 的两个节点相邻造成的。消除了一个节点的分割标志后,仍需
将内部的所有节点标志都消除。相邻的节点也需做上述处理,否则会产生新的“窟窿”。
节点分割的规范化是在每次地形分割后立即进行的,以免节点渲染函数将不规
范的节点渲染出来,产生地表“窟窿”,为此,编写函数将节点分割和规范化绑定起来
处理。
四.研究工作进度
序号 时间 内容
1 2011.6.7-2011.6.8
完成选题工作
2 2011.6.9-2011.6.12
填写秋季毕业设计申请表
3 2011.6.13-2011.8.31
完成资料的查询
4 2011.9.1-2011.9.13
着手开题报告
5 2011.9.14-2011.9.20
开题报告审核
6 2011.9.21-
2011.10.12
完成数据等资料准备工作
7 2011.10.13-
2011.11.12
实现地形显示功能
8 2011.11.13-
2011.11.28
优化改进地形
9 2011.11.29-
2011.12.14
完成论文初稿
10
2011.12.15 后 定稿,答辩
五.主要参考文献
[1]叶志军.Visual C++/DirectX9 3D 游戏卡发导引[M].人民邮电出版社,2006.2:145-
146
[2]Frank D.Luna.DirectX9.0 3D 游戏开发编程基础[M].清华大学出版社 2007.4:78-79
[3]李慧,崔磊,林诚凯,潘金贵.一种超大规模地形实时渲染方法[J].系统仿真学
报.2004,16(4)
[4]高俊,夏运钧,游雄等.虚拟现实在地形环境仿真中的应用 [M].解放军出版社,
1999:78-80
[5]李志林,朱庆. 数字高程模型.武汉测绘科技大学出版社[M].2000:98-99
[6] 陈 刚 . 地 形 TIN 模 型 的 实 时 连 续 LOD 算 法 设 计 与 实 现 . 测 绘 学 院 学 报
[J],2003,20(4):286—289
[7]臧新锐,付春龙,樊旭艳.虚拟环境中大范围三维地形模型简化方法研究与实现
[M].GIS 技术,2007,81(3):81~83
[8]张水坤.DirectX 在绘制三维分形图形算法中的实现[J].科技创业月刊.2007,20(9)
[9]孙前,邱国庆.基于重要目标区的三维地形快速渲染方法[J].计算机与数字工
程.2009,37(4)
[10]杨崇源,张继贤,林宗坚.虚拟地形场景绘制中的 LOD 实时算法[J].测绘学报,
2001,30(2)
[11]Hakran Kim,Yongik Yoon.Adaptation Method for Level of Detail(LOD)of 3D
Contents. Network and Parallel Computing Workshops,2007,879-884
[12]LINDSTROM P,KOLLER D,RIBARSKY W, et al. Real-Time, continuous level of
detail rendering of height fields[J].ACM Computer Graphics(SIGGRAPH96),1996,
30(3):109-118
[13]PAJAROLA R,DECORO C. Efficient implementation of real-time view-dependent
multiresolution meshing[J]. IEEE Transactions on Visualization and Computer
Graphics,2004,10(3):353-368.
基于 DirectX 的三维地形渲染技术
一.前言
二维矢量数据用来表示空间位置上的精确关系,易于定量分析,因此地理信息
系统的空间分析大多以矢量数据为处理对象;三维地形数据——数字高程数据用于
描述地形起伏状况,可以用于提取各种地形参数,如坡度、坡向等,并能进行通视
分析、流域生成等应用分析
[10]
。而且人们认识周围环境也从传统的二维思维方式转
向更自然的、立体空间的思维方式的变化趋势。然而,解决基于海量数据的三维场
景的实时绘制问题是实现这种转变的一大瓶颈。而地形作为地理环境的基础框架,
使得解决地形的实时显示问题更是首当其冲,建立实时交互的虚拟地形成为目前国
内外研究的热点。本文就研究了如何生成逼真的地表景观。
二.主题
在计算机中,由于用图形表达各种信息,其容量大、直观方便,更符合人们观
察了解事物运动规律的习惯,因而计算机图形学目前在工业、商业、军事、教育和
影视娱乐等各个领域得到了广泛应用,作为计算机图形学应用的一个分支,三维实
剩余26页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3671
- 资源: 59万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功