网站首页 关于华电能创 电网大数据治理 电网运维 SaaS云服务平台 产品介绍及方案 电力工程总承包 新闻中心 党建工作 联系我们
×

联系方式

电话:0512-52969973

1

3D场景显示技术在智能变电站辅助系统中的应用

2022/4/13 7:20:28        331

信息化是建设坚强电网的基础,智能电网建设将为电网信息化的发展带来变革。随着新兴技术的不断融入,智能电网信息化建设过程中智能化、自动化、互动性等需求的增加,智能化变电站的建设也在不断深入。

变电站智能辅助系统是变电站站端系统,包含视频监控子系统和环境监控子系统,实现对变电站视频资源及环境数据的采集和显示,并实现两个系统的联动应用功能,为电网生产运行提供有力的辅助手段。

随着智能变电站规模不断扩大,信息技术综合应用的深入,智能变电站站端辅助系统的建成成为生产运行及安防应急提供了重要手段。目前变电站站端辅助系统只能显示二维信息,为了使视频中的场景以及物体具有立体感,更直观、逼真、有效地再现现实场景,给人以身临其境的感受,在智能变电站中引进3D场景显示技术对智能变电站辅助系统进行展示。本文将对智能变电站辅助系统实现3D场景显示的关键技术进行探讨。

3D场景显示技术的现状及在电力中的需求

目前国内变电站中智能辅助系统的呈现主要以视频资源列表、动环数据图表、一次接线图、设备照片和现场录像等常规多媒体方式作为表现手段。

传统显示是基于二维平面,单纯的二维场景显示技术,不能真实的体现出智能变电站内场景的多方向变化,并且无法准确展现变电站现场环境温湿度、风速、水浸等环境量,无法较为真实的感知现场的实际场景及各类数据信息。因此,需要更为清晰,更具立体效果、功能更加强大的场景显示技术以适应日趋复杂的电网现代化、智能化建设的需求。

目前3D场景显示技术日益成熟,并广泛应用于影视娱乐、医学以及军事等各个领域,并发挥着举足轻重的作用。在智能电网领域,3D场景显示技术应用还不普遍, 此技术应用于智能变电站辅助系统中,将弥补了变电站辅助系统无法将站端视频资源与变电站环境信息更准确、直观地进行有机结合后呈现出来的缺陷。

将环境温湿度及风度、风向等环境量通过3D显示技术融入到视频显示中,达到仿真、立体的效果,给人以身临其境的感受。能较为真实地反应出现场的设备周边环境状况和设备的运行状况。管理人员通过实时对温度、湿度、风向等环境信息进行采集、处理和上传,生成曲线和报表,并与视频资源进行联动整合,方便实时监控、历史查询、统计分析,更为全面地掌握变电站的运行状况。

该技术的应用优化电力部门工作的传统模式,由事后处理向事前预测转化,使管理人员有充分的时间和精力去综合、分析、解决系统运行维护过程中出现的问题,从而提高其管理工作质量。

3D场景显示开发环境的比较及选择

在计算机领域有多种成熟的三维图形显示技术可以选择。常用的3D开发软件主要有Unity3D,HTML5等。Unity3D能轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台综合型游戏开发工具,是一个全面整合的专业游戏引擎,具有优越的效果和很高的扩展空间;在网络方面,Unity3D提供了很强大的可视化编辑器和语言层面的网络类,支持重载和命名空间。

HTML5是基于SVG、Canvas、WebGL和CSS3的3D功能的开发工具,在浏览器中能达到惊人的3D显示效果,HTML5在支持跨平台进行使用的同时,还提供数据与应用接入开放接口,使外部应用程序可以直接与浏览器内部数据直接相连,例如视频影音。

Unity3D相对于其他开发环境,其优势在于:可以轻松的创建三维视频,并且可以使用AssetBundle动态载入外部模型,或者使用3ds Max正常制作三维模型,导入生成FBX文件,载入Unity3D中构建,最后进行交互操作。

尽管HTML5也可是创作模拟出三维场景,但HTML5存在漏洞,产生的数据垃圾会对用户进行轰炸,甚至会在短时间将硬盘塞满。综合各方面因素,选用Unity3D进行三维场景的模拟在技术层而言相对稳定,并且易于操作。此外,Unity3D对于同一项目,在不需要修改的前提下,可以通过菜单发布到各种平台,市场空间很大。

实现的关键技术

1 三维模型建立

首先是进行数据采集,包括地理信息、建筑物纹理等,在变电站中根据现实需求设置多个传感器,通过传感器获取设备或周边环境情况的信息。

对信息进行采集,包括录像、信息、建筑物纹理等。在变电站中不同的位置设置摄像机,对实时情况进行录像,通过3ds MAX根据采集的信息进行三维模型建立。在三维模型空间中,设置一个摄像机的点,通过设置摄像机的角度,依据现场摄像机所提供的实际的参数转换为三维界面中摄像机的模拟参数,形成逼真、生动的现场效果模拟3D图像。

设想有一个任意方向、任意位置的物体,我们要把它渲染到任意方向、任意位置的摄像机中。为了做到这一点,必须将物体的所有顶点从物体坐标系变 换到世界坐标系,接着再从世界坐标系变换到摄像机坐标系。其中的数学变换总结如下:

矩阵乘法满足结合律,所以我们能用一个矩阵直接从物体坐标系变换到摄像机坐标系:

这样就能在渲染的循环外先将所有矩阵组合起来,使循环内作矩阵乘法的时候只需要和一个矩阵相乘即可(物体有很多顶点,省一次矩阵乘法就会提高不少效 率)

通过摄像机和传感器完成对信息的采集之后,存储到相应的数据库中,利用三维制作软件3ds MAX根据已经采集的信息进行三维模型的建立。

下面将比较动态贴图技术和使用Unity3D软件进行3D场景显示的两种方式。

2 动态贴图技术

动态贴图技术利用在三维模型的不同面以动态贴图的方式,从不同角度看到的视频角度不同,在视觉上初步实现3D视频显示。

未经过动态贴图的三维模型为灰色,通过摄像机获取监控视频的画面,将视频画面截取为一帧一帧的图片,利用已经截取的图片对已经建立的三维模型动态贴图。通过在模型不同的面,间隔时间段的进行贴图。

通过视频播放控件与GUI界面中的视频窗口叠加,视频截图不间断的替换出现,从而实现对视频的播放。

但是,通过在三维模型上动态贴图的方式实现3D视频显示的同时也存在一些缺陷。由于三维模型的分辨率较低,将分辨率高于三维模型的视频截图动态贴入三维模型时,视频截图的分辨率也会随之降低。背离了3D视频显示清晰、真实的技术要求。

3 Unity3D软件实现3D场景显示

对建立的变电站的三维模型进行透视投影原理进行模型渲染,发布至Web,通过视频播放插件与GUI界面预设视频窗口叠加,实现3D场景显示。

3.1 模型建立

各个点的摄像机获取的场景和设备纹理以及传感器获得的各种信息,通过程控放大器、A/D数模转换以及逻辑控制,传送到服务器的数据库中。

利用三维软件3ds MAX,根据计算机存放的数据库中采集的变电站现场的信息进行模型的建立,将建立的模型进行场景的拼接,模拟出变电站现实场景相对应虚拟现实的初步三维模型。利用Unity3D可以导入外部模型的特性,将已经建立的虚拟现实的初步三维模型导入Unity3D中进行模型的透视投影和渲染等。

3.2 透视投影的实现

对于透视投影的标准模型,视平面的坐标模型如图 3 所示,它的坐标原点位于视平面的中心, x 轴正向水平向右, y 轴正向垂直向上。要把透视投影的结果在计算机屏幕上显示的话,需要对透视图进行坐标变换,将其从视平面坐标系转换到屏幕坐标系。

计算机屏幕的坐标模型如图4所示,它的原点(0,0)位于屏幕的左上角, y 轴正向垂直向下。设视平面的宽度为 Wp ,高度为 Hp ;屏幕的宽度为 Ws ,高度为 Hs 。

令视平面坐标系中的点( xp, yp )对应于屏幕坐标系中的点( xs, ys ),它们的变换关系如下:xs = a*xp + b; ys = c*yp + d

由图 2 和图 3 可知,视平面中的( 0, 0 )点对应于屏幕坐标系中的中心点( 0.5*Ws-0.5, 0.5*Hs-0.5 );由于屏幕坐标系是离散坐标系,所有屏幕右下点的坐标为( Ws-1, Hs-1 ),而不是( Ws, Hs ));另外,视平面的( -0.5*Wp, -0.5*Hp )对应于屏幕的( 0, 0 )点。

将上述两种取值代入变换方程可以得出:

3.3 载入3D模型

在3ds MAX中,已经根据现场所采集的信息,包括设备、建筑等按照视频需求比例进行了三维模型建立;使用Matt Fairfax实现的Model_3DS类支持3DS模型文件的载入。并对已经导入的变电站的三维模型进行视图变换、透视变换和屏幕变换。

3.4 视图变换

为表示透视投影的模型,实现了KCamera类,除保存视点的位置和姿态,还保存视图变换矩阵m_kmView,随着视点位置和姿态的变化,视图矩阵也不断更新。对于世界坐标系中的任何一点v(x, y, z),通过v = m_kmView*v将其变换到透视投影的标准模型坐标系,通过KCamera::Transform函数实现。

3.5 透视变换

经过视图变换之后,利用KFrustum类用来对透视投影的模型进行建模,其成员包括视平面的尺寸大小,以及近截面和远截面的z轴坐标。KFrustum通过Project函数将视图变换的结果变换为透视坐标。代码实现如下:

void KFrustum::Project(KVector3& v)

{

// xp = x*n/z, yp = y*n/z, zp = n.

float fFactor = GetNear()/v.z;

v.x *= fFactor;

v.y *= fFactor;

v.z = GetNear();

}

3.6 屏幕变换

实现视图变换和投影变换之后,需要将其转换为适合屏幕大小的模型,继而需要进行屏幕变换;屏幕变换的算法通过宏实现,代码如下:

#define ToScreen(v, Ws, Hs) /

{/

float x = (v.x/GetWidth()+0.5f)*(Ws-1);/

float y = (v.y/GetHeight()+0.5f)*(Hs-1);/

v.x = KMath::Round(x);/

v.y = KMath::Round(y);/

}

3.7 三维模型的渲染

将已经导入经过投影变换的变电站的电力系统以及变电站周边环境的三维模型进行渲染,渲染使用软件来实现,没有使用任何第三方图形库,主代码在KCamera::Render函数中,它接收两次参数:Model_3DS和KSurface,对Model_3DS中的顶点进行透视投影。渲染代码如下:

using UnityEngine;

using System.Collections;

public class CameraFacingBillboard : MonoBehaviour

{

public Camera cameraToLookAt;

void Start()

{

cameraToLookAt = Camera.main;

}

void Update()

{

Vector3 v = cameraToLookAt.transform.position - transform.position;

v.x = v.z = 0.0f;

transform.LookAt(cameraToLookAt.transform.position - v);

}

}

3.8 视频叠加重合

三维模型渲染结束之后,将其发布至Web上,在GUI客户端界面的设计过程中,预留的配置了Web浏览器的视频播放窗口,将Unity3D虚拟视频与预先定义的视频窗口进行叠加重合,实现3D视频的播放功能,从而达到理想中的3D场景显示的效果。

4 试点应用

上述两种方式均能实现3D视频的显示,但通过实际模型对比得出第二种方式实现3D场景显示的效果优于第一种方式。因此采用第二种方式在220kV武侯变电站上试点建设一套3D显示系统来展现变电站场景及站端辅助系统。

用户可以通过客户端访问系统,客户端所采用的通信协议,具有很强的开放性和兼容性,完全能融合在电力系统现有网络中。通过标准的客户端,相关负责人和管理人员可根据不同的权限对系统进行配置及监控,操作界面全部为中文可视化界面,使用非常方便。

此系统将获取的真实站端动环数据,如环境温湿度、风度、风向等环境量以及门禁,集成到3D场景显示系统中。在此3D显示界面上,管理人员可以根据3D虚拟现实视频中得到的实时数据的模拟数据,判断设备周边环境和设备运行情况。

图7所示为设备运行情况,根据3D虚拟现实视频中的实时数据,立体、形象、真实地反映了变电站各个设备的细节和特征以及运行情况,让管理人员和技术人员可以更直观地了解设备的运行情况。

试点表明利用透视原理,使用Unity3D软件可以很好的展现生成变电站3D场景,并能把辅助系统的相关数据都融合到这个界面上,对变电站的全景数据进行有效的展示。

热门动态
相关文章
  • 没有资料
联系我们
江苏华电能创科技有限公司
联系方式
  电话:0512-52969973
公司地址
  常熟市东南街道银河路183号5幢02
在线留言