飞行模拟器HUD开发及在VP中的实现

2015-03-25 02:13程乃伟杨天卓
科技传播 2015年13期
关键词:视景编辑器座舱

程乃伟,杨天卓

沈阳航空航天大学安全工程学院,辽宁沈阳 110000

飞行模拟器HUD开发及在VP中的实现

程乃伟,杨天卓

沈阳航空航天大学安全工程学院,辽宁沈阳 110000

平视显示器(HUD)是飞机模拟器模拟飞行仿真开发系统中的一个重要组成部分,其视景不仅显示飞机的位置和姿态,还提供最直观的数据供飞行员参考,使飞行员不需频繁低头查看座舱仪表就能了解飞机的当前高度、航向和速度等实时信息。所以在模拟视景中加入HUD仿真设计是非常必要的。HUD的仿真设计是基于GL Studio仪表仿真工具,结合VS.NET2003编译环境,并最终嵌入到Vega Prime(VP)场景。以某型飞机模拟座舱为例,给出了其HUD仿真模型的基本建模步骤,并对HUD建模的关键技术及如何将HUD移植到场景中进行了深入探讨。

GL Studio;平视显示器;飞机模拟座舱;仿真

0 引言

随着计算机虚拟仿真技术的发展,基于计算机的模拟学习和作战训练系统被广泛使用。飞机模拟器能够培养飞行员的实际操作能力和解决问题能力,给飞行员提供真实的感觉,以安全、科学、经济、高效的方式完成对飞行员的必要训练。因此,基于虚拟现实技术的模拟器设计将是仿真领域未来发展的潮流和趋势。如何能高效逼真地模拟实装,符合教学和训练的需要,是系统开发和设计人员亟待解决的一个重要难题。

1 GL Studio建模优势

GL Studio是一个独立平台的快速原型工具,用来创建实时的、照片级别的、可交互的图形界面。GL Studio被用于HUD建模的选择依据主要有以下几个方面。

1)GL Studio不仅提供了仪表开发平台和开放的对外接口,同时还可与众多第三方软件集成在一起,例如:VP、MatLab等。

2)GL Studio编辑器是一个3D所见即所得的绘制工具,包括了用户所期望的所有图形界面元素。

3)GL Studio代码生成器已经内嵌到编辑器中,它允许程序员将编辑器绘制的图形转换成可移植的C++代码。

4)GL Studio生成的人机接口有两种方式与外界交互,一种是通过协议读取外界数据来驱动仪表显示;一种是通过GL Studio提供的Call Back功能使图形化对象可以响应用户界面事件。

2 HUD建模主要步骤

使用GL Studio工具开发HUD建模过程简单,生成代码易于理解。下面以某型飞机HUD为例,介绍HUD仿真模型的开发过程。

2.1 HUD界面设计

机模拟座舱视景画面中HUD界面显示基本信息主要包括:飞机当前高度、速度、航向、飞机姿态等信息,如图1中上、左、右及中间刻度带所指示。打开VS2003编程软件创建一个仪表项目,从生成的HUD.gls格式程序进入,就可以创建这些信息的图形并编辑驱动代码。以下以航向刻度带为例介绍建模主要步骤。

航向刻度带运作机理是刻度线及上方数字横向滚动,刻度线下方指针指示的就是当前飞机航向。

1)刻度线的创建:在图形设计画布上使用工具栏中Inserts a GlsLinearScale创建一段刻度线,在编辑器主控制窗口重新命名为heading,右键打开heading的对象属性窗口,选中两组线并根据图示比例设置线段间隔、长度、线宽及数量。

2)数字显示:使用工具Inserts a Gls TextGird在每个刻度线上方创建数字显示。命名中间数字显示为Center,打开Center属性,设置数字的大小、字体效果及位数。

图1 HUD界面

2.2 HUD代码设计

创建完图形元素后,为这些元素的驱动添加代码实现。在Code代码编辑区创建一个Property并命名为Heading,航向刻度带实时显示实现代码及讲解如下:

static float scale = -60.0f/1.0f; //刻度间距在图形编辑区的像素差

char Center[16],Left[16],Right[16];

float adjustedHeading;

_heading = value/10; //数字显示36实际代表航向360,所以需对接收数值进行处理

adjustedHeading= fmodf(_heading,36.0f); //为了实现航向刻度带360度循环滚动

int center = (int)adjustedHeading;

center = center - (center % 1);

sprintf(Left,“%2d”,CalcHeading(center-1));

sprintf(Center,”%2d”,CalcHeading(center));//根据中间刻度数字显示值,显示左右值

sprintf(Right,”%2d”,CalcHeading(center+1));

leftReadout-〉String(Left);

centerReadout-〉String(Center);

rightReadout-〉String(Right);

float diff=adjustedHeading-center;//计算位移差

HeadingGroup-〉Location(startLoc. x+diff*scale,startLoc.y,startLoc.z);//根据位移差值,左右移动整个刻度带图形构成元素

3 建模关键技术

3.1 独立图形对象

为了便于部分图形及代码的修改和重用,在创建类似刻度带这种块状结构时,可使用工具栏中Converts Selected To Component来独立块。而在需要使用该模块的地方Inserts a Component就可以直接调用。如图1中,航向刻度带就是HUD.gls通过添加组件形式添加进来,打开组件就可以直接进行图形设计和编写驱动代码。

3.2 隐藏图形边界

为了让图形元素在一定范围内显示,如运行时只要显示航向刻度带的中间三个刻度,实现方法如下:

1)在编辑器Generation中选中User Defined Base Class选项,在Base Class Name中填写public GlsComponentScissor。

2)在画布中创建一个矩形框框住需要显示航向刻度的部分,并在编辑器Geometry中把这个矩形框重新命名为clipThis。

3)在编辑器Code中Initialize()函数中添加函数语句:SetViewport(clipThis);通过调用该函数实现对clipThis矩形框外的图形的隐藏。

4)在GL Studio项目中,引用包含该函数的头文件gls_component_scissor.h。功能实现代码如下:

4 GL Studio模型移植到VP场景

4.1 准备工作

VP不能导入由GL Studio直接生成的*.gls模型文件,但可以接受VC环境下生成的*.dll文件。打开GL Studio项目程序,在启动一栏选择LiveComponent Debug,成功编译后在相应文件夹下就会产生动态链接库*.dll文件。

4.2 移植方法

为了能够在基于VP的视景中导入GL Studio模型,需要安装GLS_Vega_Prime_2_9_2_Setup_vc71插件,安装好插件重新打开VP图形编辑器,在创建实例中就会多出一个vpGlStudio类。添加该类的实例对象,就可导入HUD在VS.NET2003环境中生成的动态链接库文件。

4.3 单位转换

VP与GL Studio采用的基本单位不同,在没有任何处理的情况下,在场景中移植过去的HUD会非常大,应根据实际需求并以场景地平线位置为对齐标准缩放HUD仿真模型的大小。

5 结论

目前,该HUD仿真软件已成功应用于某飞机模拟座舱当中,为仿真飞行状态参数显示提供了良好的界面,实现了设计HUD仿真模型的初衷。经开发实践证实,GL Studio 建模形象逼真、效率高、代码移植性好,将其广泛应用于飞机模拟座舱的仿真开发已成为趋势,但要做到更加完美逼真的虚拟仿真,需要融合多种仿真开发平台和更多相关理论支持。

[1]谢广辉,邱淑范.基于虚拟现实技术的飞行训练模拟器探讨[J].中国航天,2001(10).

[2]赵经成,付战平,于辉.等.虚拟仿真训练系统在航空装备技术保障领域的应用[C]//第四届长三角科技论坛航空航天与长三角经济发展分论坛暨第三届全国航空维修技术学术年会论文集,2007.

[3]李海浩,朱宁龙,田立军.基于GL Studio 的虚拟面板的开发研究[J].科技信息,2009(22).

[4]朱渊超,车建国,杨作宾,等.基于GL Studio的某型雷达面板仿真[J].电脑开发与应用,2006,19(5).

TP39

A

1674-6708(2015)142-0104-02

程乃伟,硕士,教授,研究方向:系统安全工程、事故仿真、应急救援

杨天卓,硕士生,研究方向:虚拟仿真

猜你喜欢
视景编辑器座舱
开放式数字座舱软件平台IndiGO
NDT推出面向下一代智能座舱应用的压感触控解决方案
你距离微信创作达人还有多远?
未来民机座舱显示控制系统初探
车辆段收发车运行图编辑器的设计与实现
vega及其在战场环境视景仿真系统中的应用
全回转拖轮运动建模与视景仿真
基于VLIW目标机的ELF二进制编辑器设计与实现
基于Vortex与Vega Prime的车辆模拟器动力学与视景仿真
基于STK的卫星实时视景仿真系统设计