Case Studies

VR Group

利用 Incredibuild 加速大地形创建

Tomas Skacel, VR Group

关于VR GROUP

VR Group 是一家捷克共和国领先企业,从事飞行培训、模拟和综合培训系统的设计、开发、制造和集成物流支持(ILS)。其提供的产品和解决方案主要定位于空军,依托最新的建模和模拟技术以及先进的3D可视化技术,持续满足相关国际标准和规范。其产品包括面向Su-22、Aero L-39和Aero L-159机型的种类广泛的培训设备,从桌面飞行培训器到全任务模拟器,以及捷克空军模拟和培训技术实施调查研究。

关于作者

Tomas Skacel 毕业于布尔诺马萨里克大学信息技术学院的计算机绘图系,现在是VR Group的3D图形程序员,从事计算机可视化方面的工作。他主要负责可视化系统,这些系统主要包含地形可视化以及各种大气影响和条件的渲染。

摘要

本文介绍了Incredibuild的接口如何高效地用于加速编译来自高程和图像数据的地形图块,以绘制大地形表面。这些图块在渲染后,用在VR Group System的飞行模拟软件中。生成和渲染过程基于的是P. Cignoni等人发布的论文“全球批量动态自适应网格 (P-BDAM)”。

难点

VR Group 提供飞行培训和模拟解决方案。这些解决方案的一个重要方面在于高质量的可视化,这就意味着要使用有效的地形渲染器。我们先前的解决方案建立在商业产品的基础上,很早之前就已无法满足我们的需求,因此,我们决定开发自己的可视化系统和地形渲染器。

以交互式帧率显示海量地形数据集是一个复杂的问题。纹理和几何数据量可能轻易就超出了当前的硬件限制。因此,必须在过程中加入一定细节层次 (LOD) 。大多数地形LOD算法采用自适应逼近地形表现的动态结构。这些算法的主要瓶颈在于,它们对CPU的占用往往非常大,因此无法生成足够的三角形来满足当今显卡的潜力。

近来出现了许多新的方法,能够释放CPU负荷,提高显卡硬件的使用效率。这就显著增加了三角形的渲染数量,从而进一步改善细节显示。在简要的研究之后,我们发现基于BDAM[2]套件的P-BDAM[1]最符合我们的需求。

BDAM, P-BDAM

BDAM结构包含成对的树结构:纹理的图块四元树以及小三角形面元(作为几何二元树存储)的一对直角三角形层级。与先前所述的算法不同,要处理的最小基元不是单个三角形,而是整批三角形。这些几何面元离线构造,且高度优化。BDAM结构通过无状态遍历算法针对每个帧进行渲染,这种算法将这些小面元组合在一起,以此渲染连续自适应地形。这种算法对处理器的占用不大,并且得益于批量的主机到显卡通信,它能够充分利用当前显卡硬件的能力。

P-BDAM是BDAM的扩展,可正确处理非平面全球数据集。其主要理念是,将地球表面划分成多个正方形图块,从而管理众多BDAM层级。

有关BDAM和P-BDAM算法的深入介绍,请参见[1]和[2]。

构造

P-BDAM是从下往上逐层构建的。首先,基于全球高程数据,生成几何面元,作为BDAM树的枝叶。其次,利用基于二次误差度量的边折叠,合并且简化这些节点的子节点几何构造,从而递归创建这些节点的父节点。在保存前,可利用高质量条带化算法,缓存连贯的三角形条带,从而优化面元。纹理的创建方式与之类似,其中使用全球图像数据来得到颜色通道和高程数据,以便创建供每像素照明用的法线图。父节点通过合并且缩小子节点的纹理来创建。

我们根据这些要求,创建了简单的命令行工具。其任务在于,基于给定数据创建新图块,或者通过合并现有子图块来创建新的父图块。此工具还以类似的方式处理纹理节点。

尽管仍有优化空间,但此工具的执行已经相当快,单个图块的创建仅需几秒钟。其挑战在于所涉及的图块量非常大。对于详细的地形,数结构中至少有15个层次,这就意味着,必须创建几何节点以及1个以上的纹理节点。假设P-BDAM将地球划分为六个正方形图块,那么节点数量就要增大六倍。

备用方案

在获得了期望的节点数之后,显然就要在一台机器上花数天时间来为整个地球创建图块。即便提高机器性能,无论它有多快,都无法显著提升速度。幸运的是,由于这个过程存在固有的并行性质,最佳的选择便是将工作分配到本地网络上的其他CPU。

我们的第一个实施步骤基于Python和xmlrpclib。尽管这个解决方案能够有效,但却远达不到理想期望值。它并不依托于系统服务,因此,过程的启动以及源数据到每台客户端机器的映射都是手动完成的。此外,我们还不时遇到与同时访问数据文件有关的问题。最后,最终的性能也并不理想。

解决方案

幸运的是,当我们在寻求满足我们分布式计算要求的解决方案时,用于Incredibuild的新接口扩展包宣布面市。在三种可供选择的分布式接口(XML、Automatic Interception和Submission)中,我们选择了XML接口,因为它能够方便地定义任务依赖性,通过XML文件反映BDAM树节点。在将来,我们计划创建地形编辑器,并且可能改用Submission接口,因为这种接口能够让我们跳过XML文件创建,直接通过地形编辑器向 Incredibuild 馈入信息。

XML文件结构非常易于理解,因此能够快速地写入代码,以针对整个地形自动生成相应的生成脚本。Incredibuild 的30天试用版本完全足够让我们全面测试整个过程。Incredibuild 以透明的方式处理工作机器之间的同步和数据交换,任务依赖性得到了良好的定义。

我们选取的测试地形是捷克共和国和安达卢西亚(西班牙南部)。几何结构基于SRTM03 DEM数据来生成。在每个测试中,我们以多种深度创建了两个几何树以及一个纹理树。首先,整个过程在配备Intel® XEON™ CPU 2.2 GHz处理器和1GB RAM的单台机器上进行。然后,通过 Incredibuild 在五个 CPU 之间分配这个过程。

得到的结果如下:

  • Andalusia:描述 – 8 层(510个几何节点,85个纹理节点,595个文件)。1个CPU(约 2.26 GHz) 28 分钟 22 秒。5个CPU(约 11.3 GHz) 5 分钟 56 秒。
  • Czech Republic #1: 描述 – 10 层(2,046个几何节点,341个纹理节点,2,387个文件)。1个CPU(约 2.26 GHz)- 1 小时 52 分钟 14 秒。5个CPU(约 11.3 GHz)- 22 分钟 53 秒。
  • Czech Republic #2: 描述 – 12 层(8,190个几何节点,1,365个纹理节点,9,555个文件)。1个CPU(约 2.26 GHz)-7 小时 25 分钟 25 秒。5个CPU(约 11.3 GHz)- 2 小时 22 分钟 28 秒。

在进行了评估之后,我们面临选择:要么耗费更多时间开发和调试我们自己的基于Python的解决方案,要么借助于 Incredibuild 的所有性能及其易于使用的特性。较长时间以来,我们对Incredibuild的Visual Studio编译分配非常满意,因此,这次还是选择了 Incredibuild.

益处

基于 Incredibuild 的实施方案带来了以下方面的收益:

  • 它易于理解和使用,能够实现卓越的性能,而这主要取决于所使用的CPU数量。
  • 它是“完整的产品套包”,提供了用于管理的Coordinator Monitor以及用于可视化跟踪编译过程的Build Monitor。
  • 它是维护良好的解决方案,是稳健“Incredibuild”项目的组成部分。

总结

本文说明了 Incredibuild 接口如何用于地形图块的分布式生成,从而在飞行模拟软件中渲染。得益于 Incredibuild,整个离线预处理步骤能够从数天轻松缩短为数小时。

参考文献

[1] CIGNONI, P., GANOVELLI, F., GOBBETTI, E., MARTON, F., PONCHIO, F., SCOPIGNO, R.: BDAM: Batched dynamic adaptive meshes for high performance terrain visualization. Computer Graphics Forum 22,3 (Sept. 2003), 505-514.

[2] CIGNONI, P., GANOVELLI, F., GOBBETTI, E., MARTON, F., PONCHIO, F., SCOPIGNO, R.: Planet-sized batched dynamic adaptive meshes (P-BDAM). In IEEE Visualization (2003), pp.147-154.