GL Studio与Vega Prime在某舰炮虚拟训练仿真系统中的应用

2010-06-27 00:58王学军崔小鹏
火炮发射与控制学报 2010年2期
关键词:舰炮编辑器代码

李 万,王学军,崔小鹏

(海军工程大学,湖北武汉 430033)

虚拟培训系统的开发一般采用传统建模工具Multigen Creator建立模型,运用Vega Prime对场景实时驱动。而舰炮舱室建模需要开发大量的舰炮面板,采用M ultigen Creator建立模型存在着建模复杂,开发周期长等缺陷。而由DSITI公司开发的GL Studio作为专业的面板仿真软件,则能够方便地实现各种复杂的面板仿真功能,但它与Vega Prime之间不能直接通信。因此,笔者结合某型舰炮虚拟训练仿真系统舱室及控制台面板模型开发的实际,实现了GLStudio模型向Vega Prime场景移植和模型间的交互控制[1]。

1 虚拟训练仿真系统设计

该系统在Window s XP Professional操作系统下,利用3DSM ax、GL Studio和 Vega Prime进行模型建立和驱动的开发,编译环境为VS.NET2003。

1.1 系统的开发流程

作为高性能的VR开发平台,Vega Prime提供了两种系统设计模式:一是使用Vega Prime的Lynx Prime图形用户界面配置系统,该法只适用于简单的对交互性要求不高的小系统;二是运用Vega Prime提供的API函数(C++语言)进行程序开发。本文中综合采用两种方式来进行系统的开发。首先通过Lynx Prim e对场景进行简单的配置,添加模型等,然后在VS.NET2003环境下进行诸如键盘控制人机交互等实时仿真。

1.2 系统的实现

仿真系统的实现主要分成两个部分:场景建模与场景驱动。其基本框架如图1所示。

场景建模是将所要仿真的场景与对象通过数学方法表达成存储在计算机内的三维图形对象的集合,包括纹理的获取和处理。采用3DSM ax建模工具对舱室外壳和舱内各种设备建立三维3ds模型,将3ds模型的材质全部转换成贴图。并利用转换插件poly trans for 3ds max将.m ax转换成OpenFlight图形数据格式文件(.flt),该文件能够直接导入到Vega Prime中的Lynx Prime图形编辑器[2]。利用VC将GL Studio模型由*.gls文件制作成动态链接库文件(.dll)文件,在VC中编译刚创建的工程,若没有错误则在该工程的Debug文件夹下就产生了相应的*.d ll文件。通过VC平台生成*.dll再导入到 Lynx Prime图形编辑器[3]。在Lynx Prime编辑器中就可以对模型定义外部参数,并且实现漫游和环境设置的功能,这些参数都会保存在应用配置文件(.acf)中[4]。

场景驱动是仿真程序根据所建立的场景模型以及场景中各类仿真对象运行时的状态参数来生成实时的场景,仿真的结果以图像的方式输出。本文采用在VS.NET2003环境下,通过调用API的方法来实现对场景对象的驱动控制,以及场景对象与面板模型的交互动作。

2 基于GL Studio的仿真界面开发流程

在GLStudio中设计面板图形界面,一般可以分为如下3个步骤。

1)设计图形界面。利用GL Studio设计器进行图形界面设计。GL Studio设计器支持照片级纹理的应用。一切多边形的对象都可以贴图。纹理工具可以导入使用大多数普通格式的贴图,如 TIFF,JPEG,SGI和BMP等。

2)交互响应的实现。在GL Studio中,最为重要的元素就是输入设备。输入设备是能够根据用户输入或程序输入改变状态的一组对象,即输入设备可以与用户交互。开发人员需要为输入设备添加事件处理的C++代码,以处理事件或改变状态。这些代码放在“对象属性/输入设备”标签的“回调定义”(CallBack)域中。回调函数将包含在生成的源文件中,用户在自己编写的应用程序中调用它们,以响应事件,包括键盘和鼠标事件。

3)生成代码。利用GL Studio代码生成器生成代码。GL Studio代码生成器被内建到GL Studio设计器中。任何可由GL Studio设计器绘制出的对象都能生成C++源代码。生成的源代码是可移植、高质量的,具有美观的格式且容易阅读,让程序员容易将其合并到他们自己的应用程序中。将GL Studio所形成虚拟仿真界面的代码移植入主应用程序后,再经过相应的编译环境进行编译、连接,最终便生成了用户可执行程序[5]。

在某型舰炮虚拟训练仿真系统控制台面板的开发中,为控件添加必要的变量、响应事件和属性,实现按钮、旋钮、开关等对状态指示灯、报警器的控制。首先在“M ain ControlW indow”中选择“Code Tab”,单击右键为指示灯等设定属性类型、属性名称和初始值。然后选择“Ob ject Properties”并为各个交互设备添加事件回调代码。

选择“Knob”,设置各个位置状态和属性;在“Object Code”里定义旋钮初始位置,为开关各状态与指示灯变换关系编写代码:

最后,为开关和旋钮的状态转换过程添加声音效果 。在“Resources Tab”中选择“Sounds”,添加指定的声音文件,并在程序的相应位置处添加“PLAY_SOUND(self,index)”,即可得到鼠标点击开关按键时的音效。

3 虚拟面板在Vega Prime中的动态调用

虚拟场景创建完毕之后,将前面利用GL Studio做好的虚拟面板的动态连接库文件导入虚拟场景中。由于Vega Prim e本身不支持直接加载GL Studio模型,因此需要解决如何将GL Studio面板模型代码植入到 Vega Prim e中。本文采用 GL Studio配套的插件vpGLStudioPlugin,该插件能够将由GL Studio生成的代码编译而成的动态链接库文件(.d ll)直接加载到Lynx Prime编辑器中[1]。

在Vega Prime中方便地调用在GL Studio中生成的动态链接库,减少了程序开发的难度,节省了时间和成本。GL Studio模型导入VP过程中可以像一般的Object实例那样方便地设置各项参数,此外,利用插件导入GLStudio模型后,每个模型都成为一个类,进而可以进行模型内部组成部分的操作。在Lynx Prime中完成*.acf文件的编辑工作后,导出对应的*.cpp文件查看 Lynx Prime编辑器中所进行的设置,从而为开发带来更大的方便。根据上述方法实现的某型舰炮虚拟训练操作界面部分效果如图2所示。

4 结束语

本文着重研究了某型舰炮虚拟训练过程中控制台面板画面的实现方法,实现了GL Studio模型向Vega Prime场景移植,利用GL Studio和Vega Prime完整地构建了具有较强真实感、沉浸感、互动性的某型舰炮虚拟训练仿真系统,对于相关视景仿真和虚拟操作训练系统的研究具有一定的应用价值。

[1] 田野,童大鹏,凌华,等.GL Studio与Vega Prime在船舶机舱虚拟仿真系统中的应用[J].船海工程,2008(4):134-136.TIAN Ye,TONG Da-peng,LING Hua,et al.A pplication of GL Studio and Vega Prime in the virtual simulation system of ship engine room[J].Ship&Ocean Engineering,2008(4):134-136.(in Chinese)

[2] M IZUGUCH IN,TAMURA Y,IMAGAWA S,et al.Development of reactor design aid tool using virtual reality technology[J].Fusion Engineering and Design,2006,81(23-24):2755-2759.

[3] M ARIA A F,WENDEL BS,M ILTON E,et al.An interactive simu lation system for training and treatment p lanning in orthodontics[J].Computers&Graphics,2007,31(5):688-697.

[4] M ILANA H,DAV IDE L,LANY T,et al.Virtual reality visualization of 3-D electromagnetic fields[J].A cademic Radiology,2002,9(11):1255-1263.

[5] 樊世友,邸彦强,朱元昌,GL Studio软件在视景仿真建模中的应用[J].计算机工程,2002(3):260-261.FAN Shi-you,DI Yan-qiang,ZHU Yuan-chang.Application o f GL studio so ftware in the virtual reality training simulator of certain radar[J].Computer Engineering,2002(3):260-261.(in Chinese)

猜你喜欢
舰炮编辑器代码
大口径舰炮弹药储供系统可靠性研究
一门舰炮杀四方
一门舰炮杀四方
司空见惯感觉烦 锁屏画面快走开
基于Simulink的高精度舰炮随动系统建模与仿真
编辑精选APP
你距离微信创作达人还有多远?
创世代码
创世代码
创世代码