基于LOD的大规模地形实时绘制方法
基于四叉树LOD技术绘制大地形的改进算法

【 b ta tT i pprfs a a zdteavnae n i d atgso em hrslt ns l ct ntc nlg (OD bsdo eq a A src] hs ae r nl e h d atgsa dds vnae fh u i oui i i ai eh o y L ) ae nt ud it y a t e o mp f o i o h
表 明 , 进 的 算 法在 一 定 程 度 上 提 高 了地 形 漫 游 的 运行 效 率 并 实 现视 点 移 动 时 地 形 绘 制 的 平 滑 过 渡 。 改 【 键 词 】 又 树 ;OD 技 术 ; 关 四 L 多分 辨 率 大地 形 ; 小二 乘 法 ; 间 空 间 连 续 性 最 时
分块LOD大规模地形实时渲染算法

Fi n al l y,ve r t i c a l s ki r t wa s us e d t o e l i mi n a t e c r a c ks;GPU— b a s e d mo r p hi ng me t ho d wa s a pp l i e d t o s l o w d o wn ve r t e x p op pi n g. Th e e x pe r i me nt a l r e s ul t s s h o w t he p r o p os e d a l g or i t hm c o ul d r e du c e r a w da t a me mo r y c o ns u mp t i o n,CPU pr o c e s s i n g t i me a n d nu mbe r of GPU r e nd e r i n g b a t c he s s i g ni f i c a nt l y,t h e
( S t a t e Ke y L a b o r a t o r y f o Vi r t u a l Re a l i t y T e c h n o l o g y a n d S y s t e ms . B e  ̄ h a n g U n i v e r s i t y. B e i j i n g 1 0 0 1 9 1 )
g e t t he s a me s i z e bl oc ks ;t e r r a i n p y r a mi d wa s bu i l t wi t h d i f f e r e nt s c a l e s a n d b i a s f a c t o r s o fl i ne . The n
l i n e a r q u a dt r e e i n de x o f t e r r a i n bl oc ks wa s c r e a t e d,a mo r e r e a s on a b l e s c h e du l i ng c r i t e r i on wa s d e f i ne d.
基于LOD的大规模地形实时绘制方法

2. 节点的裁剪 当节点不在当前视野范围内时 ,如果把这些节 点所包含的图元原封不动地提交绘制 ,就会耗费资 源 [ 3 ] 。因此 ,要在提交绘制命令之前进行可见性判 断 ,这里使用视锥体裁剪 。基于视锥体的裁剪 ,就 是判断一个世界坐标系下的三维点是否包含在当 前的视锥体内 。视锥体的大小 、形状 、位置如图 3所 示 。观察者视点在 ( xeye , yeye , zeye ) , 向上向量为 ( xup , yup , zup ) , fovy是上下两个平面之间的夹角 , w、h是投 影平面上视口的长宽 , snear、sfar是视点到视锥体前平
精度越高 ,反之亦然 。
图 3 视锥体示意图
为了在实时绘制时减少可视性判断的计算消 耗 ,对节点进行预处理 , 计算每个节点的包围盒 , 所 谓包围盒就是用一个比较简单的几何体去度量另 外一个比较复杂的几何体 , 这里采用长方体来起节点的层次包围盒来实现快速的 裁剪 。
26
测 绘 通 报 2009年 第 12期
而减少了数据的频繁调度 ,提高了画面流畅性 。 3. 地形块的裁剪 真正用于绘制时 ,其场景还是相当庞大 ,而且
人的视野有限 ,需要将不可见的数据块裁剪掉 。裁 剪采用一种更简捷快速的方法 ,不考虑视锥体六个 面中的三个 ,即近裁剪平面和上下裁剪平面 。具体 方法是首先将视锥体的近裁剪平面忽略掉 ,然后将 其投影到水平面上 ,视点在场景中移动时 ,总被控 制在地形表面上空 ,这样经过简化后的视锥体投影 到平面后成为一个关于视线投影对称的区域 ,根据 视线与平面向上法线的夹角的不同情况 ,其投影形 式也有所不同 。
d2
=
1 max d i = 1, 2, …, 6
| dhi
|
(2)
海上搜救模拟器中大规模地形场景的实时绘制

外一些 学者对 大规 模 地形 场 景 的绘 制 进 行 了研 究 , 提 出了相关 的算 法 , 些算 法 主要 涉及 地 形数 据 的 这 处理 、 理数据 的处 理 以及 数据 的调度 。 纹
了绘制 效率 。S h e e 等 提 出在 进 行 大 规模 地 ] cni r d
形 纹理绘 制 时 , 采用 一种适 合 GP U处 理 的 L 0D绘 制 技术 。Ul c ] r h和 S e r i p as提 出 了将 地 形 数 据 分
Ab t a t sr c :The r a —i e r n rn fl r c l e r i nvr nm e tha e br a y a le o V R , G I m iia y e ltm e de i g o a ge s a e t r an e io n s be n o dl pp id t S, lt r sm ulton,e e I r r t e tt e f t a i e s a c n e c i ult or h lc pt r u t vs l ys i ai t . n o de o m e he ne d o he m rn e r h a d r s ue sm a orf e io e ni iua s — tr s, t s p pe e e r h s o od lng an he r a —i e r nd rng e hno o a ge s a e t r an e io e n hi a r r s a c e n m e i d t e ltm e e i t c l gy ofl r - c l e r i nvr nm e t n. The t e — m e sona e r i n r hr e di n i lt r a n e vionm e ti r a e r Sc ne a d m u t l ve n s c e t d by A c e . n li e lLO D s c e t n Cr a o o e l i r a ei e t r f rr a—
无缝LOD算法在大规模地形绘制中的实现

第2 1卷 第 2期
20 0 8年 4月
四川 理 工学 院 学报 (自然科 学 版 )
J R L OF S C AN U V R I Y OF OU NA I HU NI E S T
.
V 1 1No 0. . 2 2
对于组成每个矩形的三角形, 以具有相 同的分辨 可 率, 也可 以具有不 同的分辨率 。这就充分利用 了细节层
次在 地 形绘 制 过 程 中 的灵 活 性 , 时保 证 了地 形 绘 制 所 同 需 的细 节程 度 。对 于 1 B(K l ) M 1 x K 的地 形数 据 , 定 将 假
维普无缝 L D算法在大规模地形绘制 中的 实现 O
到不 同尺寸大小 的矩形中。 于无裂纹 L D算法 , 对 O 在地
形 绘 制 过 程 中 , 有 任 何 的 几 何 绘 制 操 作 , 有 对 预 存 没 只 的三 角 形 和 缝 合 带 纹 理 的 重 复 利 用 。这 就 减 轻 了 C U P 的负 载 和 C U与 G U之 间的 数 据 交 换 , 快 了地 形 绘 P P 加 制 的速 度 。
断条 件 , 化 地 形 绘 制 过 程 中所 需 的细 节 , 到 快速 地 简 达
形绘 制 的 目的。
收 稿 日期 :2 0 .2 2 0 71.7
图 1矩 形 分 割 及 缝 合 带
作者简介 :杨 鹏 (9 2) 男, 18 ., 四川眉 山人 , 硕士生, 主要从 事电路与 系统设计 自 动化方面 的研究 。
A r08 p. 0 2
S I N E & E GI E R N NA U AL S I N E E II N) CE C N N E I G( T R C E C D T O
大规模地形漫游中的实时LOD算法研究_金宝轩

收稿日期:2003-08-11; 修订日期:2003-10-30 作者简介:金宝轩(1970-),男,博士研究生,研究方向为三维GIS 、虚拟现实技术。
E -mail :jinbx sina .com大规模地形漫游中的实时LOD 算法研究金宝轩,边馥苓(武汉大学空间信息与数字工程研究中心,湖北武汉430079)摘要:大规模地形漫游在游戏、仿真、虚拟现实等领域有着广泛的应用。
该文在总结现有地形简化算法的基础上,提出了一种基于动态调度的地形块内视点相关二叉树简化算法,有效地简化地形,实现大规模场景的实时漫游。
关键词:地形漫游;实时地形简化;LOD ;二叉树中图分类号:P208;TP391.9 文献标识码:A 文章编号:1672-0504(2004)01-0051-030 引言随着计算机技术、摄影测量和遥感技术的迅速发展,虚拟现实技术得到了广泛的应用,虚拟地形环境又是虚拟现实技术的一个重要研究方向,在虚拟地形环境中大规模地形场景的实时层次细节(LOD )简化也就成为了研究的热点。
LOD (Level of Detail ,层次细节)模型[1]是指在同一个场景中,依据视觉的特性,远离视点的物体只需较粗的细节,而离视点很近的物体需要详细的细节,这样便可以通过具有不同细节的描述得到一组模型,供渲染时使用。
LOD 技术最早在1976年由Clark 提出,认为当物体覆盖屏幕的区域较小时采用较粗略的模型表示,同时给出了一个用于可见面判断算法的几何层次模型,便于对复杂模型进行快速绘制。
1992年后,国内外学者相继提出了许多LOD 模型生成算法,对地形而言主要有基于不规则格网和规则格网两类。
对于规则格网的多分辨率地形简化,Hoppe [2,3]提出了一种递进网格(Prog ressive M esh ,PM )法则,增加三角形到任意的网格来满足需要的细节,后来又对PM 法则进行了扩展,形成了视点依赖的递进网格(View -Dependent Prog ressive M esh ,VDPM )法则,避免了三角剖分给整体格网带来的影响。
基于LOD的三维地形数据的组织与实时绘制

关 键 词 : OD; 形 ; 时 显 示 ; 叉 树 L 地 实 四
中 图 分 类 号 :P 1 T 32
文献 标识码 : A
文 章 编 号 :6 2 7 0 (0 8 0 — 0 4 0 1 7 — 8 0 2 0 )4 0 4 — 3
每 一 个 节 点 都 覆 盖 地 形 中 的 一 块 相 应 的 矩 形 区 域 。 层 的节 点 上
涉及 的采 样点 较少 .用其来 表示 地形 时具有更 高 的绘 制效 率 , 但 分辨率 较低 , 形表示 的误 差较 大。 地 底层 地形 的分辨率 高 , 误 差小, 但绘 制效率 低 。本 文 中实现 的三维数 字地 球就采 用 了 四 叉 树数 据结 构 . 基本 分层原 理 为 以地 球3 0 经度 和 10 纬 度 其 6。 8。
提 出并 发 展 起 来 的 。
为标准 , 一层 以3 。 第 6 划分 , 图 1 )共 分为 ( 03 )(8 /6 : 见 (, a 3 /6*103 ) 6
5块, 0 第二 层 以1。 第三层 以9 , 次类推 。 8, 。依
匪 圈豳豳
【 ) e e b Lvl 1 () e e c Lvl 2 图1 地 形 分 层
2 地 形 的分 块 与调 度 方 法
当 前 , 范 围 、 量 数 据 的 获 取 已 成 为 现 实 , 间 数 据 的 数 大 海 空
由于按平 面展 开层层 划分 , 以这里 涉及 到行 、 的概念 , 所 列 通 过 由 行 、 到 经 、 度 值 的 转 换 , 分 后 的 每 个 方 格 对 应 一 个 列 纬 划 该 层 的 纹 理 . 加 上 高 度 值 就 可 以 实 时 渲 染 三 维 图像 了 。 再 在 交 互 浏 览 地 形 时 . 据 当前 浏 览 者 的 位 置 和 地 形 本 身 的 根
潘李亮:基于LOD的大规模真实感室外场景实时渲染技术的初步研究

基于LOD的大规模真实感室外场景实时渲染技术的初步研究(转载)第一部分:简介室外场景的实时渲染技术是游戏编程世界中的热点技术. 同时它在其它领域也有着同样重要的作用。
如 GIS 系统,飞行模拟系统,VR系统以及数字地球技术等都离不开室外场景的实时渲染技术。
一个优秀的室外场景实时渲染技术在保证实时性以外还能创造出非常逼真的、有说服力的虚拟自然环境。
如Nova Logic 公司的著名的3D射击游戏Delta Force 系列,它除了能模拟出各种如雪地、草地、沙漠等地形以外,还能模拟出各种树木,杂草,以及各种天气效果。
室外场景的实时渲染有许多技术上的难点,在以下的章节里我们将作详细的介绍以及针对一些主要问题的解决方案。
本文的主要内容分两个部分:一、大规模地形的渲染。
二、如何提高场景的真实性。
分别第二部分和第三部分。
3D场景的渲染离不开3D API。
目前流行的3D API有两种,SGI公司的OpenGL 和微软公司的Direct3D。
两种API各自有自己的优点,均能很好的使用硬件加速功能。
但是OpenGL是一种开放性的标准,有更好的移植性能,它能在Linux 和FreeBSD 下工作。
甚至还可以使用硬件加速(nVidia公司专门为Linux/FreeBSD推出了驱动程序)。
因此在本文里,我使用了OpenGL。
不过如果熟悉原理,其实也大同小异,D3D到8.0以后做的非常的像 OpenGL.第一章:大规模室外场景渲染技术简介第一节:室外 Vs. 室内下面我们把室内场景和室外场景做一个对比,来看看室外场景的实时渲染的主要难点。
目前最成功的商业室内游戏引擎有Quake /DOOM系列、Unreal系列引擎。
他们都基于BSP技术的。
通过BSP技术,再加上PVS , Portal等技术可以大量减少场景的复杂程度,通过Portal技术甚至可以把一个室内场景和一个室外场景连接起来,关于室内引擎的渲染的进一步已经超出了本文的范围。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二 、基于四叉树的实时连续 LOD 绘制
图 2 地形的四叉树结构
1. 地形的四叉树结构 选择规则格网 DEM 作为地形的数据模型 ,采用 基于四叉树的 LOD 简化算法对地形进行实时连续 绘制 [ 2 ] 。采用自顶而下的方式逐一对地形进行分 割 (见图 1) ,首先将整个地形看作一个正方形 ,这也 是开始分割的根结点 ,按四叉树结构对其进行递归 分割 ,每次分割产生 4 个新的更高一层次的节点 。 这样一直分层次地递归分割地形 ,直至最高分辨率 为止 ,就建立起了整个地形的四叉树结构 ,这是一 个完全四叉树 (见图 2 ) ,顶层是根节点 ,代表第 0
三 、基于分块的动态场景管理
1. 地形的分块 先将地形分块 ,然后根据视点位置只调入视野 范围内的地形块 ,并在地形漫游过程中动态地对场 景进行更新 ,从而调入新的子块和释放掉不需要的 子块 ,对每个子块分别构建四叉树后利用 LOD 算法 进行地形数据的简化 ,这样大大降低了不必要的地
图 8 一个 9 ×9地形的分块与三维显示
2009年 第 12期 胡爱华 ,等 :基于 LOD 的大规模地形实时绘制方法
23
文章编号 : 049420911 (2009) 1220023204
中图分类号 : P208 文献标识码 : B
基于 LOD 的大规模地形实时绘制方法
胡爱华 1 ,何宗宜 2 ,马晓萍 3
(1. 中交第二公路勘察设计研究院 ,湖北 武汉 430056; 2. 武汉大学 资源与环境科学学院 , 湖北 武汉 430079; 3. 国家测绘局 测绘标准化研究所 ,陕西 西安 710054)
图 4 视锥体与包围盒之间的关系
3. 地形简化的评价因子 当节点完成裁剪后 , 对于可见的节点就需要作 进一步的判断 , 以决定是否还需要分割 , 或是否已 达到最高细节层次 [4 ] 。其中的一个判断准则就是 用视点到节点中心的距离来衡量 , 因为远处的景物 显得小且模糊 , 可以采用较低细节层次表达地形 。 图 5中 l为视点到节点中心的距离 , d为节点的边 长 。由视距和边长的比值与一个确定的阈值进行 比较 ,当小于阈值时节点需进一步分割 , 大于该阈 值时不再分割而直接绘制 。
l <C
(1)
d
C值是一个可以调节的阈值 , C 又称为全局分辨率 ,
它控制着图像中的最小分辨率 。C 值增加 , 图像精
细程度提高 , 画面中每帧的三角形数目也增加粗糙程度高的区域的分辨率 。因为地形的起伏程
度越厉害 , 地形的静态误差越大 , 需要的层次细节
图 7 基于不同图元模式的节点绘制方式
5. 连续 LOD 绘制 为了使图像更加具有真实感 ,消除子节点突然 出现时产生的“跳跃 ”现象 ,使用插值方法 ,在多个 LOD 切换时 产生 一 个 过 渡 的 效 果 , 从 而 消 除“跳 跃 ”,这一方法又称为“几何形变 ”[ 6 ] 。从图 6可知 , 每当提取一个节点 ,就会新增加 5个顶点数据 ( 1个 中心点 , 4个边点 ) ,要使画面平滑过渡 ,亦即使这 5 个顶点平滑过渡 。这样把每个整合因子值用一个 字节保存在数组中 ,就会产生 255种过渡效果 ,这在 实际绘制过程中足够保证图像的精度 。
2. 动态场景管理 采取有效的场景调度管理措施 , 降低场景的频 繁调度 。首先需要做的是在系统初始化时 , 根据人 的最大视野范围 , 来确定需调入的初始场景大小 。 对图 3中的视锥体进行一些简化处理 , 忽略掉近侧 裁剪面 ,这样就变为一个四棱锥体了 。在这个四棱 锥中人的最大视距显然为视点到远侧裁剪面的四 个顶点的距离 ,设这个距离为 Lmax , 由它就可以确定 最大可见的地形块数为 n ×n。那么程序初始时 , 这 个场景的大小为 ( 2n + 1 ) 2 。可以看到在初始时读 入了视点周围的全部 ( 2n + 1) 2 块地形数据 , 这些最 大可视距离确定的区域是我们所关心的 , 其数据被 调入内存当中 ,而其他最大可视距离外的区域暂不 被调入 ,被存储在硬盘当中 。这样当视点在场景中 原地作任意变化时 , 场景数据都不会发生更新 , 从
26
测 绘 通 报 2009年 第 12期
而减少了数据的频繁调度 ,提高了画面流畅性 。 3. 地形块的裁剪 真正用于绘制时 ,其场景还是相当庞大 ,而且
人的视野有限 ,需要将不可见的数据块裁剪掉 。裁 剪采用一种更简捷快速的方法 ,不考虑视锥体六个 面中的三个 ,即近裁剪平面和上下裁剪平面 。具体 方法是首先将视锥体的近裁剪平面忽略掉 ,然后将 其投影到水平面上 ,视点在场景中移动时 ,总被控 制在地形表面上空 ,这样经过简化后的视锥体投影 到平面后成为一个关于视线投影对称的区域 ,根据 视线与平面向上法线的夹角的不同情况 ,其投影形 式也有所不同 。
有多少个节点就需要调用多少次绘制函数 , 但其绘
制方式最紧凑 ,并容易实现 ,因此本文使用这种图
元模式对节点进行绘制 。
形数据对内存的消耗 ,减少了计算量 ,提高了绘制 和漫游的速度 。分块的大小设计原则主要是要求 子块大小与内存页面文件大小接近 ,以及子块尽量 大小一致 。为了满足 LOD 算法的要求 ,每块的大小 都是 ( 2n + 1) ×( 2n + 1 ) , 并且相邻块之间的边界数 据必须重复 ,如图 8 所示 。分块后的地形数据以文 件形式保存在硬盘当中 ,每块地形还可以根据需要 建立多层金字塔数据结构 。建立多层金字塔数据 结构即对每一块生成若干个不同细节层次的 LOD 模型 ,并保存到文件当中 ,在绘制时根据一定的度 量标准决定各块应调用的层次模型 。
2. 节点的裁剪 当节点不在当前视野范围内时 ,如果把这些节 点所包含的图元原封不动地提交绘制 ,就会耗费资 源 [ 3 ] 。因此 ,要在提交绘制命令之前进行可见性判 断 ,这里使用视锥体裁剪 。基于视锥体的裁剪 ,就 是判断一个世界坐标系下的三维点是否包含在当 前的视锥体内 。视锥体的大小 、形状 、位置如图 3所 示 。观察者视点在 ( xeye , yeye , zeye ) , 向上向量为 ( xup , yup , zup ) , fovy是上下两个平面之间的夹角 , w、h是投 影平面上视口的长宽 , snear、sfar是视点到视锥体前平
根据上面三个节点评价因子 , 就可以建立起一
2009年 第 12期 胡爱华 ,等 :基于 LOD 的大规模地形实时绘制方法
25
个综合的评价因子
f
=
Lv dC1 m ax ( C2 d2,
1)
C3
(3)
其中 , L / d是节点动态的视点误差 ; C1 为全局分辨
率因子 ,也是动态视点误差的控制阈值 ; v是镜头移
一 、引 言
在三维地形可视化中 ,大规模场景实时绘制的 主要部分在于对大规模地形的实时绘制 ,因为地形 数据量的大小决定了场景数据量的大小 。大规模 地形涉及海量的空间数据 ,地形高程数据和纹理数 据异常庞大 ,超出了一般图形系统的实时绘制和内 存管理能力 ,按照常规的方法无法实现实时绘制 。 绘制大规模的地形需要数量极大的图元 ,以最基本 标准的方式对大规模地形进行绘制 ,是不可能达到 实时效果的 [ 1 ] 。本文采用规则格网的数字高程模 型来表达地形 ,并利用“先分块后构模 ”的思想来对 大规模的地形进行简化 ,减少了计算量 ,提高了绘 制和漫游的速度 。
层 , 即 level 0,往下分别是 level 1和 level 2,用它来 保存地形数据内部的拓扑关系 ,以便用于高效地构 建动态 LOD 模型 。创建 LOD 时 ,只需根据一系列 评价因子来动态地从树中选取具有合适细节层次 的节点来表达地形 ,从而建立起多分辨率地形 。
图 1 基于四叉树的地形分割过程
图 5 基于视点的节点判断
实际上每丢掉一个细节层次 , 就会在节点的中 心点及 四 个 边 的 中 点 位 置 产 生 六 个 误 差 值 (见
图 6) ,需要对误差进行控制 , 以使得误差最小或不 超过一定阈值 。同样在绘制之前可以根据四叉树
结构 ,预先计算出每个节点中的六个高程误差值 dhi 的绝对值 , 再以其最大值与节点自身尺寸大小 的比值作为其粗糙度 , 称之为 d2。 dhi ( i = 1, 2, …, 6)分别是节点的六个误差值 。
收稿日期 : 2009207207; 修回日期 : 2009209224 作者简介 : 胡爱华 (1956—) ,女 ,湖北武汉人 ,高级工程师 ,主要从事数字摄影测量 、空间信息可视化研究 。
24
测 绘 通 报 2009年 第 12期
面和后平面之间的距离 。视锥体由六个面组成 , 一 个平面的方程可以表示为 A x + B y + Cz + D = 0。规 定朝投影体内部的方向为平面的正方向 , 判断一个 顶点是否在投影体内部时 , 只要把顶点坐标代入到 六个面的方程中 ,通过检查结果的符号就可以判断 点是不是在投影体内部 。
图 6 地表静态六个误差值
在运动速度加快 、地形更新频繁的时候 , 为了 保持帧稳定 , 要适当减少绘制量 。因此 , 将运动速 度也作为 LOD 的参考量 ,在保证真实感的同时保证 漫游的流畅感 。镜头移动速度是一个全局的 LOD 评价因子 ,它是保持场景漫游平滑度的一个重要调 整量 。评价方法是计算出前后两帧之间摄像机的 位移矢量的大小作为评估量 。
点需要进行三角形剖分和绘制 。剖分方式的不同
或图元模式的不同使得绘制节点的方式各不一样 ,
绘制的效率也不一样 [ 5 ] 。如图 7 所示 ,是对一个节
点的三种绘制方式 ,分别采用了 Triangle L ist、Trian2
gle Strip和 Triangle Fan三种图元模式 。 Triangle Fan
动的速度 , 也就是视点移动的速度 ; d2 是节点的静
态误差 ; C2 为节点的静态误差的控制阈值 ; C3 是镜 头运动速度的控制阈值 。