APP下载

基于OpenGL 技术的煤场3D 动态展示

2020-03-05张兰庆杨柏依

山东电力技术 2020年1期
关键词:链表料场煤场

张兰庆,柯 波,杨柏依,董 鹏,夏 阳

(1.华能莱芜发电有限公司,山东 济南 271102;2.北京能为科技股份有限公司,北京 100071)

0 引言

对于煤炭料场行业来说,大型散料场需要智能化无人运行,实现数据可视化是必须实现的功能。数据可视化可根据数据的特征、性质等属性,通过图形图像等合适的方式,将数据直观地、有概念性地展示出来,帮助大家更好地、更清晰地理解数据,掌握数据中的有用信息。使用基于OpenGL 技术实现了煤场的3D 展示与煤场的数字化展示。通过激光扫描仪将煤场进行扫描形成点云数据,然后建立三维模型,再使用OpenGL 技术与Unity3D 技术实现三维可视。由于点云数据量巨大,提出优化建模方式极大提高了建模的效率,并且优化了三维展示效果。

1 煤场三维数据

1.1 激光扫描仪料场扫描

三维扫描是三维成像过程中最重要的一步。堆料臂前端安装一台高精度激光扫描仪,取料臂前端两侧分别安装一台高精度激光扫描仪,可以实现堆料取料时对当前工作料堆的实时清晰扇形扫描。煤堆的点云数据就是通过安装在堆取料机[1]上的激光扫描设备扫描采集的,采集后的数据通过以太网通信录入后台数据库。主要硬件为SICK LD-LRS3611型号的激光扫描仪,安装位置与扫描原理如图1所示。

图1 激光扫描仪扫描煤场过程

1.2 料场扫描原理

扫描仪发射几束激光进行扫描,射线碰撞的地方会写入数据,然后通过扫描仪在空间的移动和旋转扫描整个料场的轮廓。激光扫描仪扫描完料堆轮廓后,需要快速、准确地采集和整理工作料堆的扫描数据。激光扫描仪通过以太网将收集到的堆数据发送到集中控制服务器。激光扫描仪扫描出点工作原理如图2 所示。

图2 激光扫描仪扫描出点

2 模型建立与优化

2.1 建模算法

先定义三维点结构,以点结构为基础,由每3 个点构造一个三角面片结构,然后再定义一个三角面片链表结构用于存储一系列的三角面片,并在此链表中存储三角面片的公共属性,如颜色、透明度等,这样一个有数据的三角面片链表结构就表示了一个三维模型,链表中存储的三角面片公共属性也就是模型的属性。三维模型构建过程为:三维点→三角面片→三维模型[2],如图3 所示。

图3 三维模型构建过程

图4 所示流程仅为为几个点面的程序流程,获取到以A 点为基础,以X 轴与Z 轴方向最大扩展距离的三维点链表。三维煤场的点面数据上千个,大规模的点云数据在处理时会涉及多重循环,会导致频繁迭代处理,严重影响服务器的性能。再者,由于激光扫描测量收集的数据密度特别高,并且这些点由于堆取料机的抖动和距离变化而分布不规则,并且所有这些离散点都被用于构建三维模型,进一步增加了系统的复杂性,这将占用更多的计算资源,并且不利于后续的实时计算处理。为此,引入了模型优化算法。

图4 煤场点云数据点处理流程

2.2 模型优化

首先是对内存优化[3]。设置OpenGL 系统上的专属内存区域,将局部内存区域映射到全局内存的区段,这个内存区域是一个工作项私有的区域。工作项私有内存中定义的变量对其他工作项不可见。工作项在处理单元上运行,有其自己的私有内存。工作项在一个计算单元上运行,与该组中的工作项共享一个局部内存区域。由此来减少对计算机硬件性能的消耗。

其次是通过高斯滤波算法对煤堆显示效果进行优化,实现三维图像处理与成像软件的自动纠错、降噪处理功能,对明显的噪声数据、错误数据能够自动过滤,形成直观、平滑、完整的模型数据,进而生成更加美观与直观的模型效果。

再次,通过高斯滤波对图像进行平滑以消除噪声,然后计算二阶导数,并通过二阶导数的过零来确定边缘。在计算中,将复杂的卷积转换为乘积运算,降低运算量和计算复杂度。

3 模型动态显示

通过对数据点云的采集到对数据建模处理以及优化效果所得到模型进行实时渲染,共有两种渲染方式。

3.1 OpenGL 渲染

首先,对点云数据中的点线面顺序值的节点和点线面状态属性的节点分别进行树形结构的建立。

然后,两个树形结构建立完成后,首先对节点树形结构的叶子节点进行排序工作,由根节点开始遍历,依次渲染实体节点;然后再根据状态树的树形结构,应用该渲染叶子节点对应的OpenGL 状态属性,达到某种OpenGL 状态之后,进行渲染叶子节点网格数据的提交渲染[4]。

图5 OpenGL 渲染树结构

3.2 Unity3D 渲染

Unity3D 渲染模型是直接导入渲染,但在使用的过程中不能实时渲染,因此导入渲染是不可行的。于是使用了动态加载,使用能动态生成U3D 支持的渲染模式,并设计了动态绘制Mesh 函数,通过读取与解析已生成点源模型信息的方式获取模型信息,动态为Mesh 的点线面赋值。实时生成可视化3 维模型的效果[5],实现技术流程如图6 所示,某电厂的实时效果如图7 所示。

图6 Unity3D 渲染流程

图7 Unity3D 渲染效果

4 结语

系统已经在某电厂进行了实施,并获得了不错的成效。实现了煤场的三维展示,并且实现了动态刷新数据,煤场的分区数据可在三维展示图上进行展示,在堆取料机无人值守过程中将数据直观地展示出来,帮助大家更好地清晰理解煤场现有存量数据,并掌握煤场数据中的有用信息。

猜你喜欢

链表料场煤场
垣曲抽水蓄能电站碱性骨料料源比选的研究
一种新型封闭料场输出系统工艺布置特点及应用
林西矿业煤场网壳抗推支座设计与受力分析
露天煤场防汛应急管理与环保管控
扎实推进整治“黑料场”整改行动
如何用链表实现一元多项式相加
跟麦咭学编程
基于MTF规则的非阻塞自组织链表
C语言中指针链表的学习探讨
浅谈煤场喷淋系统的改造