(1.广东航宇卫星科技有限公司;2.中国空间技术研究院总体设计部)
摘要:航天器三维可视化仿真软件是航天任务执行过程中一个重要的辅助工具,如何让软件便捷、有效的为科技工作人员提供服务至关重要。本文基于开源Cesium平台,设计一套可动态配置的三维模型机构编排工具,解决不同型号任务不同航天器模型机构运动多次重复编排的问题,为航天工作人员提供更好的软件服务平台。
关键词:航天器 gltf模型 Cesium 机构编排
引言
在航天活动中,对航天器的飞行状态进行模拟和计算是非常关键的步骤[1]。利用三维可视化仿真技术,在进行飞行仿真的同时,可以直观地看到航天器飞行的轨迹和姿态变化以及与航天器任务有关的其它状态信息,这有助于工作人员形象地理解航天器的运动规律和方式,辅助他们深入分析任务的可行性。在这个可视化过程中,航天器会根据接收的不同指令进行机构运动,比如变轨点火、太阳翼展开等等机构动作。
传统的三维可视化软件将这些机构动作在软件中进行定制化开发,可以满足当前任务型号的需求,但是如果换成另外一个型号任务,另外一个三维模型,则需要进行软件代码层面的更改,不利于扩展和维护。本文基于开源Cesium平台,设计一套可动态配置的三维模型机构编排工具,解决不同型号任务不同航天器模型机构运动的问题,为航天工作人员提供更好的软件服务平台。
1、Cesium
Cesium一款开源的基于JS的3D地图框架,用于在没有插件的Web浏览器中创建3D地球仪和2D地图。 它使用WebGL进行硬件加速的图形,并且是跨平台、跨浏览器和调整动态数据可视化。其实他就是一个地图可视化框架,与Leaft-let以及OpenLayer等没有本质的区别,只是Cesium支持三维场景,做的更漂亮。
2、glTF
glTF(GL Transmission Format)是由 Microsoft 与 Khronos 3D 公司共同推出的三维模型文件格式,致力于成为 3D界的 JPEG 这种通用格式。glTF 提供一种与供应商和运行时无关的格式,基本架构大致可以分为三个部分,其中作为核心的 glTF 模块位于最上层,是一个易于解析的 Json文件,该文件描述了 3D 场景的结构和组成,其中包含模型的节点层次、材质、相机、网格、着色器、动画等相关逻辑结构,应用程序通过读取这些信息对模型的环境和场景参数进行设置;bin 模块包含了模型的几何数据、动画数据以及其他基于缓冲区的数据二进制文件。二进制数据的存储方式可以将其直接加载到 GL 缓冲区中,而无需进行其他解析或其他操作;png、jpg 模块是一些图像文件描述了模型的纹理图。
3、机构运动编排设计
机构运动即模型的动作编排,如打开太阳帆板、火箭点火等等操作。本次研究以cesium平台支持的gltf模型为研究对象,充分考虑模型动作的所有情况,将机构运动定义为三类:动画、参数和状态。动画包括太阳翼展开、推进器分离等等操作;参数则指定航天器变换到某个值,比如太阳帆板展开45度;状态则主要是开和关操作,比如航天器模型开火和关火的操作,显示与隐藏等操作。
动画的编排对于模型来讲就是某个节点按照指定的时间沿着X、Y、Z三个方向进行平移、旋转、缩放三个方面的运动,这三种变换操作可以独立进行,也可以同时进行,效果进行叠加。比如火箭推进器分离,我们首先设置平移参数,将模型四个推进器的节点从0s到60s分别沿着 Y、Z两个方向进行平移一个数值,达到一个分离动画的效果;同时设置其旋转参数,使其在平移的同时也进行旋转;最后设置缩放参数,在60s到80s之间设置缩放的值,达到推进器逐渐消失的动画效果。通过该动画编排操作,实现了推进器分离的整个过程,该过程也可以根据需要动态设置。参数设置是指给模型的某个节点设置一个数值,模型节点将动作自动调整到该数值下面,比如太阳帆板展开45度,我们在动作编排工具中设置变换效果,当实际三维应用场景接收到参数遥测信号后,模型的太阳帆板节点会调用已预制的编排,调整到45度。状态的设计比较简单,动作编排工具选择节点,预制开和关两个选项,实现效果。
4、机构运动Json规范设计
模型机构动作编排的目的是需要与最终的可视化场景进行关联,为此本次研究设计了统一的Json规范,便于配置和场景的关联。整个动作编排Json规范分为四大节点。首先是modelId,即模型的唯一标识。其次依次是动作编排的三类,动画compositions、参数arguments以及状态fires节点。结构如下所示:
{
"modelId": "change5Rocket",
"compositions": [ ],
"arguments": [ ],
"fires": [ ]
}
1)动画编排Json
对于动画compositions又分为多个子类动画composition,子类动画中定义了具体的描述标签description、状态标签status、时间标签time、平移标签translation、旋转标签rotation、缩放标签scale等,用来完整描述编排整个动画动作。结构如下所示:
2)参数编排Json
参数设置包含节点的名称标签nodeName、描述标签description、初始数据的旋转平移缩放状态标签initData以及目标数据的旋转平移缩放站位状态标签transformFunc,场景会自动匹配编排的参数节点,传入实时接收到的数据,进行实时更新状态,同时考虑到初始位置及姿态的偏差可能,添加了初始数据时当前节点的默认变换状态,可以通过此配置进行校正小关数据的,结构如下所示:
3)状态编排Json
状态的设置包括节点名称标签nodeName、节点的状态标签status、描述标签description等,默认节点状态为false,表示是关闭状态,实际可视化场景中会根据传来的遥测参数的状态来进行实时更新,从而达到模型的实际效果,比如开关火焰等。具体配置入下:
"fires": [{
"CZ5_fire_A1": {
"nodeName":"CZ5_fire_A1",
"status": false,
"description": "火焰1"
}
}]
5、动作编排结果应用
基于统一的动作编排Json规范设计,将动画、参数、状态Json数据按不同的配置需求解析为标准的数据类型。在场景中调用时,可以进行任意组合使用,使其更加灵活。利用已封装完成的Cesium API库,即可方便的对模型进行驱动,达到动态可配的理想效果。下图为动作编排的设计界面:
6、结论
本文基于开源Cesium平台,设计一套可动态配置的gltf格式的三维模型机构编排工具,可以很好的解决不同型号任务不同航天器模型机构运动多次重复编排的问题,为航天工作人员提供更好的软件服务平台。
参考文献
[1] 张汉清.基于OpenGL的月球探测器可视化仿真,西北工业大学,2007.
[2] 吕婧,金浩然,谭军,王鹏.glTF 在 BIM 模型轻量化中的应用,应用科技,2020(6),174-176