三维 GIS 渲染引擎中关键技术探讨

曹国峰

中国地理产业发展中心

论文来源:中国地理信息系统协会第三次代表大会暨第七届年会论文集

摘要:本文在分析三维 GIS 渲染引擎特点的基础上,探讨了针对可交互的,大数据量复杂场景的实时三维GIS 渲染引擎中的关键技术。如场景图,层次细节,视锥体剔除,遮挡面剔除,渲染通道等,并介绍了在SuperMap 中的应用情况。

关键词: 三维GIS,渲染引擎,场景图,层次细节,视锥体剔除,遮挡面剔除,渲染通道

1. 引言

今年来传统的二维地理信息系统得到了长足的发展,她使用计算机技术将传统的纸质地图变成计算机化的“电子地图”,从而大大地简化了人们对地图的使用,查询和分析,但是二维的地理信息系统提供给用户的仅仅是二维的平面图形,在可视化程度方面比传统的纸质地图并没有实质性的改善[1],远远不能满足人们的视觉要求。计算机图形学和各种图形硬件技术的不断发展以及人们对视觉要求的不断提高,为三维 GIS 的发展创造了条件和动力。

随着人们数据采集能力的不断提高,可供 GIS 处理的数据不断膨胀,覆盖全球的 1KM 分辨率的数据集已经可从 Internet 上免费获取,能够覆盖全球大部分地区的 30 米分辨率的数据集也真准备中(http://www.jpl.nasa.gov/srtm/)。这样的数据量称之为无限大也毫不为过[2]。

如此庞大的数据量大大的提高了场景的复杂度,要保证渲染的实时性(每秒钟大约产生 20 帧左右的图像[3]),除了依靠图形硬件的不断发展外,更多的还要从软件着手,在三维 GIS 引擎中设计高效的算法,降低场景渲染的复杂度。

2. 三维 GIS 渲染引擎

三维 GIS 场景中一般包含各种可渲染的 3D 物体,天空(SkyDome/SkyBox),地形(DEM/TIN),各种房屋楼块,复杂模型(通过 3DS 或者 CAD 数据导入),树木,道路等。三维 GIS 渲染引擎,作为一个三维 GIS 系统的核心部分,必须满足各种三维场景的需要。并且能方便的对场景进行组织和交互。

数据量的增大和显示的实时性为三维 GIS 渲染引擎的提出了挑战,这就要求必须在不影响视觉效果的情况下,尽可能的对场景进行简化。本文将结合在 SuperMap 中的设计实践,探讨各种场景简化技术的应用。

3. 场景图

如前所述,GIS 场景中包含各种可渲染的 3D 物体,如房屋,建筑 道路等。随着场景复杂度的不断提高,必须对这些物体进行合理的组织才能有效的对其进行渲染。这也是一个三维 GIS 引擎中首要解决的问题。场景图是解决这个问题的有效手段。

场景图一般是树形数据结构,以树的方式对复杂的场景进行有序组织,场景组织者可以根据自己的需要设计自己的具体结构,这种结构特别适用于对层次化结构场景的管理。在 Java3D 和 VRML 中已经得到成功的应用[4]。

SuperMap 把场景按照场景中可渲染物体的关系抽象成可重复划分的空间,每一个可渲染的物体都对应着一块空间。每个空间通过 SceneNode 来管理,SceneNode 处理空间的移动,旋转,缩放和空间相关的行为,最后把要渲染的物体连接到 SceneNode 对应的空间上。

每个 SceneNode 对应着树结构里面的一个节点保存与父节点的相对位置和指向子节点的指针。

更多内容请查看pdf