肖林华
基于OSG的输电网三维可视化系统研究
肖林华
随着智能电网建设的加快,输电网的建设、设计、运营管理具有更高的要求,输电网三维可视化变得更加重要。为了更形象直观地展示输电网三维形态及其地形地貌,自然灾害等场景,本文设计并实现了一种基于开源软件OSG的输电网三维可视化系统。该系统实现了输电塔及其输电线路三维演示,输电网场景漫游、缩放等基本人机交互功能,同时重点研究了输电网路径漫游,输电网单位组件的实时信息显示,对我国输电网建设和防灾减灾的工程具有广泛的应用前景和现实意义。
随着电网的迅速发展,我国已经基本形成了“西电东送、南北互供、全国联网”的总体格局,特别是近期未来电网的提出,输电线路的建设将继续加大。在建设过程中输电线翻山越岭,所在地周边地理条件异常复杂多变,沿线不仅有森林区、采空区等独特区域,也有微地形及高速公路、高楼、塔吊等各种建筑布局。这些较复杂的外部条件及地理环境均给线路的安全保证增加了难度,也使管理更加散乱,直接影响工作效率。
OSG(OpenSceneGraph) 是一个开源的场景图像管理开发库,主要为图形图像应用程序的开发提供场景管理和图形渲染优化功能,其包含了丰富的类库,操作灵活,功能强大,性能优越,资源丰富。本文设计了一个基于OSG的输电网三维可视化系统,可以直观的反映出输电网所处的地质地貌、天气、输电塔维修等各种情况,以三维图像的形式更加清晰的解释和显示出输电线路所发生的变化,同时有助于展示输电网装备台账信息。
要是提供一个实时、直观的三维可视化立体环境并根据用户的具体应用需求,实现输电网可视化系统的场景漫游、模型剖切和动画声音等交互功能;数据库设计主要提供输电网各个组成部分的信息,包括塔杆、绝缘子、输电导线等。三维输电网系统组织结构如图1所示。
图1 输电网三维可视化系统组织结构图
输电网可视化系统主要由四个部分组成:系统界面设计,3D建模,OSG驱动技术,数据库设计。系统的界面设计是系统可视化的基础,包括菜单栏、工具栏、操作按钮和输入框;3D建模主要是对地形模型、输电塔模型和线路模型进行设计,包括多种地形结构和塔杆结构,为三维可视化的实现提供丰富的数据基础;OSG驱动层主
图2 菜单栏结构
系统界面设计
本系统利用微软提供的MFC进行界面设计包括两部分:菜单栏和窗口。菜单栏包括文件、界面设置、输出和帮助等部分,主要组织结构如图2所示。
窗口分隔为左右两个子窗口,并通过通知消息实现两个窗口的关联,左边窗口是主要控件,包括风速大小、视角方向、天气状况等信息的输入以及实现视图控制的按钮控件,通过键盘输入和鼠标事件实现系统人机交互功能。右边窗口是输电网图像的三维显示,对控件发送的消息进行响应,包括场景漫游、场景视口变化和天气效果演示等。
图3 操作控制图
图4 漫游流程图
3Dmax建模
系统模型建立利用3Dmax建模工具,对塔杆、地形、输电线等其他组件模型进行三维建模,设计合适的模型大小数值,保证塔杆和地形之间的比例,记录模型之间的相对坐标,使多个模型能够协调清地加载到系统中。输出的模型利用第三方的OSGExp插件转化为二进制的.IVE类型,有利于加快读取速度。
OSG技术研究
输电网三维可视化系统的操作对象是场景的数据即OSG场景,而场景的数据主要由OSG驱动提供的相应的类调用合适的方法进行控制。OSG场景图形采用一种自顶而下的、分层的树状数据结构来组织空间数据集,以提升渲染的效率。场景树结构的顶部是一个根节点,从根节点向下延伸,各个组节点中包含控制集合信息和用于控制外观的渲染状态信息。如使用Viewer类中getSceneData方法可以对整个场景进行渲染,addEventHandler可以加入一个时间处理器去响应键盘或鼠标的操作从而控制场景。整个场景的操作控制结构如图3所示,接下来对OSG关键技术进行研究分析。
场景漫游和路径漫游技术
OSG场景漫游的主要流程如图4所示:在实现输电网三维可视化系统过程中,需要对操作器进行编写,操作器必须从OSGGA::MatrixManipulate派生而来。OSG官方提供了轨迹球漫游器能够接受鼠标事件,变换相机位置和姿态,实现场景平移、旋转和缩放等操作。
路径漫游是漫游的一部分,就是将路径存放到一个文件或者数据库中。当单击开始按钮开始漫游,视图就会按照预先设定的路径原封不动的走一遍。路径信息由七列组成,这七列分别代表的意思为:时间、位置、旋转角度,有了这三个因素就可以控制整个场景了。使用类OSG::AnimationPath去设置路径,AnimationPathManipulator创建路径漫游器,viewer去调用setCameraManipulator()方法实现。本系统的设计中,路径漫游方向与输电线平行。
动画和声音技术
OSG动画和路径漫游相似,使用的是相同的类,该类封装了一系列操作,有动画模式,动画路径的导入和导出,动画时间,动画的关键点等,默认的动画模式有三种,为单摆,循环和非循环,用setLoopMode函数设置,自定义时间计时器函数去判断动画是否结束。通过AnimationPathCallback类控制动画时间偏移、执行速度、渲染状态等。OPENAL是一个开源的音效库,是OSG的第三方插件,通过Soundroot类的调用可以实现输电塔倒塌时声音渲染。本系统中可以利用动画声音技术模拟输电线路倒塌的过程。
OSG其他关键技术
除了上述的所提到技术之外,OSG还提供很多相关的技术去实现系统的场景渲染。比如粒子系统中OSGParticle::PrecipitationEffect类,可以用来实现三维可视化系统的雨效、雪效和雾效等,生成非常真实的效果;通过调用剖切面类中的成员函数ClipPlane() 和SetStateSet() ,实现对三维输电塔模型的任意剖切。
表1 导线表
表2 塔杆表
表3 绝缘子表
数据库系统设计
数据库是大多数系统软件的数据基础,同样在整个输电网三维可视化系统的设计中,包含着输电网组件的各种信息,这些信息有必要被记录下来并进行实时读取操作,因此数据库成为数系统必不可少的一部分。一般而言,输电网的主要部件有八部分组成,分别为导线、避雷针、金具、绝缘子、塔杆、拉线、基础和接地装置。导线是固定在塔杆上输送电流用的金属线,不同电流或者不同电压所用的导线类型不同,同一类的导线编号、安装日期、维护日期等信息也会不同。
本三维可视化系统中利用的是关系型数据库mySQL,主要针对输电网的导线、塔杆和绝缘子进行数据库设计,根据相关输电网资料, 导线的数据库信息如表所示。
图5 操作流程图
图6 模型加载图
图7 雪效图
塔杆数据库表信息如下表2所示。
绝缘子数据库表信息如表3所示。
三个表是相关联的,编号均为表的主键且在设计的过程中采用相同的字段,在模型的加载过程中,需要利用table3的相对坐标对模型进行加载进而加载输电导线,输电导线的方向为与空间坐标的Y轴平行。
论文通过OSG平台成功实现了输电网三维可视化系统,在系统演示的主要操作流程如图5所示。
图6-图7是部分实验结果,界面中上下左右按钮能够实现场景的漫游,相机设置初始化为用户角度,天气效果为场景增加天气渲染,开始按钮是创建线程,实现输电网路径漫游。
论文对利用OSG平台对输电网进行可视化设计,重点设计了输电网三维可视化系统的开发过程,包括OSG下的路径漫游、动画声音等OSG技术和数据库技术。该系统能够为输电网工作人员提供一个直观的可视化交互环境,很好的演示和解释输电网所在状态。接下来将对各种输电网信息进行进一步的调研,丰富数据库系统,设计更多的3D模型,从而更加完善系统
10.3969/j.issn.1001-8972.2015.24.001