高速列控系统三维视景子系统设计与实现
扫描二维码
随时随地手机看文章
0 引言
基于三维视景的仿真系统构造了一个可视化的列车运行环境,能够全程模拟列车的真实运行情况,为使用者提供了真实体验和方便自然的人机交互,多套仿真系统联网可以为列车运行间隔、闭塞制式、进路控制以及列车运行图的设计等多方面的研究提供强有力的验证手段,为我国自主开发CTCS搭建技术创新平台有重大意义。
三维视景的构建与驱动,比较基本的方法是采用OpenGL实现[1],其缺点是不能利用高效的建模工具制作的三维模型,所以三维场景逼真度以及场景的大小都受到很大的限制。而MultiGen公司的软件Creator和Vega提供了完整的、成熟的模型制作、加载以及视景驱动功能,所以很多研究者都是用这种方式建立三维视景系统[2,3].但是Creator和Vega是商业软件,因此要承担较高的研究和开发成本。与其它建模软件,如3 D SMAX(以下简称MAX)相比,Creator建立的模型通用性很弱,只能在MultiGen公司的平台下使用,并且用Creator建模,在模型精细程度、灯光效果等方面也相差较远[4].同时Vega封装较严格,因此在软件开发自由度以及二次开发上都面临不少的限制。
OGRE(Objected-Oriented GraphicsRendering Engine)是一个用C++开发的面向场景、非常灵活的3D引擎,它旨在让开发人员更容易、更直接的利用硬件加速的3D图形系统开发应用。因此,本文使用基于OGRE的3D引擎,采用MAX建模,构造了郑州-西安高速铁路路线逼真的三维视景系统。
1.大规模地景的加载与显示
郑西高速铁路线的三维视景系统的地理范围是从郑州到西安的长约五百公里的高速铁路线,对视景仿真来说,这涉及到大地景的加载与显示技术。
列车驾驶员视点虽然只能沿着铁路线移动,但是视点却一直贴近地面上的景物,因此全部铁路沿线的模型都需要非常精细。这提出了三个问题:
铁路沿线模型建模需要非常精细;精细的模型需要占用较大内存,因此需要系统能够动态加载模型;为了减少内存占用,需要使用大型网格多分辨率技术。
第一个问题第二节详细讨论。
多分辨率技术以网格简化为基础,通过构造原始网格模型的多个逼近表示,结合硬件资源的绘制能力和绘制误差选择最优的细节层次(level-of-detail,LOD)进行绘制,并在保证绘制速度的前提下尽可能提高绘制质量。其涉及内容主要包括:1)多分辨率表示的设计,如LOD的组织和切换;2)多分辨率表示的构建,如按照层次结构自底向上生成所有LOD;3)多分辨率表示的绘制,如根据硬件绘制能力、光照参数和观测参数选择、加载和绘制LOD.
对于地形可视化技术而言,三维地形数字高程数据(DEM)的合理有效的组织是后续地形简化的基础。随着地形场景范围的不断扩大,仿真所用地形数据量不断激增,这些海量数据已远远超过了计算机的实时处理能力,使得地形数据无法一次性调入内存。为了实现大规模场景的实时绘制,需要对数据的组织结构进行处理,还要对数据的调度过程进行高效率的管理。因此,如何高效、实时的处理、调度数据,同时保证画面帧速率的稳定性成为了亟待解决的关键问题。
在数据组织方面,地形三维可视化场景数据通常采用树形结构,利用树形结构来组织数据;在数据存储方面,由于海量数据不能一次性读入内存,故需要对数据在外存模式下的访问频率尽可能低,从而尽可能提高CPU运行效率。海量数据的访问模式应该满足:在同一区域数据的存储具有很好的连续性;按照不同的LOD逐层访问,同层或相邻层的数据应具有良好的局部性;在数据动态调度方面,为解决海量数据与计算机内存容量之间的矛盾,目前普遍采用的数据调度方法都是基于外存算法进行优化和改进。
利用多线程和基于外存的方法来进行可见性计算与数据操作,使用基于视点的可见性判断作为数据预读取策略,动态加载数据,系统内存缓冲区存储新近使用的几何数据。
2.3DS MAX精细建模
对于普通的三维视景建模来说,MAX与Creator都能达到所需要的构建精度要求,但在构建逼真度方面Creator的表现不及MAX.对于高精度模型的构建,Creator除了制作军事场景和一些复杂人物模型之外,在其他方面极少会用到,对于制作具有高圆滑度的细节部分,Creator制作起来也不如MAX的质量高。而MAX在这个方面运用得非常成熟,使用MAX更为流行。它提供很好的工具,比如说蒙皮、骨骼等,动画角色的动作、表情等的细腻表达,通过MAX可以展现得非常逼真。
多重纹理技术是能够增强模型渲染逼真度的一个技术。三维图形是由称作立体多边形的面组合构成的,但为了再现立体表面的花样和质地的感觉,有时在多边形中粘贴称为纹理的图像。叠合了多个纹理图像,一次性地重叠多个纹理,同时进行绘画的方法就是多重纹理。
一次性多重贴图混合是显卡等硬件对应才能够使用的功能,由于可以重叠多个纹理并同时绘画,所以其速度快,它可以将几次渲染合为一次来进行,在这个渲染过程中, 可以在不同的纹理单元分别放入第1次、第2次、第3次需要渲染的对象。当程序向屏幕绘图时,将这些渲染结果叠加起来,最终结果显示到屏幕。在硬件不对应的情况下,用软件进行多次重复纹理绘画的多重贴图混合。
3.快速渲染小物体
对于视景仿真系统来说,逼真度是非常重要的一环,因此,高度复杂的场景就不可缺少,树木和草覆盖在地面上能够起到很好的效果,这些树木和草通常被称作小物体(widget)。
实际上,用作widget的最有效的模型通常只使用少数几个双面多边形和单张的纹理。这种简单性使我们可以渲染比其他方法多得多的实例。但是由于树和草的数量比较大,现在的硬件可以渲染大量的三角形,但是只有当渲染的单位是有上千个顶点组成的块时才能得到最好的性能表现。这是因为大量的单个三角形从内存发送到显卡需要占用比较大的显存带宽,而且由于GPU的处理速度非常快,就会造成GPU在等待小物体的顶点数据的情形出现,严重影响显示效率。
一个高效的解决办法是,对场景中所有的小物体进行合理化分组,随着视点的变化渲染不同分组的小物体。二叉空间划分法(Binary Space Partitioning,BSP)是一种非常有效的分组方式,使得场景可以是非规则的形状,而不用花费额外的内存来存储空的节点。这种方法递归地将空间使用超平面划分为凸面体集合,引出了借助于称之为BSP树的树形数据结构的场景表示。二维(称为四元树,Quad Tree)和三维(k-d树)BSP树及其变体是计算机图形学中使用得十分重要的数据结构。最初,整个区域被定义为BSP树的根;之后,继续划分区域,一旦把凹形区域划分为两个凸形区域(在最好情况下)或凹多边形,命名这些区域,它们成为其父结点的子节点,父结点实际上代表了整个区域。
4.系统结构及仿真结果
OGRE是一个开源的三维引擎,这个类库隐藏了底层系统库OpenGL和Direct3D的所有细节,提供了一个基于世界对象和其它直观类的接口,极大的提高了开发效率。本系统采用了OGRE 1.7.3版本,开发平台采用Microsoft Visual Studio 2010.硬件平台采用的是Intel Xeon 2.5GHz CPU,3G RAM,WinFast GTX 460显示卡,操作系统采用Windows7 Professional.本系统是以郑州-西安高速客运专线为仿真对象构建的视景系统的显示效果,列车运行公里标、速度、进路信息以及信号机显示参数由高速列控实验室仿真平台通过以太网传输。视景输出为1280*1024像素,帧速率不低于30fps.
5.结语
基于高速列车视景仿真不同于飞行仿真的特点,系统需要能够很好的处理大范围地景的高逼真度、高精度建模,提供有效的数据结构组织、存储地景及其纹理数据,当列车运行的时候,根据视点的变化,利用多线程技术高效的索引及加载多分辨率的地形和纹理以及树和草等小物体,处理好海量数据加载和画面流畅度的矛盾,为高速列车运行控制系统实验室的视景系统的建设提供了有效地解决方案。
另外,系统在设计的时候把信号机和应答器的模型与数据分开处理,轨道道岔和进路能够单独控制,因此系统拥有良好的可移植性与扩展性,能够方便的把系统应用到其它高速列车线路,例如京沪、京哈等线路上,为多条线路、多种型号的高速列车单独甚至交叉运行实验提供良好的实验环境。