2. 湖南科技大学地理空间信息湖南省工程实验室, 湖南 湘潭 411201
2. Hunan Province Engineering Laboratory of Geospatial Information, Hunan University of Science and Technology, Xiangtan 411201, China
随着智慧城市和虚拟现实技术的快速发展,三维城市模型(three dimension city model,3DCM)在导航、交通及城市空间规划等多方面起着至关重要的作用,它具有多种细节层次的三维几何表达,并提供逼真的材质和纹理特征及目标的属性信息。但由于目前三维城市模型数据量大、单机运算处理时间长、显示绘制压力大,单机绘制和静态算法已无法满足日益增长的3DCM数据对其可视化的要求。因此,迫切需要研究大范围3DCM的快速并行显示方法。
Clark指出多细节层次模型(level of details, LOD)是解决大范围3DCM的高精度表达困难最重要的方法之一[1]。目前,许多学者针对LOD简化进行了研究,简化方法主要有顶点聚类法、几何元素删除法、顶点采样法、小波分解法、聚类算法等[2-4],通过这些方法可进行模型简化并实现三维模型的显示。但上述方法的共同缺陷是丢失了一定量的精细信息,对于大范围三维模型数据显示速度较慢,不利于三维场景的快速显示与可视化决策。
针对这些问题,本文通过构建集群并行显示系统,对3DCM进行多分辨处理,生成多层次细节模型(LOD),分析视点变化规律,并根据距离和偏心率选择不同层次的三维模型,既能兼顾模型的显示速度,又可表达较为完整的精细信息,实现了大范围3DCM的集群并行快速显示。
1 集群环境下视点移动模型绘制方法 1.1 构建并行集群集群就是通过高速网络连接多台相互独立的计算机(节点),使多台计算机作为一个整体向用户提供网络资源和服务。集群中各节点除了可以作为单一计算机供用户使用,还可以协同作为一个整体使用。集群是一个系统,用户无须了解集群系统内部的节点和构造,且集群系统的管理员可以随意增加和删改集群系统的节点。集群具有高可扩展性、高可用性、高性能、高性价比等特点[5]。集群系统结构[6]如图 1所示。
![]() |
图 1 集群系统结构 |
在集群系统中,选用一台计算机作为主节点整体协调控制多台子节点计算机,每台计算机控制一个显示屏。主节点负责将数据划分至各个子节点,协调管理各个子节点的数据量大小和处理进度,由各个子节点对分配到的数据进行处理渲染并最终显示。通过集群并行计算,可以有效地解决单一计算机硬件性能有限、计算能力不足等问题,实现大范围3DCM快速处理显示任务。
1.2 多分辨率三维模型LOD是一种为了提高绘制速度,适度放弃精度的简化方法,根据人眼分辨率的感知原理和视点的移动规律,对不同的视距采用不同精细程度的物体细节层次,达到漫游帧速流畅的目的。在构建模型的细节层次时,要综合考虑细节层次与数据量之间的关系[7]。细节层次太多,数据量相应变大,不利于存储管理;而细节层次太少,在场景切换时画面呈跳跃感,影响场景的连续性。
目前常用的建立LOD的方法主要有静态LOD和动态LOD两种[8-10]。静态LOD,即预先生成几个层次的细节模型,在渲染时根据算法确定所需的分辨率及细节层次,这种方法绘制速度快,但需要存储多个细节层次模型,占用过多的存储空间,在模型切换的时画面会有跳跃感;动态LOD,即通过模型简化算法或迭代运算生成任意多个连续的细节层次模型,从而得到相邻的细节层次模型,模型切换时能够保持很好的视觉平滑效果,但是算法复杂,计算量大,影响显示速度,且目前并不能实现完全动态模型简化。
虽然静态LOD简化需要占用较多的存储空间,但在目前存储空间足够的情况下,可通过预先生成多层次细节模型,在渲染显示时不需要再通过算法实现模型层次的构建,进而提高了运行速度[11]。在大范围3DCM渲染显示时,不需要显示全部的细节信息,无需将所有分辨率下的模型全部加载显示,可以根据视点移动规律对模型进行动态调度。
1.2.1 三维模型LOD简化3DCM主要由许多个三角面片组成,因此模型的简化可以转换为对三角面片的简化。采用一种改进的基于边折叠简化算法,依据小波曲面细分原理,并对边折叠生成的新顶点提取矫正系数,对新顶点进行修正[7]。图 2为边折叠算法示意图。
![]() |
图 2 边折叠算法示意图 |
假设新生成顶点为X0(x0, y0, z0), 顶点实际坐标为X1(x1, y1, z1),则矫正系数J就是X0与X1之差,即

根据上述算法,并参照《城市三维建模技术规范》,将三维模型简化为4个LOD层次,并进行存储。表 1为LOD细节层次分级。
细节层次分级 | 用途说明 | 分辨率/m |
LOD1 | 精细化管理、逼真显示 | <10 |
LOD2 | 专题应用 | 10~20 |
LOD3 | 城市区域发展趋势分析 | 20~50 |
LOD4 | 城市格局演变分析 | >50 |
在进行三维场景绘制时,视野的变化范围随着人眼视点的移动而移动。虽然视点的变化是随机的,但是整体来说包含6种变化趋势:沿着X轴的正、反方向的移动(沿X轴前进或后退),沿着Y轴的正、反方向的移动(沿Y轴前进或后退),沿着Z轴的正、反方向的移动(沿Z轴前进或后退)[12-13]。将其投影至二维平面变化为向上、向下、向左、向右、左上、左下、右上、右下等几种情况,如图 3所示。
![]() |
图 3 视点变化情况 |
因此在进行三维场景显示时,可以根据视点位置及其变化趋势对三维场景分级逐渐显示。采用距离选择法和偏心率选择法相结合的方法选择LOD细节层次。距离选择法是根据场景内视点距离模型的欧氏距离选择合适的LOD模型,这是最简单也最常用的一种方法。场景的精细程度随着视点到模型距离的增大而减小,当距离视点较远时,一些细节就变得不重要,可以选择较低分辨率,甚至可以选择不显示。偏心率选择法是根据视觉规律,通常居于视野中心的模型往往具有更高的关注度,可以选择较高分辨率的细节模型,而居于边缘的模型容易不被重视,选择较低分辨率的细节模型。图 4(a)、图 4(b)分别为距离选择法和偏心率选择法的示意图。
![]() |
图 4 ${paragraph.title} |
对构建的不同层次三维模型进行树形结构存储和建立索引,便于后期加载绘制。集群系统采用4台子节点,每台节点控制一台投影仪,将4台投影仪进行多屏拼接绘制。按投影屏幕范围与模型显示区域进行换算,将屏幕范围划分为4块进行显示,并在此基础上再次划分为16块及64块等更高等级。根据人眼观察规律,视点通常位于屏幕中心,因此选择屏幕中心作为初始视点,并以初始视点为中心进行屏幕等级划分。在视点移动规律下,可知通常上、下、左、右4个方向是人眼视野最易变化的方向,由模型在这4个方向上距离初始视点的欧式距离作为判定模型分辨率等级的标准。与此同时,兼顾左上、左下、右上、右下4种视点移动情况,将对这4个方向上(即对角线方向)的模型层次等级进行一定的提高。以X轴、Y轴分别进行八等分,取交点作为屏幕划分依据,得到均匀划分区域,不同屏幕区域对应不同范围下的三维模型,进而计算得到不同等级屏幕区域所需加载显示范围。LOD模型分级加载显示流程如下图 5所示。
![]() |
图 5 LOD模型分级加载显示流程 |
将屏幕按照划分规则划分为4个等级(如图 6所示),其中最小框线包含的区域(区域Ⅰ)是视点最关注区域,区域Ⅱ次之,区域Ⅲ进一步模糊化,最外层区域Ⅳ采用LOD4。在模型显示及变化时,先在整体范围Ⅳ内加载LOD4,区域Ⅲ进一步加载LOD3,区域Ⅱ加载LOD2,区域Ⅰ加载LOD1。当显示区域稳定不变后,根据需要按照Ⅱ、Ⅲ、Ⅳ的顺序逐步加载更为精细的模型。
![]() |
图 6 屏幕等级划分方案 |
试验采用的集群系统由1台主节点机、4台子节点机和4台投影仪组成。所有节点计算机操作系统均为Windows 7,其中主节点内存为4.00 GB,子节点内存为2.00 GB。在集群系统中,通过主节点对4台子节点进行控制,每台子节点连接一台投影仪,利用4台投影仪对模型进行并行显示,以解决单一计算机绘制时易产生卡顿、运行缓慢等现象。试验所使用的测试数据为自主构建的三维城市场景模型。
使用OSG(OpenSceneGraph)三维描绘引擎对三维城市模型进行管理渲染,通过OSG渲染流水线(依次遍历操作、更新遍历、拣选遍历和绘制遍历),得到三维场景的渲染结果。将所有层次LOD模型一次载入,利用OSG中的PageLOD节点代替LOD节点,每一层分辨率模型只在显示时加载,不显示时可动态卸载[15-16]。采用改进的边折叠算法[7]对模型进行简化,构建4个层次等级的LOD模型,并存储在计算机节点中,由主节点对模型绘制过程进行整体管理和调度。按照不同等级屏幕对应的模型范围,根据视点的选择,每块屏幕逐级加载对应的不同等级LOD层次模型,并随视点变化动态的加载符合重要度等级的LOD模型,卸载当前等级LOD模型。待视点稳定后,分区域逐级完成整个模型的加载及绘制。
2.2 结果及分析3DCM在集群并行系统下的显示效果如图 7所示。表 2为原始未简化三维模型和LOD简化后模型的顶点数、面数、帧数等试验结果。可以看出,通过简化后的模型的三角面片数和顶点个数减少,模型数据量变小,为模型可视化提供了良好的数据准备;利用分层逐级加载模式进行场景加载,每块模型根据视点重要度只在显示使加载,不显示时动态卸载,模型加载时间由21 s提升至8 s,能够快速地渲染显示;根据视点变化规律动态加载模型,运行效率得到了大幅提高,帧率由18.9帧/s加速至30.1帧/s,能够满足连贯流畅的可视化效果。采用基于视点变化规律,通过距离选择法与偏心率选择法相结合的方法分层次、分区域的渲染显示三维场景,能够在较短时间内完成3DCM的显示,且具有良好的可视化效果。
![]() |
图 7 3DCM集群并行环境显示效果 |
模型 | 三角面/个 | 顶点数/个 | 载入平均时间/s | 帧率/(帧/s) |
原始格网模型 | 153 362 | 460 086 | 21 | 18.9 |
简化后格网模型 | 102 918 | 163 563 | 8 | 30.1 |
针对三维城市模型数据量大、运行速度慢、计算压力大等问题,对三维模型构建了多层次细节模型,根据视点变化规律,结合距离选择法与偏心率选择法,对屏幕进行划分,按照划分方案对三维模型分层次加载,在集群系统中并行地实现了3DCM的快速显示。研究表明:
(1) 对三维场景进行LOD简化,可以大大减少模型的数据量。
(2) 基于视点的模型加载显示可以有效地提高三维场景的显示速率,且显示连贯,没有明显的跳帧现象。
(3) 在集群系统中采用并行的方式对三维模型进行处理,是一种快速有效的方法,可以大幅提高3DCM的处理显示速度,提供流畅连贯的可视化效果。
随着数字城市的快速发展,需要越来越精细的3DCM。如何解决大范围模型数据的处理显示,建立更连贯精细的LOD层次模型,以及利用GPU加速图形的渲染等问题还需要进一步研究;同时,在多屏幕显示绘制中屏幕中间易产生裂缝,影响整体可视化效果,通过硬件软件相结合的方法解决屏幕裂缝,实现多屏无缝可视化绘制将会是下一步研究方向。
[1] | CLARK J. Hierarchical Geometric Models for Visible Surface Algorithms[J]. Communications of the ACM, 1976, 19(10): 547–554. DOI:10.1145/360349.360354 |
[2] | 俞凌云, 王毅刚, 王亢. 大屏幕无缝拼接系统的应用软件平台开发[J]. 计算机应用, 2008, 28(9): 2434–2436. |
[3] | 张志国. 基于边塌陷和顶点分裂的动态多分辨率网格生成[D]. 上海: 上海交通大学, 2006. |
[4] | CHEN Huahong, LUO Xiaonan, LING Ruotian. Surface Simplifi-cation Using Multi-edge Mesh Collapse[C]//International Conference on Image and Graphics.[S.l.]:IEEE, 2007:954-959. |
[5] | 石教英. 分布式并行图形绘制技术及其应用[M]. 北京: 科学出版社, 2010. |
[6] | 迟学斌. 高性能并行计算[M]. 北京: 中国科学院计算机网络信息中心, 2010. |
[7] | 杨武. 三维城市模型数据组织与存储方法研究[D]. 湘潭: 湖南科技大学, 2014. |
[8] | 朱庆, 龚俊, 杜志强, 等. 三维城市模型的多细节层次描述方法[J]. 武汉大学学报(信息科学版), 2005, 30(11): 965–969. |
[9] | ASTHEIMER P, PÖCHE M.Level of Detail Generation and Its Applications in Virtual Reality[C]//Conference on Virtual Reality Software and Technology.[S.l.]:World Scientific Publishing, 1994. |
[10] | 费红辉, 王毅刚. 大规模场景分割及LOD结构生成算法研究[J]. 计算机应用与软件, 2012, 29(7): 227–230. |
[11] | 付燕平, 罗明宇, 刘其军. 大数据三维模型快速显示技术研究[J]. 计算机技术与发展, 2015(5): 87–90. |
[12] | 殷智慧. 三维空间数据存储技术与动态调度机制研究[D]. 湘潭: 湖南科技大学, 2014. |
[13] | 李拥. 基于OpenMP的三维城市模型并行绘制研究[D]. 湘潭: 湖南科技大学. 2013. |
[14] | 龚俊, 朱庆, 张叶廷, 等. 顾及多细节层次的三维R树索引扩展方法[J]. 测绘学报, 2011, 40(2): 249–255. |
[15] | 聂小波, 邢光成, 陈涛, 等. OpenGL及其在DEM可视化中的应用[J]. 地理空间信息, 2009, 7(3): 48–50. |
[16] | 王锐, 钱学雷. OpenSceneGraph三维渲染引擎设计与实现[M]. 北京: 清华大学出版社, 2009: 74-86. |