基于Vega Prime和GL Studio的某型飞机虚拟座舱系统研究与实现

2015-01-10 07:49:38何传易杨德辉
科技视界 2015年32期
关键词:座舱驱动程序应用程序

黄 旭 何传易 杨德辉

(中国人民解放军93199部队司令部信息管理中心,黑龙江 哈尔滨150006)

随着虚拟仿真技术的不断发展和创新,使得将飞机座舱搬进教室成为可能。笔者结合某型飞机座舱仪表多、参数交联复杂的特点,选择了开发周期短、组件复用性好的GL Studio软件来实现虚拟仪表仿真开发,并采用Vega Prime进行3D场景驱动,实现了GL Studio组件与Vega Prime间的结合和交互控制。

1 GL Studio虚拟仪表开发

1.1 GL Studio简介

GL Studio是由美国DiSTI公司开发,使用OpenGL图形库建立实时、照片级、交互式图形的虚拟仪表仿真程序的软件。它独立于平台,可以运行于Windows NT、IRIX和Linux操作系统上。GL Studio提供了友好的设计界面,其代码生成器能把美工人员设计绘制好图形文件一键生成c++和OpenGL的源代码,生成的可以源代码单独运行,也可以嵌入其他应用程序中。此外GL Studio组件的复用性极好,由GL Studio设计器创建的对象能容易地转变成一个组件对象,当一个组件对象创建之后,就可以轻松地重复使用该对象[1]。

GL Studio是基于对象的虚拟仪表开发工具,将对象的开发过程分成建立图形对象和建立行为代码两部分,前者由美工人员完成,后者则由编程人员完成。

其基本的开发流程如图1所示。

图1 GL Studio基本开发流程

美工人员收集真实仪表图片素材,经过纹理提取和修饰以后,使用GL Studio的设计器进行界面布局,并对创建的对象有效地命名(符合C++命名规则及要求);编程人员除需掌握基本的C++语言编程技术外,还需熟悉仪表知识,并根据仪表功用,在界面设计基础上创建对象的动作代码,经过测试集成后发布最终仿真程序。

1.2 虚拟仪表动作属性创建

飞机座舱仪表仿真要求虚拟仪表能及时影响用户操作,并能实时动态地显示仿真数据,实现输入设备与显示部件之间的数据交互功能。常用到的输入设备包括开关、按钮、旋钮等,GL Studio对大多数类型的输入设备提供了封装插件,大大减轻了开发人员的工作量。对于一些不常用的操作部件,则可以利用InputDevice控件通过编程响应鼠标事件来实现。

仪表设备基本显示部件包括指针、指示灯、数字滚轮刻度盘、LED数码管等。对于指针和指示灯类的显示部件,GL Studio提供了大量函数进行指示控制,常用的函数有:

●动态旋转:DynamicRotate(float,int);

●动态平移:DynamicTranslate(float,float,float,bool);●动态缩放:DynamicScale(const Vector&);●闪烁:Blinking(bool);

●显示/隐藏: Visibility(bool);

对于数字滚轮刻度盘,GL Studio提供了GlsOdometer对象,用户仅需设置好参数即可复杂的数字滚轮刻度盘功能;对于LED数码管则可以使用GlsTextGrid字符类对象来实现。

GL Studio提供的大量的封装插件和指示控件函数,实现了仪表数据的实时交互和动态显示,逼真地还原了仪表的工作状态。此外,用户还可以使用PLAY_SOUND(o,index)宏播放指定编号的声音,来响应用户的鼠标操作,从而进一步增强操作的真实感。

2 Vega Prime仿真驱动程序

2.1 Vega Prime仿真程序开发流程

Vega Prime是由MultiGen-Paradigm公司推出的最新VR开发平台,具有面向对象、功能强大、界面友好、平台兼容性好等特点[2]。其基本开发流程包括建立模型、场景设置和编写驱动控制程序三部分:建立模型主要是完成各种仿真对象和地形等的3D建模工作,通常用第三方工具如 GL Studio(仪表)、3DMAX、Creator、Terravista(地形)等完成;场景设置指利用LynX Prime对应用程序及场景进行基本的配置,包括应用参数配置(如窗口、通道等参数)、环境设置、对象初始位置姿态设置以及某些特效设置等,设置完成后生成*.acf配置文件供程序加载使用;编写驱动控制程序则是利用Vega Prime的应用程序编程接口(API),在VC++环境下实现VR仿真驱动控制程序的编写、调试和发布,本文采用的是VS.NET2005(对应VC8.0版本)编程环境。

2.2 基于MFC对话框的Vega Prime程序框架

VC++工程类型可以分为:控制台(Console)应用程序、Windows应用程序和基于MFC的应用程序。MFC是比较流行的基于文档/视图结构的应用程序框架,封装了大量的Windows API函数,已成为开发Windows应用程序的主流框架结构,而标准的Vega Prime视景仿真程序为控制台应用程序。为此我们将标准的Vega Prime仿真驱动程序改造成基于MFC对话框的驱动程序。

改造后的驱动控制程序在MFC对话框进程完成对话框初始化,启动Vega Prime渲染进程完成系统初始化、定义、配置、仿真循环等工作。初始化用来VP系统初始化,创建内存等;定义、配置是通过读取和解析LynX Prime应用程序生成的*.acf场景设置文件,创建三维模型,建立仿真对象与C++类之间的关系,完成场景加载工作;仿真循环则是根据仿真数据,完成场景渲染、漫游控制、数据交互等工作,在MFC下我们使用定时器对帧循环进行频率控制,从而保证数据同步。

3 飞机虚拟座舱系统的实现

3.1 GL Studio组件与Vega Prime的交互控制

在GL Studio中完成飞机座舱仪表面板的制作后,可以利用VC将 GL Studio 模型文件(*.gls)制作成动态链接库文件(*.dll文件)。 虚拟场景创建完毕之后,需将做好的飞机座舱虚拟面板的动态连接库文件导入虚拟场景中,但Vega Prime本身并不支持GL Studio模型的直接加载,因此需要安装配套的vpGLStudioPlugin插件,该插件使Lynx Prime场景编辑器可以直接加载GL Studio生成的动态链接库文件,并将其生成为一个vpGLStudioComponent类,方便地实现了GL Studio组件与Vega Prime的交互控制功能,大大降低了系统的开发难度和成本。

使用vpGLStudioComponent类中的setAtrib函数可以将仿真数据传递给GL Studio虚拟仪表面板,从而控制仪表的状态、动作和显示数据,该函数传递的数据类型为字符型,因此在传递前需进行数据类型转换。

不同仪表面板之间,仪表面板与仿真驱动程序间的数据交换则可以使用网络通信、消息传递等方式进行传递。

当虚拟仪表面板上的元件发生动作时,向仿真驱动程序窗口发送消息:

3.2 系统运行实现

飞机虚拟座舱系统对飞机、机场和地形等各种仿真对象进行了3D建模工作,采用GL Studio制作虚拟仪表仿真程序,利用Vega Prime进行系统的场景仿真驱动,飞机的仿真数据由飞行解算程序仿真计算得出,通过网络通信采用无连接的UDP协议方式与系统进行数据交换。完成后的飞机虚拟座舱系统运行界面及效果如图2所示。

图2 飞机虚拟座舱系统运行效果

4 结束语

虚拟现实技术在飞行领域有广泛的应用前景,特别在航空理论教学中,虚拟现实技术的应用不仅能激发学员的学习兴趣,提高教学效率,而且安全可控、易于复制,降低了教学成本。本文通过某型飞机虚拟座舱系统的研究与实现,为航理教、学人员提供了逼真的飞机虚拟座舱仿真环境,同时也建立了基于Vega Prime的虚拟仿真程序的基本开发流程和程序框架,为开发其它虚拟现实仿真程序提供了参考和基础。

[1]于辉,赵经成,等.GL Studio虚拟仪表技术应用与系统开发[M].国防工业出版社,2010.

[2]王孝平,董秀成,等.Vega Prime实时三维虚拟现实开发技术[M].西南交通大学出版社,2012.

[3]李万,王学军,崔小鹏.GL Studio与Vega Prime在某舰炮虚拟训练仿真系统中的应用[J].火炮发射与控制学报,2010,6.

[4]陈怀民,吴锦雯,黄晓波.基于GL Studio的飞行仿真虚拟仪表软件设计与实现[J].测控技术,2013.

[5]杨建国,王乘.基于Multigen和Vega的虚拟现实技术[J].计算机仿真,2003.

猜你喜欢
座舱驱动程序应用程序
开放式数字座舱软件平台IndiGO
NDT推出面向下一代智能座舱应用的压感触控解决方案
汽车零部件(2020年9期)2020-09-28 05:45:50
删除Win10中自带的应用程序
电脑报(2019年12期)2019-09-10 05:08:20
未来民机座舱显示控制系统初探
电子测试(2018年18期)2018-11-14 02:30:20
关闭应用程序更新提醒
电脑迷(2012年15期)2012-04-29 17:09:47
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序
驱动程序更新与推荐
驱动程序更新与推荐
驱动程序更新与推荐