基于 LOD 的大规模真实感室外场景实时渲染技术的初步研究 潘李亮---xheartblue@etang.com
基于LOD的大规模真实感室外场景
实时渲染技术的初步研究
2003 年 4 月- 9 月
最近更新 9 月 24 日
Demo 更新 9月 5 日
潘李亮 第 1 页 2003-9-25
基于 LOD 的大规模真实感室外场景实时渲染技术的初步研究 潘李亮---xheartblue@etang.com
关键字与术语:
LOD , (level of detail)、 ROAM ( Real-time optimize adaptive mesh).、 公
告板、 多遍纹理映射、 运动模糊、 Lens Flare 、 天空体、 亮度图(Light
Map)、 四叉树 、 Perlin Noise、 Diamond Fractal.、 Voxel 、 二叉剖分
空间(BSP)、 OpenGL、 DirectX。 Gama Control.
Abstract:
The large scale terrain rendering is a hot issue in the Computer Graphics
research field. It play an important role in GIS (Geographic Information
System). Flight simulator and video game. The main two problem of the
large scale terrain rendering are how to hold the terrain data and how to
reduce the large amount triangles. For video game solution. I use a
quad-tree based LOD algorithm to reduce the triangles count. I also
introduce some other technology such as motion blur. to improve the
realism of the scene without reducing too much FPS.
I implement an outdoor game’s render engine in this paper. Not like other
systems. The video game need to running on the PCs, It need a very high
interactive FPS. Generally 30 FPS is the best in a video game. In this
paper’s LOD algorithm. The quad-tree is stored in a two dimension array
instead of in a linkage structure. The triangles (the quad tree nodes) not in
the view frustum is culled before send them to the render API.。 .
The key technology in this paper is LOD algorithm. I use the view-
dependent and terrain’s roughness to determine the terrain detail. Before
render the terrain. I refinement the terrain mesh. Only the vertices are
needed will be rendered. So the mesh grid is irregular .The far from the
viewer, the less detail. The stronger roughness of the terrain, the more
detail. Like other quad-tree based LOD algorithm. I subdivide a terrain
node until the desire detail. The subdividing depend on the node level, the
terrain’s roughness and the distance between the viewer and the node. The
roughness factor is pre-calculated to improve speed.
This paper’s major purpose is the LOD algorithm , So some problem such as
Geomorphing, are still exit. Another important problem is storage layout, I
only try a little to settle this problem, so the terrain data storage system is
not so effective.
潘李亮 第 2 页 2003-9-25
基于 LOD 的大规模真实感室外场景实时渲染技术的初步研究 潘李亮---xheartblue@etang.com
摘要:
大规模的地形渲染技术一直是图形学里的热点问题之一。它在 GIS、
飞行模拟器、视频游戏里有重要的作用。大规模地形渲染的两个主要问
题是地形数据存储问题和三角形数目问题。针对视频游戏,本文使用了
一种基于四叉树的 LOD 算法来解决大规模地形渲染中的三角形数目问
题。并且使用了其它一些技术,在保证渲染速度的前提条件下,有效的
提高了场景的视觉真实程度。如运动模糊。
本文基本上实现了一个室外游戏的渲染引擎。不同于其它的应用系
统,视频游戏一般要求在 PC 机上运行,而且要求比较高的交互性帧率。
一般认为 30 FPS 是比较合适的速度,因此速度是第一前提。在本文的 LOD
算法中,四叉树信息被保存在一个二维数组中,而不是传统的链式结构。
大部分不在视体内的三角形(四叉树节点)在送入渲染 API 之前就被切
除掉。同时本文的算法只用了一遍四叉树遍历,从而大大提高了渲染速
度。
本文的关键是 LOD 算法,我使用了视点相关以及和地形本身起伏程
度相关的技术来决定地形应有的细节程度。在每次渲染前,我们都动态
的更新地形网格,只渲染我们需要的节点。因此地形网格是不规则的。
离观察者越远,细节越少,地面越粗糙;离观察者越近,细节越多,地
面越细腻。和其它的基于四叉树的 LOD 算法一样,我们递归的分割每一
个节点,直到到达需要的细节程度。这种分割依赖于节点的大小,节点
内地形的起伏程度,以及观察者离节点的距离。地形的起伏程度事先被
计算出来以提高速度。
本文主要的目的是实现 LOD 算法,所以其它的一些问题如几何形变
依旧存在。另外的一个主要问题:数据存储布局也不是十分的有效,在
这个问题上我只是做了一些简单的尝试。
潘李亮 第 3 页 2003-9-25
基于 LOD 的大规模真实感室外场景实时渲染技术的初步研究 潘李亮---xheartblue@etang.com
目 录
第一部分:简介
第一章:大规模室外场景渲染技术简介
第一节:室内 Vs.室外
第二节:Voxel Vs.LOD
第三节:动态地形 Vs.静态地形
第四节:其他
第二部分:基于 LOD 算法的地形简化。
第二章:LOD 简介
第三章:相关的研究
第四章:LOD 算法
第一节:基本思想
第二节:数据存储
第三节:节点评价系统
第四节:网格的渲染
第五节:网格的生成
第六节:优化。
第五章:裁剪
第六章:性能测试
第三部分:真实感场景的生成技术。
第七章:天空体和镜头眩光
第八章:公告板技术
第九章:地表的细节
第十章:景深处理
第十一章:运动模糊
第四部分:结论和展望
附录
A: 地形数据的生成
B: Demo 程序设计架构
C: 参考文献
潘李亮 第 4 页 2003-9-25
基于 LOD 的大规模真实感室外场景实时渲染技术的初步研究 潘李亮---xheartblue@etang.com
第一部分 简 介
引 言
室外场景的实时渲染技术是游戏编程世界中的热点技术. 同时它在
其它领域也有着同样重要的作用。如 GIS 系统,飞行模拟系统,VR 系
统以及数字地球技术等都离不开室外场景的实时渲染技术。一个优秀的
室外场景实时渲染技术在保证实时性以外还能创造出非常逼真的、有说
服力的虚拟自然环境。如 Nova Logic 公司的著名的 3D 射击游戏 Delta
Force 系列,它除了能模拟出各种如雪地、草地、沙漠等地形以外,还能
模拟出各种树木,杂草,以及各种天气效果。
室外场景的实时渲染有许多技术上的难点,在以下的章节里我们将
作详细的介绍以及针对一些主要问题的解决方案。
本文的主要内容分两个部分:一、大规模地形的渲染。二、如何提
高场景的真实性。
3D 场景的渲染离不开 3D API。目前流行的 3D API 有两种,SGI 公
司的 OpenGL 和微软公司的 Direct3D。两种 API 各自有自己的优点,均
能很好的使用硬件加速功能。但是 OpenGL 是一种开放性的标准,有更
好的移植性能,它能在运行 Linux 和 FreeBSD 的 PC 下甚至还可以使用
硬件加速(nVidia 、 ATI 公司专门为 Linux /FreeBSD 推出了驱动程序)。
因此在本文里,我使用了 OpenGL。不过如果熟悉原理,其实也大同小异,
D3D 到 8.0 以后做的非常的像 OpenGL。
第一章:大规模室外场景渲染技术简介
一.室外 Vs. 室内
下面我们把室内场景和室外场景做一个对比,来看看室外场景的实时
渲染的主要难点。
目前最成功的商业室内游戏引擎有 Quake /DOOM 系列、Unreal 系
列引擎。他们都基于 BSP 技术的。通过 BSP 技术,再加上 PVS , Portal
等技术可以大量减少场景的复杂程度,通过 Portal 技术甚至可以把一个
室内场景和一个室外场景连接起来,关于室内引擎的渲染的进一步讨论
已经超出了本文的范围。
我们知道,当我们站在一个房间里的时候,我们能欣赏到的景物不过
是这个房间的摆设以及透过这个房间的门和窗能看到的景物而已。你只
潘李亮 第 5 页 2003-9-25