航空发动机三维工作演示系统设计
2016-06-29束家熠
束家熠
【摘 要】本文介绍了利用三维建模软件建立涡扇发动机模型的方法,使用旋转、复制、平移等指令,安照发动机结构图纸或照片构建发动机三维模型。通过编程调用发动机三维模型,实现了涡扇发动机三维视景仿真程序,同时在前台对话框显示发动机动态模型输出的发动机工作参数。在发动机模型中预留特效贴图并通过程序的灵活调用,对发动机内部的气流特效和燃烧室与加力燃烧室的燃烧特效提出了新的实现方法。
【关键词】三维建模;涡扇发动机;视景仿真
0 引言
相较于传统的数值显示和数据曲线,使用三维视景仿真技术对航空发动机的工作状态进行模拟,可以更为直观地显示发动机在不同工况下的内部气流流速、温度等重要特征。
Creator和Vega Prime分别是美国MultiGen公司开发的商用三维仿真建模软件和实时三维应用开发环境,Creator生成的三维模型可通过Vega Prime配置生成三维视景仿真应用,是种高效、便捷、灵活的三维视景仿真系统开发手段,同时提供了逼真的仿真效果和声、光以及视觉特效。
本文基于上述两种软件,开发航空发动机三维工作演示系统,可应用于科研教学、企业产品演示等。
1 航空发动机模型的建立
与3DMAX等主流建模软件相比,Creator的特点是采用了针对实时应用优化的OpenFlight数据格式,这是一种通过划分层次来描述视景信息的逻辑化数据库,由众多不同等级的节点所构成的[1]。
在现实世界中,一个封闭的几何物体的构成要素可分为体、面、线、点。相对应的,在典型的OpenFlight模型数据库中,构成一个物体的节点从结构层次上依次为体节点、面节点、线节点和点节点,另外任意多个节点还可以组合成一个组节点以便于管理。从功能角度来说,上述体、面、线等节点可用于描述三维模型的几何特征以及颜色、反光度和纹理等特征信息,而组节点可用于集中管理不同节点之间的层次关系[2]。
以典型的双转子大涵道比涡扇发动机为例,其主要结构部件包括风扇、压气机、燃烧室、高低压涡轮、尾喷管、机匣和附件等。
航空发动机内的大部分部件均为旋转件,如高低压转子,机匣和燃烧室等。对于这一类部件,可以直接通过描点(polygon)指令按照发动机图纸或照片描绘出发动机的横截面,然后通过滚动指令将横截面围绕发动机中轴线一圈并生成旋转部件的封闭实体。最后,为了节省仿真程序运行时的计算机资源,可将实体封闭后观察不到的多余面节点删除。
发动机叶片可视为扭转的拉伸实体,因此可先利用描点指令(polygon)描绘出叶片的截面形状,然后通过复制、平移(Translate)、旋转(Rotate about edge)等指令将叶片截面移至不同高度,并随高度增加扭转一定角度,最后通过连接(Loft)指令将这些截面连接为一个完整的叶片。对于涡轮或比较短小的压气机叶片,可以直接将叶片截面通过拉伸(Wall)指令生成无扭转的叶片。最后将生成的叶片安装到发动机上,使用复制和旋转指令围绕发动机中轴线生成一圈完整的发动机叶片。
除了上述体、面等节点外,Creator还提供了一些特殊节点,这些节点与组节点的级别相同,但并不包含模型的几何特征信息,其作用是为下属的子节点提供特殊效果。在建立本文中的航空发动机模型的过程中,主要涉及到两种特殊节点,其一是自由度节点(DOF),该节点的作用是赋予模型中的任意体节点一个子坐标系,以上级节点的坐标系为母坐标系,在DOF节点下的体节点可以以子坐标系的原点为中心,在母坐标系的运动基础上做六自由度的相对运动,结合编译语言的运用,可以灵活的展现模型的动态特性。例如本文将发动机高低压转子分别置于DOF节点下,并将DOF坐标系原点设在发动机中轴线上,后续便可通过程序控制高低压转子围绕发动机中轴线旋转。另一个特殊节点是选择节点(switch node),使用该节点可以对下级节点进行显示或隐藏控制。
通过上述方法,分别建立了大(图1)、小涵道比涡扇发动机。
2 VigaPrime与Visual Studio的联合编程的实现
Vega Prime可直接读取由Creator开发的OpenFlight格式模型,通过将三维视景仿真程序的底层代码封装、固化并增加向导模式,便于开发者对视景仿真程序进行快速配置。通过图形化的人机界面,开发者可以很方便地在虚拟世界中加入各种地景、模型、天空、气候、云层、水面以及烟雾、爆炸和火光等特效,并自定义观察者的运动方式。完成仿真环境的配置并输出后,可由VS(Visual Studio) C++调用配置文件,完成应用程序的开发。
本文利用VS中MFC自带的多媒体定时器设置仿真周期,每隔16ms刷新Vega Prime仿真程序的显示画面,利用定时器可以较为精确地控制仿真周期,实现Vega Prime程序的运行。
2.1 程序设计与界面
本文的仿真程序主要包括三个自定义类:
1)显示控制对话框类(图2),此类为仿真应用程序的主要类,有两个主要作用:首先,该类下建立并调用了Vega Prime仿真对象和发动机动态模型对象,通过对发动机模型的后台调用获取下一仿真周期中发动机工作状态参数,并将这些参数传递给Vega Prime对象用以在前台实时刷新仿真窗口,将发动机的高低压轴转速、气流状态、燃烧室火焰等状态变化以三维视景仿真的形式呈现。其二是数据的显示和输入,该类可通过仪表等控件将后台的发动机工作状态参数直观地呈现给用户,并提供如油门台推力杆角度等发动机控制参数和高度、温度等环境参数的输入功能,并将输入的参数传递给发动机模型。
2)发动机动态模型类,该类通过动态链接库(DLL)调用独立的发动机动态模型,接收来自监视对话框类的发动机控制参数和环境参数,计算出下一仿真周期的发动机工作参数,并将该参数传递给监视对话框类;
3)VigaPrime仿真实现类(图3),负责定义并初始化视景仿真窗口,调用发动机三维模型,并根据从监视对话框类中接收的参数实时刷新显示界面。此外,发动机视景仿真程序中的火焰和气流特效也是通过该类中的成员函数实现的。
2.2 发动机部件自由度节点设计
本程序所用的发动机模型主要拥有高、低压轴两个旋转部件以及小涵道比发动机特有的可调节尾喷管,上述部件的旋转运动以Rotate(double p,double y,double r,true)函数实现,其中p,y,r分别代表了DOF下属节点的俯仰,偏航和滚转角度。
3 发动机动态特效的实现
发动机的动态工作特效主要有气流在发动机流道内的流动特效、燃烧室的动态燃烧特效和加力燃烧特效等。很明显,这些特效的实现较为复杂,无法仅通过Creator建模实现,而Vega Prime虽然提供了一些简单的效果函数,但仍无法满足航空发动机工作时动态特效的要求。例如燃烧室的火焰效果,Vega Prime内置的火焰特效无法表现燃烧室内的高速燃烧视景效果。因此,运用Creator中的特效节点和Vega Prime特效函数,并通过仿真程序灵活调用是展现这些特效的关键。
3.1 气流特效
发动机内外涵道内的气流速度、温度是表征发动机工作状态的重要特征,由于发动机内部流道较为复杂,而Vega Prime自带的粒子特效只带有简单的方向和速度指令,无法沿复杂路径移动,不利于展示发动机内的气流特性。而粒子本身又是不透明的,很容易遮挡发动机内部结构,妨碍观察。本文采用动态透明贴图的方式,既直观的展现发动机内部气流流向、速度和温度,同时避免占用过多系统资源。具体方法是:首先在Creator中建立两个形状与发动机流道相同的面节点,其中一个面节点贴上表征发动机内部温度的半透明贴图,另一个面上贴上一层白色半透明静态气流贴图作为气流指示,通过TextureAnimation()函数,命令静态气流贴图以指定的速度沿发动机进气道向尾喷管移动,通过调节括号内参数的大小,可以调节指示气流的速度,以配合表现发动机不同工况。由于动态贴图只会在与流道截面形状一致的面节点上移动,所以对观察者而言,气流只会在发动机内外涵流道内运动,同时由于采用了半透明的贴图,气流的流动演示不会阻挡发动机内部结构,不妨碍对发动机结构的观察。
3.2 燃烧室火焰特效
如上文所言,Vega Prime虽然自带了常规火焰效果,但不足以模拟航空发动机燃烧室内的剧烈燃烧场景。为解决上述问题,本文使用了贴图切换的方式,首先在Creator中建立两个和燃烧室截面相同的面节点,分别贴上两张大小略有差异的火焰贴图,并使之处于同一个Switch节点之下,确认该Switch节点的状态1和状态2分别对应其中一张火焰贴图,便可在MFC中通过调用setActiveMask()函数选择当前显示的火焰贴图,随着帧数刷新不停切换大小两张贴图,如此便通过两张不同大小的静态火焰贴图的高速转换,配合Vega Prime中动态添加的照明效果,可以模拟燃烧室内的火焰的闪烁、燃烧效果。
3.3 加力火焰特效
对于小涵道比涡扇发动机,其低压涡轮后通常带有加力燃烧室,当加力接通时,高速燃气从尾喷管喷出,形成加力火焰。为模拟加力火焰的动态效果,本文通过叠加多个Vega Prime提供的vpFxParticleSystem粒子特效类[5],实现加力火焰的模拟。通过调用vpFxParticleSystem类的函数,可设置一组粒子群,并自定义其流动速度、方向、数量和颜色。建立加力火焰特效的具体方法为:首先对vpFxParticleSystem类对象调用setScale()函数和setMaxNumParticles()函数,对粒子群的形状重新定义,并增加粒子密度,使其具备加力火焰的外型特征。由于同一个vpFxParticleSystem类的对象只能设置一种颜色,为了更真实地展示加力火焰的红色外焰和白色内焰特征,本文建立了3个大小不同的pFxParticleSystem类对象,其中最大和最小的粒子群分别设为红色和白色,中间以黄色过渡,形成逼真的动态加力火焰特效。
4 结束语
本文使用Creator建立了OpenFlight格式的航空发动机三维模型,通过Vega Prime与MFC的联合编程实现了发动机工作状态的动态视景仿真。并结合模型特殊节点设计和MFC程序调用,对发动机内的气流特效、燃烧室火焰特效和加力火焰特效提出了新的视景仿真实现方法。
【参考文献】
[1]赵琳.航空发动机教学实验视景仿真系统[D].西安:西北工业大学,2007.
[2]陈慕春,张卫,李洪栋.基于Creator 的虚拟航空仪表建模技术[J].航空计算技术,2011(7):75-77.
[3]胡锌楠,于劲松.基于MFC编程框架的Vega Prime软件集成技术的研究[J]. 系统仿真学报,2009,21(14):4291-4294.
[4]Vega Prime Programmers Guide. Version 2.2.1.MultGen-Paradigm Inc.2008[Z].
[5]Vega Prime Special Effect Guide. Version 2.2.1.MultGen-Paradigm Inc.2008[Z].
[责任编辑:杨玉洁]