谭浩迪,张钰奇,赵华东,2
(1. 郑州大学机械与动力工程学院,河南 郑州 450001; 2. 河南省智能制造研究院,河南 郑州 450001)
水工金属结构是水库大坝用于水流调控的关键设施,其运行安全决定着整个水利工程与下游人民生命财产安全[1,2]。近年来,我国大部分水库虽已除险加固,但传统的人工检查及定期静态检测难以监测其运行状态中动态风险[3]。因此有必要对水工金属结构进行实时在线安全监测,确保设备的正常运行[4,5]。随着水利水电与计算机技术的不断发展,基于传统的二维监测管理方式已经不能满足水利设施对于水工金属结构的安全监测需求,因此充分实现设备的虚拟三维可视化监测、提高设备的人机交互能力,对于水工金属结构的信息化和智能化安全监测具有重要意义[6-8]。
新时代的交叉学科对于推进水利水电技术进入信息化和智能化起关键作用,其中虚拟现实技术的应用就是一大重要方面,虚拟现实技术是三维计算机图形学和先进输入输出设备的自然延伸,可以使用户进入一个虚拟空间,进行实时交互,感知和操控虚拟世界中的各种物体,已经成功运用在航空航天、医疗、军工、以及教育等领域[9,10]。在水利行业中,王乃欣[11]等基于虚拟现实技术模拟了淤地坝溃决灾害,为淤地坝的应急管理提供了参考;葛从兵[12]等基于Unity3d 开发了水库大坝巡视检查培训系统,用于管理人员培训与能力提高;张盈[13]等基于NFC 物联网研发了虚拟现实防洪应急演练云平台,使防洪演练成本大大降低;于辉[14]等基于Unity3d 研发了一款抽水蓄能电站事故应急处理仿真系统,用于事故处理和应急演练。通过研究发现:大量的国内外研究学者在虚拟现实技术已做出卓有成效的工作,但目前针对水利设施安全管理的应用主要体现在教育培训与三维事故预演,对于水工金属结构健康监测与虚拟现实技术相结合的可视化与信息化,尚有待做进一步研究。
本文以陆浑水库溢洪道水工金属结构为研究对象,开展虚拟监测系统关键技术研究,对其主体部分的弧形闸门及液压式启闭机研究开发了配套的安全监测虚拟系统。该系统结合轻量化建模技术、UV 贴图技术及Unity3d 引擎,将溢洪道全景造型融入传统监管界面,为其赋予虚拟现实技术的多种交互功能。并针对虚拟监测系统中自动漫游相机角度转向、水闸模型人机交互、水流效果展示与监测数据可视化功能等关键技术进行了详细研究。最终实现了水工金属结构安全监测与虚拟场景的交互融合。
虚拟监测系统的开发目标,是通过Unity3D 实现对整个仿真过程的数字化、信息化及可视化监控和管理,在开发过程中需要实现以下的性能指标:
场景的真实性:为了保证了系统的真实性,模型应该1∶1还原现实场景;所有贴图都应来源与现场照片,通过PhotoShop 软件进行适当修改;友好的交互性:UI界面应该是友好的,用户一看就明白,易于理解,无困惑;较高的渲染帧率:虚拟系统应当具有较高的渲染帧率,使得整个漫游过程流畅,不会让人有晕眩感,因此对模型进行轻量化处理;基础软件模块:采用模块化可复用的架构设计,方便后期继续开发降低维护难[15];良好的可扩展性:实验平台软件的代码构建过程中,应考虑后期需求变更时的扩展性,当有新的需求是,可以及时的添加新的功能[16]。
安全检测虚拟系统的开发,需依据现有二维界面管理系统,融合虚拟现实技术进行系统功能分析与设计。通过构建虚拟系统,实现场景漫游、人机交互、数据交互等三大功能。该系统总体架构如图1 所示,由设备成、数据层、仿真层、功能层、应用层组成[17]。
图1 虚拟安全监测系统总体架构Fig.1 Overall architecture of virtual security monitoring system
设备层:主要由分布在闸门及其他金属设备上的传感单元构成,实现对设备运行∕静止状态下水位、电流、电压等相关数据的采集,并通过网关将数据进行上传;数据层:使用MySql 数据库,内存Redis 数据库,时序数据库InfluxDB 等,将现场基础数据、水闸运行状态数据结合第三方RabbitMQ进行结构化存储管理,为满足数据在应用层的使用,对数据进行分类缓存管理;仿真层:利用Solid Works、3DMax 绘制现场模型,融合贴图技术与光照系统构建水库全景造型,对现场环境进行深度还原;功能层:基于Unity3D引擎与C#编程语言进行系统功能开发,包括场景漫游功能模块、人机交互模块、数据交互模块三大模块;应用层:是整个虚拟系统功能的整合,通过unity3d 可将系统已多种平台进行发布,本研究将虚拟系统开发至PC 端,管理者通过应用层与虚拟系统建立连接。
全景造型设计是指搭建虚拟系统水库场景环境,整体可分为模型构建与光照设计两部分。为保证虚拟场景真实性同时提高系统运行效率,将场景中模型分为闸门设备等主体模型及外围环境模型,分类进行模型绘制,最终在3Dmax 中进行相互耦合。光照设计是为场景添加各种光源,并通过GI(Global Illumination)算法计算直接、间接、反射和环境光照等使渲染出来的光照效果更为真实丰富,并通过光照烘焙贴图技术为场景增加立体感、层次感和较好的光影视觉效果。全景造型设计流程图如图2所示。
图2 全景造型设计流程图Fig.2 Panoramic modeling design flow
精细模型绘制以某一闸门为例,采用SolidWorks 建模后导入3Dmax,模型格式将由实体模型自动转化为面模型,如图3(a)所示。面数过多是影响系统性能的重要因素之一,因此必须在3Dmax 中对其进行轻量化处理,通过使用布尔运算组合,直接在原有模型上对面进行非、并、交、或等运算拼接模型减少面数,轻量化后如图3(b)所示,经对比,优化后的模型面数由23 522减少为5 548。外围环境模型通过3Dmax进行绘制,使用常用标准基体、扩展基本体以及地形插件等绘制房屋、河道、湖面等用于丰富场景。
图3 闸门模型轻量化Fig.3 Gate model lightweight
将两部分模型在3Dmax 中进行交互耦合,修改两者模型单位比例、调整轴心坐标、创建父子关系等,使其便于脚本控制,呈现更好的交互效果。最后对模型进行材质赋予,通过纹理贴图、法线贴图、反射贴图等多种贴图格式,结合设置漫反射、高光反射、透明度等相关参数,制作Material 材质球,使模型表现出更加逼真的物理效果。
本系统主要使用3种光源,分别为:①环境光以天空盒的形式为整个虚拟场景添加天空照射的效果;②聚光灯运用在报警上,通过红光闪烁提醒管理人员预警信息位置;③平行光使用在监控室屋顶上,为控制室提供亮度。
光照设计的重点是GI 与光照烘焙。使用GI 技术,使设备在运行过程中任意改变光源或移动物体时,都会立即更新所有的光照效果。光照烘焙通过对静态模型进行展UV、渲染静帧光照图、反贴UV 的流程,将模型阴暗处理以贴图的方式进行渲染,提高系统运行效率。
最后搭建的虚拟场景如4(a)图所示,水库现场如图4(b)所示。
图4 虚拟系统场景Fig.4 Virtual system scenario
友好的交互方式对整个系统的性能评估至关重要,本系统涉及到的交互类型与功能类型较为复杂,包括:UI交互、人机交互、数据与模型交互、数据与UI 交互。同时虚拟系统开发应采用模块化可复用的架构设计及良好的可扩展性,方便后期需求变更时,能及时添加新的功能模块,降低维护成本。
为此,本文研究了一种功能事件添加、移除和触发的事件工厂,该工厂以委托的方式将虚拟系统所有交互功能、事件触发以字典的形式进行储存,通过KEY 键进行功能使用,事件工厂实现方式如图5所示。
图5 事件工厂流程图Fig.5 Event processing plant flow
对于碰撞检测,本系统主要使用OBB 包围盒、包围球两种空间碰撞检测算法,用于检测鼠标射线是否进入包围盒。对于高精度检测的碰撞体模型采用OBB包围盒,使用3DMax构造其简单外轮廓,在Unity 中添加Col 前缀进行相关参数的设置;其他碰撞体模型均采用包围球,包围球碰撞检测使用便捷,系统资源占用率低,但其检测精度较低。
以包围球碰撞检测算法为例:设空间中任意一点坐标为C(X,Y,Z),碰撞体球心为Q(cx,cy,cz),碰撞区域半径为r,则碰撞区域的数学表达式如下:
式中:R表示以Q(cx,cy,cz)为球心,以r半径的碰撞检测包围球域,在场景空间的三维坐标区域里,假定任意物体触发点的坐标变量为W(x,y,z),对碰撞区域的触发函数作如下设定:
F(x,y,z) = 1表示已进入碰撞触发区域;F(x,y,z) = 0表示离开或未进入触发区域。
(1)人物漫游功能实现:人物漫游分为在地面上的第一人称视角与在水库上方俯瞰整个场景的第三人称视角两部分:第一人称控制器的设计与实现在Unity3d 引擎中已经很成熟,通过Character Controller 组件即可实现;第三人称视角控制器通过C#编写ThirdPlayerController 脚本,读取键盘与鼠标垂直轴信息用于控制相机移动或旋转。
(2)自动漫游功能的设计与实现:本系统使用DoTween 动画库插件实现自动漫游功能,其插件中DoTweenPath 类可将关键点位以可视化方法进行展示,便于路径调整,但也存在相机角度转向不便的问题,不利于对关键点位进行浏览。因此本系统研究了如图6 所示的漫游算法,并通过编写脚本挂载在相机上,实现相机在进入关键点位范围时,控制相机角度的旋转,并将视角聚焦,以便更好的观察物体。
图6 自动漫游相机控制流程图Fig.6 Automatic roaming camera control flow chart
人机交互是指管理人员通过鼠标、键盘等设备与虚拟场景进行交互,从而实现各种交互功能。本系统设计了基础的UI界面交互功能、小地图功能及位置传送等辅助功能,用于增强虚拟系统友好性,同时也为其他主要功能切换及使用提供便捷。闸门运行姿态展示功能是辅助功能设计中具有重要意义的一环,为方便管理人员对水闸进行全方位观察,本系统研究了一种模型交互控制算法,通过创建3 个类方法分别实现旋转、平移、相机视距变化,具体流程如图7所示。
图7 模型交互控制算法Fig.7 Model interactive control algorithm
以控制物体旋转为例:当鼠标左键按下并拖拽时,读取鼠标垂直轴偏移量信息[X,Y,Z]并保存,同时记录鼠标移动时间Time.deltaTime,设定旋转调整参数K,并将K显示在监视面板方便调整,则物体旋转角度为[X,Y,Z]*Time.deltaTim*k,最后通过Transform.Rotate 方法将旋转角度与物体本身世界坐标角度相加,实现水闸对应方向旋转。同理通过Transform.Translate 实现物体平移与相机移动。
3.5.1 数据库的连接
本虚拟系统中,闸门与启闭机的运转以及水库环境的可视化都可通过传感器采集数据信息进行实时展示。前端感知设备实时采集相关运行状态数据后,通过网关、有线∕无线网络等实时传输,同时为了更好的实现现场采集的实时数据与虚拟系统进行数据交互,网络通信采用AMQP 协议方式实现,并引入第三方系统RabbitMQ 进行结构化储存管理。虚拟系统与数据库连接在Unity3d引擎中进行配置,实现流程如图8所示。
图8 数据连接流程图Fig.8 Data connection flow chart
3.5.2 数据交互功能设计
实时状态仿真功能用于模拟现场作业情况,将水闸、启闭机模型单元位置信息与对应实时数据接口进行绑定,并编写Timer 帮助类,完成数据调取及刷新功能,实现数据与虚拟场景中物体的交互;水流动画的仿真分为闸门区域动画和河道区域动画,闸门区域动画使用Unity3d 粒子系统,通过调整粒子发射参数并制作相应贴图实现,河道区域动画通过3Dmax 动画技术,修改关键帧点位的河道高度位置实现。
智能预警功能通过对闸门应力、闸门振幅等数据信息预设阈值,将异常数据进行自动发送并触发报警事件。发送的数据信息包含内容、设备ID、故障位置等;报警事件中根据故障信息获取报警点位模型,通过GetComponent 类方法获取模型点光源组件的引用,然后将灯光颜色修改为红色,并播放提前预制的报警信号,实现可视化智能预警。
数据可视化功能采用XChart 插件将实时流速、实时水位、环境参数、闸门应力、闸门振幅、故障数量、预警数量等数据信息,以可视化图表形式进行展示。在数据显示UI界面添加相应的XChart 组件,并在检视面板调整组件锚点,为其添加定时刷新脚本,在定时刷新脚本中通过Timer 帮助类从数据中心按照2 s一次的频率调取实时监测数据。
水工金属结构安全监测虚拟系统可以通过Unity3d 可以导出为PC、Android、VR 等多种方式。本文将其部署在相应的管理电脑上,运行环境为:CPU 主频2.30 GHz,内存16 GB,硬盘500 GB,操作系统Windows11。关键功能测试如下所示:
闸门运行姿态展示功能:通过UI 交互进入仅包括弧形闸门,闸门支铰,启闭杆的新场景,其中自动展示是以播放动画的形式,将水闸模型全方位自动播放。人工展示通过鼠标对水闸进行操控并观察,图9是水闸模型交互效果图。
图9 水闸模型交互效果Fig.9 Sluice model interaction effect
实时状态仿真功能:实时状态仿真包括闸门启闭过程和水流展示,效果如图10 所示。当数据驱动闸门升起时,通过闸门开合角度来控制水流粒子系统发射速率,呈现闸门区域水流效果如图10(a)所示;河道水流效果以动画播放形式进行呈现,如图10(b)所示。
图10 水流动画效果图Fig.10 Animation of water flow
检测数据三维可视化功能:通过主菜单打开数据监测面板,效果如图11 所示。监测面板位于两个控制室之间,如图11(a)所示;监测面板默认显示一号闸门信息,数据信息包括:实时流速、实时水位、环境参数、闸门应力、闸门振幅、故障数量、预警数量等,如图11(b)所示。
图11 监测数据UI界面Fig.11 Monitor data UI
基于Unity3d 技术开发了一款用于水工金属结构安全检测的虚拟仿真系统,构建了三种漫游方式用于系统不同视角下的人机交互。并通过优化系统自动漫游功能实现了相机角度朝向的灵活改变,充分展示了溢洪道水工金属结构场景关键点位的变化。同时提出了一种闸门运行姿态交互控制的算法,为水工金属结构安全监测系统提供了更加丰富和便利的交互功能。
通过AMQP 协议实现了传感器采集数据与水工金属结构系统之间的交互,创建了闸门与水流耦合的动态仿真效果。并依据实时采集信息以灯光闪烁的形式进行预警判断,通过XChart 将监测数据以图表的形式进行实时可视化展示。相较于传统的二维水工金属结构安全监测系统界面而言,该系统具有较强的针对性和实用性,同时能够满足系统实时性要求,并最终成功应用于实际水工金属结构虚拟安全监测中。