温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
VAPS_XT
UE4
座舱
交互
集成
技术
胡文婷
55兵工自动化 Ordnance Industry Automation2023-07 42(7)doi:10.7690/bgzdh.2023.07.012 基于 VAPS XT 与 UE4 的座舱交互集成技术 胡文婷,李浩铭(海军航空大学青岛校区,山东 青岛 266041)摘要:针对目前 VAPS XT 不支持与虚幻引擎 UE4 的集成问题,提出一种座舱交互集成方法。以某型机航电设备 MFD 为例,利用 OpenGL 离屏渲染技术将 VAPS XT 动态库所产生的像素信息存储到内存中,结合 UE4 中的蓝图及 C+创建动态材质,将像素信息实时动态抓取并更新显示到 UE4 虚拟仪表中,实现 UE4 和 VAPS XT 的无缝集成。结果表明,该方法为 VAPS XT 开发的实装或仿真仪表程序移植到基于虚幻引擎 4 开发的模拟训练系统中提供了技术基础。关键词:VAPS XT;虚幻引擎 4;航电仿真;仪表仿真 中图分类号:TP391.9 文献标志码:A Cockpit Interactive Integration Technology Based on VAPS XT and UE4 Hu Wenting,Li Haoming(Qingdao Campus,Naval Aviation University,Qingdao 266041,China)Abstract:Aiming at the problem that VAPS XT does not support the integration with the UE4(unreal engine 4),a cockpit interaction integration method is proposed.Taking an avionics equipment MFD as an example,the pixel information generated by VAPS XT dynamic library is stored in memory by using OpenGL off-screen rendering technology,combined with the blueprint in UE4 and C+to create dynamic materials,the pixel information is dynamically captured in real time and updated to display in UE4 virtual instrument,and the seamless integration of UE4 and VAPS XT is realized.The results show that this method provides a technical basis for the transplantation of the real or simulation instrument program developed by VAPS XT to the simulation training system based on UE4.Keywords:VAPS XT;UE4;avionics simulation;meter simulation 0 引言 战机座舱是机上各类记载设备、信息的汇总中心,是飞行员与战机之间的重要交互通道1。航电系统作为战斗使命的功能核心,其状态的好坏直接影响部队战斗力2。目前,新一代航空电子系统已经发展为综合化的航电系统,其综合处理系统的软件规模非常大,代码量极大3;因此,航电系统的仿真是整个仿真训练系统中难度最大的部分,并且直接影响仿真训练的逼真度和训练效果。MFD 是航电系统中最为重要的显控设备之一,是机载传感器数据以图形化显示的平台,飞行员主要通过 MFD 获取飞行数据4。笔者以某型机 MFD为例,介绍基于 HMI 建模工具 VAPS XT 的座舱虚拟仪表动态库的开发技术,通过 OpenGL 的图像生成技术将仪表画面信息存储到内存中,再通过虚幻引擎 4 中的 2D 贴图获取到仪表画面,并赋给 C+模块创建的动态材质,进而实现 VAPS XT 仪表画面在 UE4 虚拟场景中实时动态的显示,解决了虚幻引 擎 UE4 与 VAPS XT 无法直接集成的技术难题。1 基于 VAPS XT 的仪表动态库生成技术 1.1 VAPS XT 软件介绍 在模拟器仿真领域,比较有代表性的 HMI 建模工具有 VAPS XT 和 GL Studio。VAPS XT 由意大利Presagis 公司研制开发,作为可以实现人机界面实时交互的 HMI 工具,被广泛应用于飞机显示仪表开发领域5。VAPS XT 和 GL Studio 都符合 ARINC661标准,可直接移植到机载系统中。VAPS XT 的优势在于其内核结构可以根据用户实际需求进行扩展,其逻辑设计部分集成在一起,有利于最大程度上对界面显示进行优化;GL Studio 的优势在于具有友好的 UI 操作界面和超强的软件重用性6。VAPS XT 从航空领域起家,不但适用于虚拟仪表开发,而且广泛应用于多种实装机型。VAPS XT绘图基于 OpenGL 图形格式,使用 VAPS XT 软件开发飞机座舱仪表画面,更加方便快捷,同时针对特 1 收稿日期:2023-03-22;修回日期:2023-04-27 作者简介:胡文婷(1983),女,山东人,讲师,从事虚拟仿真、视景仿真、模拟训练研究。E-mail:。56 兵工自动化第 42 卷定的型号,有机载数据库的支撑,可以大幅降低系统 VAPS XT 开发的工作量,缩短开发周期,并保持与机载工程的一致性。VAPS XT 是目前中航工业各主机院所首选的显控开发工具。由于飞机上各个系统的交联关系错综复杂,各个子系统之间的数据交互关联紧密,给仿真工作带来了较大难度。VAPS XT 的开发语言是 C 和 C+,因此代码的移植性比较好。选用 VAPS XT 软件作为实现虚拟仪表显示实验的开发工具,将真机显控程序移植到仿真环境中,后续与真机显控系统进行同步升级时,也能有效避免大量代码的重复工作。VAPS XT 内置典型飞行仪表显示页面的图形资源,且可通过设置通道控制显示图像的形状和数值变化;VAPS XT 的 CCG 工具可将显示画面转换为二进制代码,支持其他程序的实时调用。1.2 VAPS XT 图形界面设计 VAPS XT设计器 Designer提供了强大的图形绘制界面,几乎没有任何编程经验的美工设计人员也可利用它快速地制作出各种仪表模型和仪表画面,以及定义图形界面和数据链路。采用 VAPS XT 设计并建立的显示组件素材库是具有层级结构的,在仪表开发的过程中具有十分良好的灵活性和通用性,避免了大量重复的工作,大幅提高了显示系统的性能和开发效率。VAPS XT 部件库中存放了大量的图形对象和逻辑对象,可以直接用来定义显示界面的功能。这些对象从基本图形元素到一些特殊部件(如各类仪表按钮、旋钮、开关、滑块以及各种文本文字等)一应俱全7。通过运用这些元素和部件,可设计更加复杂的显示页面功能。笔者利用 VAPS XT 提供的基本图形元件和部分组件实现了某型机 MFD 仪表画面绘制,部分效果如图 1 所示。图 1 VAPS XT 仪表绘制效果 1.3 VAPS XT 动态库生成 如图 2 所示,VAPS XT 通过可视化设计将需要显示的信息直接生成 C 语言代码和 Active X 源代码,这些代码可直接移植到其他应用软件平台运 行8,具有强大的跨平台移植特性,可根据目标平台的具体需求,编译并生成所需的 dll 动态库。在Windows 环境下编译后,通过 OpenGL 编写的 exe文件可将显示画面以点阵信息形式存储在内存中。同时,源代码在 VxWorks 环境编译后,通过显示画面程序可以直接生成应用于真机的仪表画面。图 2 VAPS XT 建模功能 笔者将 VAPS XT 仪表程序发布成 dll 动态库。动态库提供的部分接口函数如表 1 所示。表 1 VAPS XT 动态库部分接口函数 函数名称 功能 LoadLibrary 加载动态库 vInit 初始化 pGetBuffer、vSetSize 初始化数据 vExecuteIteration 写入输入数据 vUpdateBuffer 更新输入数据 FreeLibrary 释放动态库 1.4 VAPS XT 动态库数据交互 VAPS 动态库的输入分为 2 部分:1)飞机各个子系统产生的图像数据信息,可直接输入给虚拟仪表动态库;2)显控程序输出的指令数据信息,也可直接输入 VAPS XT 动态库。显控程序的输入分为 2 部分:1)来自飞机各子系统的数据信息;2)所有的座舱操作交互信息数据。2 部分信息通过显控程序处理后,均输出到VAPS 动态库,根据输入数据以及动态库 dataflow设置,输出相应的仪表画面信息,该画面信息通过OpenGL 离屏渲染技术渲染到内存中,再由 UE4 从内存中获取并显示在虚拟场景中,最后虚拟仪表画面与模拟座舱进行匹配融合。显示交互数据传输关系如图 3 所示。57胡文婷等:基于 VAPS XT 与 UE4 的座舱交互集成技术第 7 期 图 3 显示交互数据传输 2 基于 OpenGL 的图像生成技术 由图像生成模块调用 VAPS XT 动态库生成仪表画面,需要在 UE4 程序中获取此画面并融合显示到虚拟环境中。由于 VAPS XT 底层基于 OpenGL图形引擎,UE4 底层基于 DirectX 图形引擎,所以两者不能直接在同一个环境下进行渲染,也就是两者不能直接集成,笔者采用图 4 所示方式。图 4 仪表画面渲染过程 由图像生成模块建立 OpenGL 渲染环境,然后调用 VAPS XT 动态库接收 DF 指令并绘制 MFD 画面,最终将 MFD 画面的像素数据存储到内存中,UE4 程序从内存中获取该画面的像素数据并融合显示到虚拟座舱中。上述图像生成模块并不需要将基于 OpenGL 生成的 MFD 图像显示到窗口上,只需在后台完成图像生成即可,因此可采用离屏渲染技术,并将画面的像素数据存储到内存中9。图像生成模块的执行流程如图 5 所示。图 5 基于 OpenGL 的图像生成程序流程 首先图像生成模块进行初始化,包括搭建OpenGL 离屏渲染环境、OpenGL 状态机初始化、VAPS XT 动态库初始化等操作10;然后,在每一帧的图像绘制过程中,先判断模块是否结束,进入VAPS 动态库的帧图像绘制循环:此循环从接收并处理输入指令开始,每次绘制图像之前都要进行清屏操作,然后设置视口、投影矩阵等信息,再调用VAPS 库函数进行画面绘制,并重复该循环。跳出循环后需要执行反初始化循环,删除初始化中创建的设备上下文 DC、渲染上下文 RC 以及 BITMAP等内容。在建立常规的 OpenGL 渲染环境时,通常是获取窗口的设备上下文,然后据此建立 OpenGL 渲染上下文,此后所有渲染的图像将显示到窗口中。与常规渲染不同,建立 OpenGL 离屏渲染上下文的过程如图 6 所示。首先根据当前显示器的设置,创建一个兼容的设备上下文 DC;然后创建一个指定宽度、高度、颜色位数的 BITMAP,并将当前 BITMAP与创建的设备上下文关联到一起;最后,选择和设置像素格式,并调用 wglCreateContext 设备上下文创建 OpenGL 渲染上下文 RC11。图 6 离屏渲染初始化流程 此后两者的渲染绘制过程完全相同,但是离屏渲染只在后台进行渲染,渲染的图像直接存储到了创建的 BITMAP 中12,不会在屏幕上显示。3 基于 UE4 的仪表显示技术 VAPS XT 支持多种主流仿真工具的无缝集成,但目前无法支持 UE4 引擎;因此,需要将内存中基于 OpenGL 和 VAPS XT 生成的仪表画面像素数据,同步获取到 UE4 中,并显示在虚拟