基于OSG与Qt的FAST三维场景仿真

2022-02-19 10:23李昌明李东年赵正旭宋立强孙才红
计算机应用与软件 2022年2期
关键词:反射面面片精度

李昌明 李东年* 赵正旭 宋立强 姜 鹏 孙才红

1(青岛理工大学机械与汽车工程学院 山东 青岛 266520) 2(中国科学院国家天文台 北京 100012)

0 引 言

2016年,500米口径球面射电望远镜(Five-hundred-meter Aperture Spherical Telescope,FAST)落成启用,FAST是由著名天文学家南仁东在1994年提出构想,中国科学院国家天文台历经22年建设,具有我国自主知识产权、世界最大单口径、最灵敏的射电望远镜[1]。FAST的反射面口径达到了500米,反射面接收面积25万平方米(相当于30个足球场),利用柔性索网支撑反射面,索网下面连接可以伸长运动的促动器,可实时根据促动器的伸缩牵引索网生成抛物面。FAST望远镜的工作频率在70 MHz到3 GHz,分辨率2.9′,指向精度可达8”,相比美国Arecibo 300 m天文望远镜,FAST创造性地使用了可变反射面设计,其4 450块反射面单元都可以在促动器的伸缩下运动,实时地生成一个抛物面进行射电信号接收,其反射面积是美国Arecibo望远镜的2.5倍,综合性能是美国Arecibo望远镜的10倍[2]。FAST基地为天文望远镜接收丰富的射电信号提供了良好的基础条件,但是FAST场景的可视化却十分困难,4 450块反射面单元,2 225个促动器等一系列零部件的工作情况无法直观地显现在工作人员面前,而虚拟现实可视化技术可以通过场景仿真解决这一问题。

虚拟可视化技术源自1962年全景仿真机的出现,其具有交互性、沉浸性、想象性的特点[3]。在虚拟场景中,通过操作器控制漫游视角,可以到达三维空间的任意坐标。同时可以通过鼠标与键盘的控制,实现对场景的交互控制,达到理想的可视化需求。近年来,虚拟现实技术广泛用于航天科技和军事场景模拟,以仿真度高、可交互性强等优点被广泛认可。三维可视化是虚拟现实技术的重要分支[4],通过计算机图形学技术创建辅助人们理解复杂场景的视觉图形,通过融合多种数据,将复杂场景的工作状态在界面显示,或者说,三维可视化本身就是一个数据整合然后进行展示与交互控制的平台。任雨柔等[5]应用虚拟可视化技术使用Unity3D引擎,对现代有轨电车进行路口场景仿真,为有轨电车司机提供一个学习平台。李忠坡[6]利用Vega Prime仿真平台模拟各种海洋场景,实现了平台供应船海上作业三维视景仿真的开发设计与效果展示。

OpenSceneGraph(OSG)图形系统使用工业标准的 OpenGL作为底层渲染API,用C++语言编写,它以性能较高、拓展性与移植性强、可跨平台等优点被广泛应用于虚拟仿真、游戏动画、三维可视化等领域[7-8]。OSG凭借其优良特性尤其适合可视化仿真系统的开发,并且OSG具有跨平台性,可以在Windows、Linux等系统下运行。OSG作为一款图形渲染机制较为完备的图形渲染引擎,其涵盖了许多优秀的功能特性,图形的显示表现为一系列帧的渲染,渲染过程包含场景更新、拣选和绘制、每一次渲染这三个过程都会被执行。文戈[9]利用OSG与Qt开发了用于沟道土地整治的可视化技术,为沟道流域区域的整治规划提供辅助性的决策支持。倪梓轩等[10]借助Eclipse为中介将OSG引擎移植到Android Studio 2.2.3平台中,为 OSG 在移动平台的整体移植提供了实践参考。刘楚斌等[11]利用OSG对火箭飞行进行仿真,为火箭跟踪仿真训练系统的研制提供技术支撑。郭靖[12]采用OSG渲染引擎对航天器发射、卫星在轨飞行和卫星变轨运动场景进行可视化,对空间飞行器运行状况监测、新航天器发射任务完成有着重要意义。

Qt是一个面向对象的C++类库,其具有面向对象编程语言的所有优点,因其友好的用户界面与快速的交互相应,自问世以被许多程序人员广泛使用,并且Qt提供了许多标准应用程序编程接口(Application programming interface,API)来兼容第三方库[13]。随着Qt的发展与OSG在各行业的广泛应用,OSG强大的图形渲染能力和Qt提供的人机交互平台为解决各种复杂场景可视化问题和开发三维可视化平台提供了一个新的思路[14]。

本文采用开源跨平台三维仿真引擎OSG进行模型加载和视景仿真程序的开发,采用开源跨平台图形界面库Qt进行软件程序界面的开发,基于osgQt库在Qt Application项目中实现了osgviewer视口和Qt主窗口的整合,开发了FAST大场景漫游系统,如图1所示。

图1 FAST可视化效果图

1 系统简介

FAST作为最大单口径射电望远镜,其反射面用于汇聚射电信号,FAST的反射面由4 450个反射面单元组成,每块反射面单元安装在索网制定位置,索网包括6 670根主索、2 225个主索节点和2 225根下拉索。下拉索的一端位于索网索节点下方,另一端连接促动器,促动器通过伸缩来改变索节点的位置从而改变反射面的形状,形成反射抛物面,并使反射抛物面对准天体目标,然后再通过卷扬机控制六根钢索的收放,以拖动30吨的馈源舱到达抛物面焦点位置,FAST馈源舱将射电信号进行聚焦,研究人员对聚焦的射电信号进行分析,完成对天体目标的探测[15]。图2所示为FAST索网结构图。

图2 FAST索网结构图

本文利用OSG与Qt对FAST场景可视化系统进行开发,通过OSG图形对FAST三维场景进行显示的同时,利用Qt的信号槽机制来对OSG进行交互控制,实现了可视化的交互性与沉浸性。FAST可视化系统提供一种更加直观、快速的动态监测方案,为FAST基地的观测工作提供辅助性的决策支持。

2 场景模型

2.1 三维建模

FAST基地场景内的模型包括地形、圈梁、反射面、索网及下拉索、馈源支撑塔等,对照图纸利用建模软件(如Solidworks、Proe、犀牛等)进行三维建模,然后转化成指定格式,导入3D max赋予模型材质并按照图纸完成布局。对于有运动需求的零部件(比如促动器),在三维建模软件中建模完成后导入multigen creator添加dof运动节点,在osg程序中采用finddofnode程序可对dof节点进行搜索并进行运动控制。在馈源仓与反射面节点之上分别增加一个transform节点,在OSG中通过osg::Transform节点类来实现模型的位置变换。

2.2 促动器模型的自动化布局

本文根据坐标数据在可视化场景下对大量重复性的模型进行自动化布局,采用OSG的MatrixTransform进行位置变换,将指定的模型通过平移旋转安装在指定位置。osg::MatrixTransform是一个变换节点,它会将其所有子节点进行坐标变换,变换的依据就是它自身的数据成员Matrix,比如当进行旋转变换时用osg::Matrix::rotate(osg::inDegrees(n),0.0f, 0.0f, 1.0f) 通过构造一个旋转变换矩阵可以实现目标模型围绕Z轴进行n度旋转。osg::Matrix::rotate是Matrix类的静态函数,在osg::Matrix::rotate(osg::InDegrees(n), 0.0f, 0.0f, 1.0f) 中一共有4个参数,第一个参数是角度,后三个参数是旋转的向量坐标值。当进行平移操作时,通过osg::Matrix::translate即可实现沿任意轴的位移变换。

2 225个促动器需要在三维空间中安装在指定的位置,如果按照人工方式进行手动布局,须在3D max安装好每一个促动器,工作量极大,且人工安装的精度也很难满足精准的位置要求。在FAST可视化系统开发过程中,促动器的安装采用程序化自动布局,首先在三维软件中绘制促动器模型,然后导入Multigen creator为促动器添加dof节点。根据索网的主索节点与下拉索的节点三维坐标,建立本地txt文本,在程序中通过for循环加载促动器模型并读取本地txt文本的2 225组三维坐标。将下拉索起始坐标和终点坐标两个坐标点做差即可求得两点之间的空间向量,利用MatrixTransform的旋转变换矩阵对空间向量进行旋转从而使促动器轴向与下拉索同向,然后利用MatrixTransform平移变换矩阵将促动器模型的原点平移到对应的下拉索的终点坐标,一个促动器即可安装完毕。循环2 225次后,将每一个促动器按指定的位置安装完毕,在安装同时为每一个促动器进行编号,2 225个促动器各自对应自己的ID,便于以后的监视管理与操作。图3为安装促动器的For循环流程图,图4为通过此方法安装促动器的效果图。采用自动化安装布局,仅需要建造一个促动器模型,通过程序读入该模型,循环将其安装在对应的位置即可,该方法适合三维可视化场景中大量的重复性的模型的布局。

图3 安装促动器For循环流程图

图4 促动器安装效果图

3 促动器运动情况模拟

每一个小反射面单元边长为1米左右,100个小反射面单元组成一个大的面板子单元,反射面下面索网的索节点连接一个可以伸缩运动的促动器,促动器通过伸缩运动牵引索网,使反射面生成一个用于汇聚射电信号的抛物面。

FAST的反射面随着探测目标的改变而发生改变,系统通过控制每一个促动器的拉伸量,从而改变反射抛物面的形状。本文系统中促动器的伸长数据实时写入服务器A的Redis数据库,客户端B通过服务器A的IP访问其数据库,通过get key value命令从数据库调取其所需数据,每一个促动器根据其ID连接对应数据。通过采用OSG的更新回调,使促动器的伸长量动态变化。由于Redis的数据是存在内存中的,所以存写速度非常快,可以避免数据存写而引起的可视化延时显示[16]。在仿真系统中FAST工作流程如图5所示。

图5 仿真系统中促动器工作流程

4 粒子特效进行场景天气模拟

三维场景可视化最基本同时也最重要的就是保证场景的真实感与逼真性,在真实的场景中,会存在不同天气的交迭,在虚拟场景中为了增加真实性,也需要不同的天气效果。在OSG的雨雪天气可以通过粒子特效进行实现,通过osgParticle库生成粒子系统节点,用于模拟各种天气或则自然现象效果[17],通过Qt的菜单按钮来切换不同的天气效果。在程序中可以通过控制粒子的颜色与透明度来改变雨雪天气,同时可以通过风速来控制雨雪的漂移。图6为FAST三维场景雪天效果图。

图6 雪天场景效果图

5 实 验

5.1 促动器安装布局实验验证

本文仿真系统在Windows 10操作系统下利用VS2013编译器,使用版本号为3.4的OSG与版本号为5.5的Qt进行系统开发。电脑处理器为Intel core i3-6100,内存为4 GB,显卡为Nvidia GeForce GT720。在实验前将所渲染好的模型及坐标点放入程序的子目录下,生成程序并进行调试。本文系统需要根据坐标点对2 225个促动器进行自动布局,实验发现促动器模型的面片精度和材质对系统的运行效率产生很大影响。为更好地验证材质渲染及面片精度对可视场景运行效率的影响,分别导出两种不同精度的促动器模型分别对其分别进行材质与RGB颜色渲染后,之后依次导入程序进行调试,记录运行数据。其中一号促动器模型(如图7(a)所示)为根据图纸一比一绘制并导出的高精度三维模型,附加真实材质;二号促动器(如图7(b)所示)为根据图纸一比一绘制的并导出的高精度三维模型,未附加真实材质,采用RGB颜色渲染;三号促动器(如图7(c)所示)为降低面片精度的三维模型,附加真实材质;四号促动器(如图7(d)所示)为降低面片精度三维模型,未附加真实材质,采用RGB颜色渲染。

图7 四种促动器模型

表1所示为各促动器模型在可视化场景中的运行数据,可以看出,在可视化场景中,2 225个促动器的渲染需要消耗大量的运算量,当系统采用一号促动器模型时,帧率降低到5.64 FPS,同时占用内存达到92%,每一帧的拣选过程耗费时间高达101.28 ms,绘制过程耗费时间30.21 ms,运行情况极为不流畅。当系统采用二号促动器模型,帧率与占用内存情况并没有明显改善。当系统采用三号促动器模型时,帧率明显提升为46.35 FPS,占用内存降低为81%,每一帧的场景更新耗费时间0.01 ms,拣选耗费时间10.08 ms,绘制耗费时间9.02 ms,相比一号促动器模型及二号促动器模型,运行情况已经有了明显的改善。当系统采用四号促动器模型时,相比三号促动器帧率并没有明显提升,但是在每一帧的拣选与绘制时间降低到1.68 ms与3.98 ms,虽然在每一帧拣选与绘制的时间有所降低,但是影响可视化流畅度最大的因素是帧率,同时附加真实材质的促动器逼真度要远远好于RGB渲染的促动器。三号促动器为通过Solidworks导出的降低面片精度的三维模型,相比面片精度精细的三维模型其尺寸公差与角度公差更大,虽然面片精度略有降低,但是促动器的绘制精度为毫米级,在一定程度上降低面片精度后的模型在一定的视场范围内仍具有较好的演示效果,同时通过对比发现三号促动器的可视化效果较为理想,故本文系统选用三号促动器为演示模型。

表1 可视化场景中加载促动器的运行数据

5.2 促动器运动模拟实验验证

在服务器A上运行Redis数据库服务器,当显示数据库已经运行并可以接受端口的连接后,利用set key value命令将促动器的数据写入到Redis数据库中,每一个键值对对应一个促动器拉伸数据。在客户端B上运行可视化程序,在程序中通过服务器A的IP访问其Redis数据库,利用get key value命令获取相应数据来确定促动器拉伸量,促动器的dof节点根据获取的数据,利用更新回调实现促动器的动态运动。促动器的初始状态如图8(a)所示,当点击促动器的动态演示,查看促动器的演示效果,如图8(b)所示,促动器已经根据Redis数据库伸长了指定数据的位移量。

图8 促动器初始状态与拉伸效果

6 结 语

本文通过OSG与Qt的结合,对FAST三维可视化系统进行了开发,将FAST三维场景实时显示在可视界面。该系统通过对促动器模型进行自动化布局,在提高安装布局精度的基础上又节省了劳动力,同时使用Redis数据库驱动促动器进行伸缩运动,为场景的监视工作提供了良好的条件。但是,真实的场景存在无法预测的故障却不能实时显示在可视界面中,未来工作将通过对各种情况的预测与OSG程序接口的编写来完善此不足。

猜你喜欢
反射面面片精度
基于不同快速星历的GAMIT解算精度分析
数字化无模铸造五轴精密成形机精度检验项目分析与研究
基于智能反射面的空地无源干扰技术*
乘用车外后视镜设计开发要求
一种动中通环焦反射面天线
基于MATLAB的STL模型切片分层算法
近似边界精度信息熵的属性约简
河沿面片
河沿面片
甜面片里的人生