1. 引言
虚拟现实技术也称灵境技术或人工环境 [1] ,是利用计算机模拟产生一个三维空间的虚拟世界,提供使用者关于视觉、听觉、触觉等感官的模拟,让使用者如同身临其境一般,可以及时、没有限制地感知三维空间内的事物。迈克尔·海姆在1994年对虚拟现实定义了七个不同的概念:模拟、交互性、人工现实、浸入式、远程呈现、完满性以及网络通信。如今,虚拟现实以其视觉上的直观性和操作上的简易性在工业和公共服务等领域得到了广泛的应用,如医学模拟、计划生育模拟研究、工业仿真、模拟导航系统、竞技体育运动的虚拟仿、急救等 [2] [3] [4] [5] 。
当前变电站综合自动化程度的不断提高,对变电站运行管理模式提出了更高层次的要求。在实际工作中,不规范操作、随意涂改操作票、甚至跳步操作屡屡存在,正因为这些侥幸的行为致使人身和设备安全的电力事故时有发生。有鉴于此,切实加强倒闸操作的规范性是电力安全生产中刻不容缓的一项重要工作。在对变电运行人员的培训手段中,当前较多地应用了图片和原理性描述,新员工缺乏对实体电站直观、形象的认识和理解;即便是在现场,由于电力行业的特殊性,也出于对生产安全和人身安全点的考虑,以及时间和场地的限制,新员工只能大致观摩变电站外观形态,而不能直观地通过动手实践进行操作培训;而专门为了培训建设模拟实际供电设施或设备的环境,不但造价极其昂贵,而且需要足够大空间才能容纳庞大的设备;教员现场的讲解过程同时也会受到场地、天气等环境因素限制,培训效率低,也难以满足培训的需要。而在众多变电站中,500 kV变电站多用为大、中型发电厂接入最高一级电压电力网的连接点,汇集各发电厂的主干线路,并连接了电力网中大量的关键点,考虑到该类型变电站在电力系统中的重要地位,对其进行仿真培训是非常必要的。
本文将虚拟现实技术应用到变电站仿真培训系统中,对变电站中各设备进行三维建模来构建虚拟变电站的运行环境。培训人员在虚拟的变电站环境下可以模拟现实变电站环境下的倒闸操作,让学员身临其境地学习和提高倒闸操作技能和事故处理能力。三维虚拟现实仿真培训系统弥补了二维仿真培训系统不真实、不直观的缺点,也避免了利用真实电气设备进行培训的高投入和危险性 [6] 。
2. 仿真系统设计
Unity3D是由Unity technologies开发的便于用户轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合游戏开发工具,是一个对编辑器、跨平台发布、地形编辑、着色器、脚本、网络、物理、版本控制等特性全面整合的专业游戏引擎 [7] 。其编辑器运行在Windows和Mac OS X下,且可发布游戏至Windows、Mac、Wii、iPhone、WebGL (需要HTML5)、Windows phone 8和Android平台,具有直观的游戏编辑功能,是一个全面整合的专业游戏引擎。Unity3D性价比高,对DirectX和OpenGL拥有高度优化的图形渲染管道;支持所有的主要文件格式,与大部分相关应用程序协同工作,并可以直接发布成网页的资源供网页浏览,使参观者具有亲临其境的独特体验 [8] 。Unity3D支持JavaScript、C#和Python三种脚本语言,这三种语言可同时混用,同时Unity3D将脚本编译成本地代码,使之运行速度与C++相当。本文采用Unity3D引擎构建500 kV变电站倒闸操作仿真系统,具有模型兼容性好、动作流畅、互动设计多样等特点。
本文通过Unity3D引擎对500 kV变电站倒闸操作仿真系统的设计包括了变电站内环境以及变电站内倒闸操作的三维展示。该仿真系统通过三维可视化技术与虚拟现实技术,并借助3dsMax等三维建模软件,再现了实际变电站的真实情况,使得该系统具有了实时可交互性及动态性。同时Unity3D以其强大的可视化编辑器和网络语言级别深受广大使用者喜爱。使用该软件开发500 kV变电站倒闸操作仿真系统将兼容各类操作系统,真正实现跨平台,且能在网页上直接运行,给用户带来更好的体验。图1是模拟500 kV变电站系统的主要开发流程。
Figure 1. Flow chart: Develop the system of simulated 500 kV substation
图1. 模拟500 kV变电站系统开发流程图
3. 软件开发
3.1. 数据采集及纹理的处理
500 kV变电站倒闸操作仿真系统的构建需要采集变电站地形及设备等物体的位置、大小、纹理、影像、属性等数据。通过量测采集500 kV变电站的空间数据,再通过3dsMax软件对变压器、高压断路器、隔离开关、避雷器等变电站设备进行三维模型绘制。在光线合适的情况下通过使用相机对变电站的环境及各设备的多个侧面等处进行纹理数据的采集,借助无人机对拍摄人员难以正常进行纹理拍摄的面进行纹理获取。对无法进行完整纹理拍摄的面通过部分纹理拍摄获取纹理并根据其相对整个纹理面的大小比例进行修图和整合。
采集完纹理数据后,通过Photoshop软件对纹理进行编辑,对不同的纹理分别进行裁剪、旋转剪切、调整大小和亮度等操作,得到所需纹理图。
3.2. 场景建模
对于场景建模,可以通过Unity3D自带的功能建模,也可以将外部制作完成的模型导入Unity3D。通过3dsMax软件建模、Photoshop处理纹理贴图完成三维模型构建后。可以直接将.max模型文件存入到Unity3D项目文件夹中,也可导出成.fbx的文件格式。Unity3D对模型、材质、贴图有着特殊的要求。模型必须使用英文命名,模型与模型之间不允许出现破面、漏面、共面和反面的情况;材质球命名需与模型名称一致,支持标准材质和多维/子物体材质,不能有浪费的材质球。贴图格式不带通道的为JPG,带通道的为32位TGA和PNG;贴图尺寸必须是2的n次方,最大贴图尺寸不超过(1024 × 1024),贴图也不能以中文名命名,不能有重名 [9] [10] 。被导入的信息包括了物体的空间位置、动画及名称材质等。导入模型之后,为了提高场景的亮度及真实感,在场景中选择添加一个方向光以模拟太阳光源,通过调节光源的方向、颜色以及是否产生阴影等选项,提高场景的效果。Unity3D软件支持实时光照效果,在添加了光源之后,系统会根据光源及投影体的相对位置关系自动计算出阴影的位置及大小,并投影到正确的受影体上。此外,还可以从“QualitySettings”调节选项来进一步调整阴影的品质及渲染阴影的距离。所搭建的场景如图2。
3.3. 交互漫游
虚拟漫游是变电站漫游系统的关键技术,交互功能是实现漫游的方式 [11] 。在Unity3D中可以通过使用W、S、A、D四个按键实现前后左右的行走功能。本系统需设计为第三人称的虚拟漫游,身体根据鼠
Figure 2. Diagram: Construction of the scene
图2. 场景搭建图
标的移动而转动,并通过W、S、A、D控制前后左右的方向。摄像机设置固定在角色身后的一定距离,无论角色如何行走、身体如何旋转,摄像机固定跟随在身后,使视觉看见的一直是角色身后跟随角色行走、移动。其实现方法是在场景中新建一个Camera和一只作为父系的Cube,对Camera添加Unity3D内部自带的mouselook和smoothfollow的脚本,并将smoothfollow的目标设定为新建的Cube,使该Camera作为系统的主视角。之后在Cube属性下新建两个用C#语言编译的脚本,一个用来使鼠标控制视角旋转,另一个实现W、S、A、D按键进行第三人称前后左右行走,并将选项Camera对应至新建的作为主视角的MainCamera。最后添加3dsMax制作的人物模型,制作状态机,使Cube成为其父系,再隐藏掉Cube的meshrender。最终实现对变电站的虚拟漫游。下面例举出的图3是通过W、S、A、D按键控制人物行走代码的流程图。
所设计的变电站系统环境如图4所示。
3.4. 碰撞检测
碰撞检测用于判定一对或多对物体在给定时间域内的同一时刻是否占有相同的区域 [12] 。碰撞检测最基本的功能是模拟现实中物体在遇到障碍物时发生的物理反应,也是在制作交互场景时需要解决的首要问题。例如在变电站中遇到虚拟设备时,人物不能继续前行,好的碰撞检测对一个漫游系统是最基本的条件。
为了进行碰撞检测,须给设备及人物添加RigidBody刚体和包围盒,再根据各对象的不同特点选择
Figure 4. Diagram: Environment of virtual substation system
图4. 虚拟变电站系统环境图
盒子碰撞器、球体碰撞器和胶囊碰撞器。而在碰撞检测中,为了使不同设备实现不同效果,利用碰撞事件监测的方法OnCollisionEnter()、OnCollisionStay()、和OnCollisionExit()在碰撞开始、持续和结束三个阶段完成不同的效果。
4. 500 kV变电站倒闸操作仿真系统的实现
4.1. 功能实现
500 kV变电站倒闸操作仿真系统的三维浏览功能有利于用户通过网络直观地获取变电站信息,变电站中的场景及各个元器件都是原物的重现,用户可通过控制虚拟场景中的人物以第三人称视角控制观察的角度及方向,具有沉浸感。该项目需要的主要硬件设备包括一架无人机、一台数码相机和一台计算机;软件包括Photoshop、Unity3D和3dsMax。500 kV变电站倒闸操作仿真系统实现了以下的功能。
1) 以相等比例缩小实体500 kV变电站,场景尽可能真实;
2) 配备背景音乐,使虚拟场景更加真实,用户更加能够沉浸在虚拟环境中;
3) 为了实现网络浏览,且保证大多数普通计算机用户能够访问,文件控制了大小不过大;
4) 能控制虚拟场景中的虚拟人物,以第三人称形式在虚拟变电站中交互漫游;
5) 变电站中具有开关等设备使用户能够进行倒闸操作;
6) 设置与学校网站链接的页面导航。
该系统采用虚拟现实技术,增加了系统的趣味性;改变了传统的图片及原理性描述,也打破了传统现场教学对时间、场地和天气等因素的限制,使用户可以更直观、方便地浏览变电站设备布局;同时相较于一般的交互漫游仿真,用户能够在虚拟环境中进行倒闸操作训练,在提高专业知识的同时积累现场运行经验,推动了变电站数字化发展,有利于员工的岗前培训。
4.2. 虚拟场景的构建
该系统的虚拟场景构件包括虚拟变电站内设备构件、环境构建以及第三人称人物构件。变压器等设备可以通过3dsMax进行结构构造,并通过无人机与单反相机获得的具体设备图片数据使模型更加生动真实;人物也可通过3dsMax进行构造,对人物模型进行骨骼的添加和动作建立,导入Unity3D制作通过W、S、A、D按键控制的第三人称人物;环境可通过Unity3D平台自带的模型来构件。
1) 获取信息
500 kV变电站倒闸操作仿真系统来源于真实的变电站环境,空间数据信息需通过真实的变电站获得。将所获信息通过软件后期处理,即可得到所需系统的虚拟场景。
2) 模型构建及交互性的实现
模型包括变电站地形、电气设备、环境及人物,地形、电气设备和人物在有了具体的数据之后均可在3dsMax中构建,天空、花草等环境均可通过Unity3D自带模型完成。变电站的场景虽不大,但仍要注意对模型的充分优化以减小文件大小,方便用户快速浏览。在交互性上,该系统通过W、S、A、D按键与鼠标分别控制虚拟人物在虚拟变电站中进行前后左右的行走以及方向的调整,通过对变压器等设备模型的碰撞检测设置,完善虚拟环境的真实性。
5. 倒闸操作
倒闸操作是通过操作隔离开关,挂、拆接地线,断路器从而将电气设备由一种状态转变为另一种状态的过程中所进行的操作。电气设备有运行、热备用、冷备用及检修四种状态,无论执行哪种倒闸操作都必须执行操作票制和工作监护制。以变压器倒闸操作为例,它包含以下几步操作步骤 [13] 。
1) 检查主变抽头电压以确认变压器变比相等。为了有效防止环流对主变造成的危害,需将主变抽头电压调至规定允许的范围;
2) 对刀闸的状态进行检查,确保断开处空气绝缘距离合格,刀片已拉到尽头;
3) 变压器停役后,将变压器中低负荷导入另一台运行的变压器,并检查开关三相电流指示为0,确认主变处于空载状态;
4) 操作过程中将断路器切至就地再检查分闸位置从而将断路器处于可控范围,一旦出现问题可及时进行手动操作;
5) 对变压器进行操作前将变压器中性点接地刀闸合闸来灭弧。在变压器充电后,按正常运行方式及时调整中性点接地方式;
6) 主变送电完成后需检查开关保护采样值正常来确保继电保护对应的二次数据正常;
7) 线路检修时,需挂接地线,即使检修项目中有接地刀闸检修,此接地刀闸为检修设备,仍需挂接地线,确保检修人员人身安全。
本系统在虚拟变电站中多处设置了断路器等设备,使用户能够执行开关的离合,实现倒闸操作的动作。如图5是变电站某处的空气断路器通过鼠标滚轴拉近视角后的状态图,当对其进行某次倒闸操作后,该空气断路器状态如图6。
倒闸操作步骤的顺序性和正确性直接影响线路及变电站设备的安全,因此,熟悉倒闸操作的步骤并理解每个步骤的含义至关重要。切实加强倒闸操作的规范性是电力安全生产中一项刻不容缓的工作。
Figure 5. Diagram: An air circuit breaker model in virtual substation
图5. 变电站某空气断路器模型图
Figure 6. Diagram: State of the air circuit breaker after switching operation
图6. 倒闸操作后该空气断路器状态图
6. 软件优化
500 kV变电站倒闸操作仿真系统因要在网页上浏览,故需要对软件进行优化,使软件尽可能小。本项目主要从场景和脚本对该系统进行了优化。如在场景上将用户看不到的面或线删除,同时对合并的物体使用同种材质,合并材质球,加快了渲染速度;在灯光上选择了顶点灯光从而让所有物体每一帧被渲染一次,从而降低对计算机的要求;在音乐上选择了.mp3的压缩格式,较短音效选择了.wav的未压缩音频格式;碰撞上减少了Mesh的面片数;在FPS方面先关闭垂直同步,再在代码的Awake方法中手动设置适量降低PFS,从而减少出现卡顿的情况,稳定系统,也减少设备发热情况;在地形上为了避免地形太大造成大量顶点数据而给内存带宽造成影响,将长宽均设置较小;在mesh的合并上,将所有自带的合并勾选静态,也可通过脚本合并mesh。
在脚本上,首先保证逻辑正确,在Unity3D中,对静态变量的支持可以提供更高的效率。之后就要对脚本进行优化处理,脚本中删除为空或不需要的默认方法,如在Assets目录创建新的脚本时,脚本里会包括一个Update方法,将其删除 [14] [15] ;OnGUI方法只在一个脚本中使用,且避免在OnGUI中对变量、方法进行更新和赋值;在运算上尽量少用模运算,且将所有除运算换算为乘法运算;在插值上选择了四元数和向量做插值,相较于矩阵,四元数做插值更快,Slerp提供了平滑插值。
7. 结语
随着互联网络信息技术的迅猛发展,软件的开发将更加贴近工作和生活。如今,虚拟现实技术在电力行业的深远应用为虚拟变电站的仿真提供了可能性。本项目建立了一个基于Unity3D的500 kV变电站倒闸操作仿真系统,该系统通过交互功能,使变电站的新员工能够在学习了倒闸操作的正确步骤后,在该系统的虚拟环境中身临其境地进行倒闸操作的培训。通过对Unity3D各种交互功能的使用,使该系统具有很强的直观性、灵活性和可操作性。同时,用仿真软件的培训代替实地实物的培训,很大程度上减少了对人力物力的使用,安全且成本低。该系统可以帮助学习倒闸操作的员工正确分析可能出现的危险点源,从操作中发现问题和疏漏,逐步从能操作到会操作最后到精确操作,减少和避免倒闸操作过程中的安全隐患。该系统的开发也说明了Unity3D是一款优秀的虚拟现实开发工具,不仅建模功能方便、真实,同时也有着强大的交互功能。
基金项目
国家自然科学基金青年项目资助(61401195)。