张 昊 蒲 浩 胡光常 刘江涛
(1.中南大学土建学院,湖南长沙 410075;2.中铁二院工程集团有限责任公司,四川成都 610031)
铁路方案展示、评审、信息化管理、环境评估、安全审计等工作,需要构建大场景铁路三维仿真平台。目前铁路三维可视化多采用以下方法:
(1)文献[1]利用CAD建立三维模型,利用3DS MAX等图形处理软件对模型进行后期处理,完成铁路的三维可视化。该方法在3DSMAX等图形处理软件下的手工操作还比较多,费时费力;一旦设计有了任何调整和修改,花很多时间和精力建立的铁路三维模型就只能作废,要重新建模,重新进行后期处理。
(2)文献[2]利用OpenGL技术搭建铁路三维场景。该方法可以快速高效的实现具有较强真实感的铁路三维场景的绘制和交互式漫游。但OpenGL作为底层渲染API,主要致力于图形硬件特性的抽象实现,对于数据的空间组织能力在本质上还是显得过于简单和弱小。因此该方法较适于局部铁路三维场景的展示。
因此,大规模铁路三维场景可视化技术值得研究。本文基于OSG开发了铁路三维实时交互式可视化平台。该平台可以实现大范围铁路三维场景的快速构建,具有交互式漫游,场景编辑,信息查询等功能。
OSG(Open Scene Graph)是一个跨平台的开源场景图形程序开发接口(API),内核 API封装了全部的OpenGL函数功能,包含OpenGL最新扩展,实时渲染最优化。用于实时视景仿真、虚拟现实、图形特效、可视化计算等方面的研究。广泛支持目前流行的2D、3D数据格式。
OSG采用包围体层次(Bounding Volume Hierarchy)来实现场景图形管理,并采用树状结构保存信息。这种场景图形BVH树不仅可以正确地表达场景图形的信息组成,还可以加速场景对象的裁剪、相交测试、碰撞检测等一系列操作。此外,OSG场景树中定义了的大量功能节点,如空间变换节点(Transform),细节层次节点(LOD)、开关节点(Switch)、动态调度节点(PagedLod)等。开发者可以根据三维场景中各种模型的特点选择不同的功能节点,实现场景的有效组织。基于此,本文采用树形结构组织铁路三维场景,如图1所示。
图1 铁路三维场景结构
如何快速建立大规模地形模型并实现海量数据的有效组织和管理,是实现铁路场景三维可视化的基础。铁路线路往往长达数百甚至上千公里,沿线地形数据动辄数GB甚至几十GB。显然一次性将数GB甚至更多的数据读入内存在当前技术条件下是不现实的。需要对数据进行分页处理,根据视点位置动态加载适当精细层次的地形,在不影响仿真效果的前提下减小载入内存中的数据量。
(1)建立地形分页数据库
建立地形数据库需要高程和影像数据,高程数据一般源自航测或外业勘测地形数据;影像数据可采用航拍或卫星遥感影像,也可采用虚拟纹理。构建地形数据库前需统一影像文件和高程文件的坐标系统,对原始数据进行坐标校正等处理。按照四叉树结构对原始数据进行分层分块处理,建立多分辨率金字塔结构的地形分页数据库。每一层由若干地形块组成,每个地形块对应一个文件。层级越高,则分辨率越高,每个地形块区域的范围也越小,即:第N层分辨率为第N+1层的1/2,而每个地形块的面积则为第N+1层的4倍。为便于组织管理,按照层数和地形块在该层中的行列数命名文件,如图2所示。
图2 地形四叉树分块示意
(2)地形数据的动态调度
应用OSG提供的DatabasePager类实现海量地形数据的动态调度。DatabasePager主要处理对象为PagedLOD节点。PagedLOD节点按照可视范围,将多个子节点设置为复杂模型的多个细节层次。当某些子节点对场景绘制长期没有助益时,DatabasePager可以将这些子节点自动卸载,释放空间;反之,也可以即时加载某些不存在内存中的子节点,实现场景的动态调度。将地形分页数据库中的每个地形块作为Paged-Lod节点的子节点加载到场景中,并根据地形块所处的不同层级设置该其可见范围。随着视点的变化DatabasePager会自动加载当前视域内的地形分页文件,并卸载长期不可见的地形数据,释放内存。利用该方法动态调度地形分页数据,可实现大规模地形的流畅漫游,满足三维可视化的需要。图3为某铁路沿线地形截图。
图3 地形场景
铁路三维模型主要包括路基、桥隧站、附属设施。
(1)路基
根据横断面设计信息,把路基按填挖高为零的断面、桥梁起终断面、隧道进出口断面分为若干段落,在段落内按一定间隔提取横断面,将这些横断面逐个相连,得到该路基段落的三维模型。模型面片组织方式为:依次取横断面上特征点,采用 OSG绘图基元QUAD_STRIP绘制四边形条带,纹理的包装模式采用重复贴图(REPEAT)。
(2)桥隧站
铁路桥梁按桥型主要分为:简支梁桥、连续梁桥、拱桥、桁架桥和斜拉桥等。简支梁桥和连续梁桥的建模较为简单,建立梁身模型时,可依次找出具有代表性的横断面,将断面逐个相连得到。建立桥梁墩台模型时,首先根据线路平纵横数据及桥梁孔跨信息计算墩台位置,再根据墩台形状构建模型。拱桥建模时,根据线路平纵横数据以及拱轴线设计参数,按一定间隔计算桥梁横截面特征点坐标,前后截面对应点相连得到。桁架桥和斜拉桥结构比较复杂,本文综合运用透明贴图技术、布告板(Billboard)技术等建立桁架桥和斜拉桥模型。图4为中承式拱桥、下承式桁架桥、连续梁桥和斜拉桥的模型效果。
图4 桥梁模型效果
建立隧道模型时,按一定间隔计算横断面特征点坐标,前后断面相连得到。车站站台模型可采用类似方法构建,站房模型可采用3dsmax等软件建模后导入。
(3)附属设施
附属设施主要包括标志标牌,接触网等。标志标牌主要包括桥梁标牌、隧道标牌、车站标牌等。接触网模型主要包括接触网支柱、接触悬挂、电力线等。这些附属设施往往数量巨大,位置不同形状相同,如果将每个附属设施模型都创建实例载入内存,将大大增加系统负担。对于这类模型只需创建唯一的实例,利用矩阵变换节点(MatrixTransform)或位置变换节点(Position Attitude Transform)对其旋转平移,在不同位置多次绘制,达到所需要的效果。从而大大地节约内存空间,有效的减轻系统负担。
地形模型和铁路模型的融合是搭建铁路三维场景的关键点和难点。针对地形分页数据库的特点,本文采用以下算法:检索地形分页数据库,找出与路基边界有叠加区域的地形文件,计算地形与路基重叠区域的边界线,利用该地形文件三维点构建Delaunay三角网,并将重叠区域边界线作为约束边界嵌入Delaunay三角网,最后剔除约束边界内部的三角形,实现线路模型与地形模型的融合。
(1)生成路基边界
以桥隧起终断面为分界断面把线路分为若干个段落,每个段落内,按一定间距取横断面最外侧点,构建路基边界多边形,得到全线路基边界多边形数组。为便于后期计算,边界点采用逆时针或顺时针顺序有序排列。
(2)计算地形与路基重叠区域边界线
地形分页数据库中每个文件记录一定矩形区域内的地形数据。读取分页数据文件,获取该文件所对应地形区域的边界。遍历路基边界多边形数组,与地形边界求交,计算重叠区域边界线。路基多边形与地形边界均为空间多边形,首先向XY平面投影,将空间多边形求交转化为平面多边形求交,然后根据边界线顶点性质的不同,计算其高程值。如图5所示,重叠区域边界线顶点包括:A、a、3、4、5、6、b。其中 A 为地形边界顶点在XY平面上的投影点,高程取自地形边界顶点;3~6点为路基边界顶点在XY平面上的投影点,高程取自路基边界顶点;a、b为路基边界线与地形边界线交点,其高程由临近路基边界顶点高程值线性插值计算得到,图中a、b点高程分别由2、3和6、7点插值得到。
图5 重叠区域示意
(3)构建约束Delaunay三角网并移除重叠区域。
利用以上计算结果,应用OSG中的Delaunay Triangulator类,完成对地形的修改。主要函数:构建三角网:triangulate;添加约束边界:addInputConstraint;移除约束边界内部三角形:remove Internal Triangles。
该算法核心在于对地形数据库中与路基有叠加的地形块重新构网,其他大部分区域无需修改。通过实际应用验证,该算法可以快速完成对地形数据库的修改,地形模型和铁路模型融合效果良好,如图6所示。
图6 融合前后对比
场景交互是三维可视化平台必不可少的功能。OSG提供了平台无关性的GUI事件驱动支持,GUIEvent Handler类向开发者提供窗体系统的GUI事件接口。基于此,主要实现以下交互功能。
响应鼠标或键盘消息,实时修正场景相机观察矩阵(View Matrix),对场景进行平移,旋转,缩放等操作,实现全方位不同角度浏览场景。也可指定漫游起终点里程及漫游速度,系统根据线路数据插值计算漫游路径,实时设置相机相机观察矩阵,模拟行车效果。
场景编辑主要包括地形编辑和桥梁编辑。地形数据中有时会存在高程异常点,造成地形模型存在不合理区域,影响三维可视化的整体效果。可采用地形编辑功能,拾取高程异常点,修改高程值,消除其对三维场景的影响。桥梁编辑功能是指用户可以拾取某座桥梁,更改其桥型孔跨尺寸等,系统根据更新后的数据构建新的桥梁模型。
基于上述原理和方法,本文采用Open Scene Graph-2.6.0在Microsoft Visual Studio2005环境下开发了铁路三维实时交互式可视化平台。该平台已成功用于成渝城际高速铁路项目(如图7所示)。
图7 运行界面截图
本文基于OSG三维渲染引擎,在对大场景地形建模、铁路建模以及地形模型与铁路模型融合等关键问题深入研究的基础上,开发了铁路大场景实时交互式可视化平台。该平台可以快速实现大规模铁路三维场景的构建,并具有交互式漫游,场景编辑,信息查询等功能,场景浏览顺畅,真实感较强。使用者即可以从全局的角度查看线路总体走向,也可专注于局部,浏览场景细部。该平台即可以用于方案比选,便于决策者快速直观的对方案作出评判,也可以用于项目三维展示或信息化管理,具有广泛的应用前景。
[1]蒋红斐,詹振炎.铁路线路三维整体模型构建方法研究[J].东南大学学报(自然科学版),2003,31(1):87-90
[2]潘兵宏,许金良,杨少伟,等.公路三维建模应用研究[J].西安公路交通大学学报,2001,21(1):49-51
[3]蒲 浩,宋占峰,詹振炎.铁路线路设计中三维实时交互式仿真研究[J].中国铁道科学,2003,24(5):56-60
[4]蒲 浩,宋占峰,詹振炎.基于Delaunay三角网数字地面模型的路线三维建模方法[J].铁道学报,2001,23(4):81-87
[5]李顶峰,伍卫凡.基于OpenGL的磁浮铁路实时三维可视化技术研究与实现[J].铁道勘察.2008(2):39-42
[6]祖卫国,邓 非,梁经勇.海量三维GIS数据可视化系统的实现研究[J].测绘通报,2008(7):39-41
[7]王 锐,钱学雷.OpenSceneGraph三维渲染引擎设计与实践[M].北京:清华大学出版社,2009:366