GL Studio在飞机虚拟座舱实现中的应用

摘要:介绍了基于Vega平台的虚拟现实系统;GL Studio平台的工作流程;针对GL Studio制作的仪表仿真模型不能在Vega场景中直接应用的问题,分析了Vega和GL Studio的底层软件开发原理;对GL Studio模型向Vega场景移植的几项关键技术进行了研究,解决了坐标系差异、坐标系基本单位转换、模型载入以及场景中的模型操作等问题。

关键词:Vega;GL Studio;视景仿真;虚拟座舱

0引言

虚拟现实技术的最初应用是针对飞行员的飞行训练的,时至今日,利用虚拟现实技术来实现虚拟座舱仍是个热门的话题。之所以如此,是因为飞机座舱系统复杂,利用单一的系统仿真软件开发平台进行模拟往往会顾此失彼。就拿Vega来说,作为一款优秀的视景驱动软件平台,利用它可以很好地对飞机及其座舱的3D环境进行模拟仿真,然而,其自身提供的仪表仿真组件的功能相对较弱,仪表的模型建立要在没有程序开发接口支持的Creator中完成,这对机舱内复杂仪表的全面仿真是不可能的。因而,对仪表的仿真多数人的目光还是要投向专业的仪表仿真平台GL Studio。但是纯粹的GL Studio应用又似乎有些单调,对机座舱环境及其飞行环境难以模拟,仿真过程往往缺乏沉浸式的真实感。因此,若能将GL Studio的仪表仿真模型载入到Vega场景中将会是多数人的理想选择。然而,Vega本身对于GL Studio是不直接支持的,需要开发人员从底层将代码植入。本文结合某型飞机虚拟座舱的实现,对这一问题进行研究解决。

1 Veqa简介

Vega是MultiGen-Paradigm公司为视景仿真软件开发提供的一套系统解决方案,它由LynX***形界面、Vega API以及一些可选的功能模块组成。

通过LynX及其提供的功能模块,用户只需对一些参数进行简单的设置,不需要编写任何代码就可实现视景仿真对象的构造,创建对象属性及其之间的关系,并可生成ADF(程序定义)文件供Vega API调用。

在Windows环境中,可以利用Vc++或其它软件开发平台通过调用Vega API,来实现对LynX中定义的场景对象的管理,进而实现复杂的视景仿真系统开发。Vega API来源于SGI***形工作站的OpenGL Performer,因此,其底层具有与OpenGL的完美接口,使开发者能够根据不同需要,直接利用OpenGL开发出具有自身特色和功能的组件嵌入到Vega场景中。其开发流程如***1所示。

本文就是采用对Vega底层API的调用来实现GL Studio模型向Vega场景的移植。

2 GL Studio简介

GL Studio是DISTI公司为仪表仿真软件开发提供的一套系统解决方案。用户可以利用其***形交互界面以所见即所得的方式来完成仪表面板的制作,通过其代码编辑器来完成仪表内部逻辑仿真。其代码生成器能够将用户的制作结果自动生成c++和OpenGL源代码,用户既可以将其代码进行单独编译也可嵌入到其它程序中进行编译,从而避免了大量繁琐的底层OpenGL开发细节。其逻辑结构如***2所示。

3 GL Studio向Vega移植的关键问题

将OpenGL实现的功能嵌入到Vega场景中,一般利用Vega的回调函数来实现,而GL Studio对仪表的绘制也是通过OpenGL编程实现的,因此,GL Studio模型向Vega场景的移植自然也要通过回调函数来实现。但是,移植过程中有如下几个问题要解决。

3.1 GL Studio与Vega坐标系的差异问题

虽然GL Studio与Vega都是在OpenGL基础上的应用,使用的都是右手坐标系,但是Vega的坐标系与OpenGL的坐标系又有所差别,如***3所示。

从***3中可以看出,Vega坐标系是在OpenGL坐标系的基础上绕x轴逆时针旋转90。得到的,因此,若要在Vega场景中绘制或添加GL Studio模型,首先要保存坐标系的一致。这可以通过两种途径来实现:

(1)在GL Studio环境中制作虚拟仪表时直接在XZ平面上绘制(这里所指的均是绘制二维仪表)。这样,在移植过程中就不需要旋转仪表模型,但是会给单独调试虚拟仪表带来不便。

(2)在GL Studio环境中制作虚拟仪表时仍在XY平面上绘制,只是在移植时要将仪表在原来基础上绕x轴顺时针旋转90°。

本文中采用的是第二种方式。但是无论采用哪种方式,在将GL Studio模型放入Vega场景中之前,都要先保存Vega当前的显示状态,绘制完之后再恢复其显示状态。

3.2 GL Studio与Vega坐标系中基本单位变换问题

在Vega中根据场景及模型的大小不同,坐标所采用的基本单位可以是米、千米、英尺或英寸,而在GL Studio中制作虚拟仪表是以像素为基本单位的。因此在移植过程中存在着基本单位的转换问题。

笔者经过多次试验发现,GL Studio在移植过程中以Vega场景中的基本单位为基准进行l:l转换,即若Vega中以米为基本单位,转换后GL Studio的1像素即为Vega中的l米。那么,GL Studio模型在无缩放载入场景时,就会变得非常大,需要将其按要求进行缩小。一般情况下GL Studio模型在载入场景时都要以现有的Creator模型为背景,因为GLStudio所模拟的往往是在Creator建模时难以完成的某些仪表面盘,因此,在进行缩放时应根据Creator模型某个面的大小来制定缩放比例。

3.3将GL Studio模型载入场景的问题

在将GL Studio模型载入Vega场景时,应对其绘制过程进行合理封装。本文采用在Vega场景中首先利用MakeObj()函数动态构建Object数据模型,然后将GL Studio模型作为一个Node节点添加到该Object,并为该节点增加回调函数Obj_CB()将其载入场景。具体代码实现如下:

vgObject*MakeObj()

{vgObject*oglObj=NULL;

vgDataSet*dataset=NULL;//创建空的vgDataSet数据结构

pfGroup*group=NULL;//创建空的Group节点

DfNode*node=NULL;

//该Node节点指向新创建Object的Node节点

dataset=vgNewDS():

group=pfNewGroup():

……

if(vgMakeDS(dataset,group,VGDS_GEOMETRY)

==VG_SUCCESS、

{oglObj=vgNewObj():

vgName(oglObj,“_oglobj”):

vgProp(oglObj,VGOBJ_CS,VGOBJ_DYNAMIC);

vgObjDS(oglObj.dataset);

//利用DataSet数据结构创建新的Object

vgMakeObj(oglObj,VGOBJ_USE);

vgUpdate(oglObj):+

}

……

node=(#Node*)vgGetObjPfNode(oglObj):

……

pfNodeTravFuncs(node.PFTRAV_DRAW,Obj_CB,NULL);

//为新创建的Object增加回调函数pfNodeTmvData(node。PFTRAV_DRAW,NULL);return oglObj;

//返回新创建的Object地址指针

为创建的Object的Node节点增加的回调函数体:int obj_cB(onraverser*trav.void。data){pfPushState():

pfPushMatrix():

pfBasicState()://保存当前场景状态

GIsObj・>Draw()://GL Studio模型绘制过程

……

glFlush()://恢复保存的场景状态

glPopARdb():

pfPopMatrix():

pfPopState();

return PFTRAV_CONT;

3.4 GL Studio模型在Vega场景中的交互问题

在将GL Studio模型移植到Vega场景之后,它并不能自动捕获用户的输入事件,这是由GL Studio本身底层的消息管理机制决定的。因此,若要它能够响应窗口消息,就需要手动将消息发送给GL Studio模型,让其处理。这里,我们在Windows窗体消息循环中增加了一个HandleEvent()函数,让其主动捕获消息事件发给GL Studio模型处理。其函数体如下:

Void HandleEvent(int eventType,int eventSubtype.inl

buttonMask,UINT nFlags.CPoint point)

{MouseEvent eV://定义GL Studio环境下的鼠标事件ev.eventType。eventType;

//将Windows消息转化为GL Studio能够识别的消息ev.eventSubtype=eventSubtype;eV.buttonMask=buttonMask;

GIs_O bj->handle(&ev);//将消息发给GL Studio模型处理

}

4结束语

本文详细介绍了用GL Studio制作的仪表模型向Vega场景移植过程中的一些关键问题及其解决方法,并对Vega和GLStudio的底层工作原理作了简要介绍。所述方法解决了Vega场景中不能直接支持GL Studio虚拟仪表的问题,对于在Vega场景中复杂仪表的仿真有一定的参考和应用价值。移植到Vega场景中某型飞机虚拟座舱面板的效果如***4所示。

(注:本文中所涉及到的***表、注解、公式等内容请以PDF格式阅读原文。)

转载请注明出处学文网 » GL Studio在飞机虚拟座舱实现中的应用

学习

影视剧灯光之补光与遮光

阅读(22)

通过影视剧灯光在日景、夜景、室内景、室外景等各种场景下对补光和遮光的运用,论述了补光和遮光在影视剧灯光创作中的必要性和重要性。关键词:电影电视剧灯光补光遮光影视剧灯光的特点:即摄影或摄像时运用人工照明的方法,利用各种照明器材,对

学习

浅析液压与气动技术的应用

阅读(19)

本文为您介绍浅析液压与气动技术的应用,内容包括液压与气动技术的发展及应用论文,液压与气动技术的总结。液压与气动技术随着自动控制技术、计算机技术、微电子技术等的发展,其也发展到了一定的规模和技术水平。其越来越广泛地应用在交通

学习

慈禧曾孙那根正:皇族后裔的别样人生

阅读(26)

本文为您介绍慈禧曾孙那根正:皇族后裔的别样人生,内容包括慈禧最后一任统治者,慈禧的曾孙后人。2012年9月,爱新觉罗、叶赫那拉两大皇室家族首次书画联展在天津举行,汇集五代皇室成员40多位书画家百余幅作品,极为珍贵。既有当代书画名家爱新

学习

沈阳蒸汽机车博物馆

阅读(17)

本文为您介绍沈阳蒸汽机车博物馆,内容包括沈阳蒸汽机车博物馆在哪,沈阳的蒸汽机车。沈阳蒸汽机车博物馆建于2005年3月。馆门前建有一个半圆型的休闲广场,外观以银灰色为主色调,使之成为一个集工业旅游和文化休闲于一身的旅游景点。沈阳蒸

学习

雷达探测技术的对抗与发展

阅读(24)

本文为您介绍雷达探测技术的对抗与发展,内容包括雷达与探测前沿技术丛书,雷达探测技术现状与展望。近些年来我国经济发展迅速,科学技术水平也在不断提高,在这样的背景下雷达技术也得到不断完善与进步。雷达技术应用的范围也越来越广泛,特别

学习

探究学科学 实践出真知

阅读(21)

【摘要】像科学家一样去探索,是小学科学教育引导小学生的一句口号,也是实现有效科学教育的途径。作为“杏坛杯”苏派青年教师教学展评活动的主题,“发现学科价值,发展学生学力”为当前的科学教育、教学活动明示了方向。科学教育的价值在于培

学习

中国社区居家养老服务模式浅析

阅读(41)

本文为您介绍中国社区居家养老服务模式浅析,内容包括台湾居家养老模式介绍,社区居家养老服务模式的探索案例。【摘要】随着老龄化趋势的加快和日益严峻的养老问题,在新型居家养老模式基础上形成的社区居家养老服务模式在充分满足老年人需

学习

化学史与化学教学

阅读(27)

本文为您介绍化学史与化学教学,内容包括化学史课程教学大纲,基于化学史的化学教案。化学是在一定历史条件下形成的以实验为基础的课程。在化学的教学中引入化学历史的介绍,可以培养学生对课程的兴趣,开阔学生视野,增强学生的动手和动脑的能

学习

幼儿园创意水墨画教学新策略

阅读(14)

本文为您介绍幼儿园创意水墨画教学新策略,内容包括幼儿园创意水墨画教学目标,如何写好幼儿园水墨画教案。水墨画是我国传统的绘画形式,指用毛笔蘸水、墨、彩作画于绢或纸上的中国画。这种特殊的绘画风格,吸引着孩子们的兴趣。快速成型的绘

学习

促进技改 降本增效

阅读(17)

本文为您介绍促进技改 降本增效,内容包括技改促进降本增效,设备技改降本增效。简介了我厂近2年对现有整个空分装置系统的技术改造,并取得了良好的效果,装置消耗明显降低。关键词:空分设备节能降耗循环水污氮浙江巨化电石公司气体厂自1958年

学习

中学英语中的几个“也”

阅读(22)

本文为您介绍中学英语中的几个“也”,内容包括中学教材全解里面的题目英语,初中英语时文中英文对照版。在现行中学英语教材中,我们遇到了几种表示“也”的方式,如too,also,either,aswell,so+系动词/助动词/情态动词+主语”等,它们既有联系,又有

学习

公安改革中新警务模式的定位和发展

阅读(17)

本文为您介绍公安改革中新警务模式的定位和发展,内容包括山东公安警务机制改革,铁路公安一室两队警务改革。【摘要】新时期,在公安机关全面深化各项改革中,警务新模式成为各项改革中涉及的问题,本文从当前新时期警务模式的现状入手,提出目前

学习

品读国学,感悟人生

阅读(18)

本文为您介绍品读国学,感悟人生,内容包括品读国学经典感悟人生哲理,感悟国学经典的文章。中国五千年的悠久历史仿佛一条伸向远方的美丽长河,这条河养育了整整十三亿炎黄子孙。在这条河中,有数不胜数的璀璨明珠,它们就是让我们炎黄子孙引以

学习

海上风力发电技术探析

阅读(27)

本文为您介绍海上风力发电技术探析,内容包括海上风力发电研究报告,海上风力发电一个造价多少。为促进风能资源的开发和利用,我国逐步建立了一些风力发电厂,但是在沿海区域海上风力资源的开发与利用仍处于初期阶段。本文就海上风力发电技术

学习

近年波音 737 系列飞机故障机型案例分析

阅读(22)

本文为您介绍近年波音 737 系列飞机故障机型案例分析,内容包括波音737系列失事记录,波音737系列市场占有率。波音737系列飞机是美国波音公司生产的一种中短程双发喷气式客机。波音737已经有40多年的历史,成为全球民航中一个奇迹,截止当前

学习

基于Virtools的3D虚拟试衣间设计与实现

阅读(30)

本文为您介绍基于Virtools的3D虚拟试衣间设计与实现,内容包括基于unity虚拟试衣间项目,基于vr技术的虚拟试衣间设计研究。摘要服装的网购需求日益增长。为了满足人们的试衣需求,通过三维建模软件3dsMax和虚拟现实软件Virtools开发了一款

学习

基于深度摄像头的虚拟试衣系统

阅读(18)

本文为您介绍基于深度摄像头的虚拟试衣系统,内容包括基于深度相机建模虚拟试衣,虚拟试衣技术的创新意义。随着时代与科技的发展,越来越多的科技元素融入到我们的生活中来。在人机交互方面,虚拟试衣系统为人们提供了便捷可靠的全新试衣模式

学习

“虚拟人”

阅读(21)

本文为您介绍“虚拟人”,内容包括虚拟人书籍解读,虚拟人小说推荐。在现代影视节目中,已经出现了虚拟的明星,他们能像演员一样说话和运动。这就是虚拟人的雏形。虚拟人可在航天、航空、汽车、服装、影视、建筑、国防等诸多领域中大显身手,但

学习

线上店铺虚拟试衣技术的对比探析

阅读(21)

1线上试衣网站FitiquetteFitiquette由印度的AndyPandharikar和AnantKumar创立于2010年10月,总部位于美国的旧金山,其基本过程是:用户在界面下拉列表中根据自己的购买经验选择上装和下装的品牌和号型,系统会据此建立初步的模型。用户继续选

学习

虚拟机迁移技术研究

阅读(43)

本文主要结合libvirt技术,研究实现了虚拟机迁移,总结了虚拟机动态迁移条件。关键词:虚拟机迁移libvirt一、虚拟机迁移实现虚拟机在物理机之间的迁移包括:静态迁移、动态迁移静态迁移又称为常规迁移、离线迁移(OfflineMigration),就是在虚拟机关

学习

探究鸭式布局模型飞机

阅读(26)

本文为您介绍探究鸭式布局模型飞机,内容包括飞机鸭式布局讲解,飞机鸭式布局的优缺点。在2016年全国“科研类”航空航天模型锦标赛上,笔者印象最深的是北京航空航天大学代表队使用新型复合材料制作的极限载重模型飞机。它勾起了笔者之前关

学习

浅谈虚拟现实课程的实践教学方法

阅读(24)

【内容摘要】文章阐述虚拟现实实践教学中存在的问题,根据目前教学状况,提出了相应的教学新思想和方法。着重论述在虚拟现实实践教学中培养学生良好习惯,合理安排学生实践和教师演示的课时比例;激发学生的学习兴趣和潜力,以便提高学生的竞争能