飞机三维仿真回放系统的设计

2011-10-20 07:20河南工程学院陶斌
河南科技 2011年8期
关键词:全景图数据结构仪表

河南工程学院 陶斌

许昌市魏都区人力资源和社会保障局 梁

飞机三维仿真回放系统的设计

河南工程学院 陶斌

许昌市魏都区人力资源和社会保障局 梁

飞机三维仿真回放系统的设计主要集中在飞机飞行参数的分析和处理上。目前,大部分飞机的三维仿真回放系统主要是简单的二维模拟,不能逼真地再现飞机的飞行过程。本文,笔者设计的飞机三维仿真回放系统在现有系统的基础上,进行了大幅度的改进,新系统不但可以下载、处理和分析飞行的参数和数据,还可以使用3DMAX和OpenGL软件实现飞机的飞行姿态和仪表的三维真实回放。

一、系统结构

根据实际需要,本系统的功能主要包括译码、数据分析、三维回放和系统文件管理4个部分,系统数据流如图1所示。

1.译码。将飞机飞行的数据记录文件中保存的各种飞行参数值按照规定的文件格式读出,并根据相应的计算公式把记录数据转换为飞机的工程数据。在数据的译码过程中,首先会修改错误的数据,然后根据参数工程值计算出飞机的航迹曲线和高度曲线,并判断是否有事故发生。

2.数据分析。将参数的工程数据以曲线、报表、极值和异常数据的形式提供给用户来进行分析和研究。

3.三维回放。对飞机外部的飞行姿态和飞机内部的驾驶舱和各种仪表进行三维回放。在回放过程中用户可以进行大量的交互操作,如内外部的切换、缩放、移动、选择以及场景的漫游等。此外,由于采用了浮动窗口和辅助窗口使得用户不但可以在不同的回放方式之间切换移动,还可以在分析系统和回放系统之间任意切换移动。整个飞行过程可以按照时间的顺序来播放,用户可以任意地进行前进、后退和暂停等操作。

4.系统文件的管理。主要包括基于数据库模型文件的修改、转移、删除和查找等操作。根据用户对使用权限的设置,该管理模块可以有效地管理系统的相关数据,提高系统的安全性和有效性。

二、模型的建立、读取与绘制

1.模型的建立。飞机三维仿真回放系统中的模型主要分为3种:第1种是形状结构比较复杂,但在回放过程中不发生变化的模型。如飞机、仪表、仪表板等模型。由于这些模型要求具有较强的真实感,所以根据真实飞机的仪表板模型或照片,利用目前市场上成熟的三维制作软件3DMAX来制作,并保存为3ds文件格式。第2种三维物体形状结构比较简单,是可以直接利用OpenGL的图元生成函数和纹理映射函数来建模的模型。第3种是根据机场的真实场景和飞机飞行过程中周围不断变化的景物进行建模的模型。

2.模型的读取。对于机场的真实场景,可以利用计算机增强现实技术对获取的图像素材进行图像处理并快速生成机场的全景图,在飞机的起降过程中,可以根据飞机的飞行速度实时地进行同步播放,并且支持多个视角的切换。对于飞行过程中周围的景物,可根据清晨、正午、黄昏和夜晚这4个时间段,采集图像素材并生成全景图,这样可以在进行场景漫游时,不至于过于单调,从而失去回放的真实感。

3.模型的绘制。根据要求制作的3ds文件需要定义一些相应的数据结构和存放这些数据结构的数组,然后读取文件将数据填入相应的数据结构中,最后将这些数据结构组合后形成输出数据结构,它们将在绘制程序中被使用。在系统中根据3ds文件格式生成的数据结构有摄像机、光源、几何实体、实体纹理和坐标变换。3D对象的绘制主要是由C3Dobject中的Draw3dsObject()函数来完成的,对象的外部性质是则是采用三角形来近似。由于全景图的播放需要与飞行速度相同步。所以,为了能够更好地实现同步,本文,笔者采用图像分块和算法压缩全景图的策略来完成,即将图像划分成相同尺寸的子图,并分别压缩,依次存放在不同的文件中,在生成视图时根据时间顺序读取一定数量的连续子图,然后对子图解压缩并进行投影,最终生成全景图。子图划分的尺寸和读取的数量与飞行速度的关系由相应的算法进行处理。

三、系统生成

1.模型动画生成。在经过模型建立和读取以后,接下来的步骤就是生成动画了。该系统主要是利用时间来驱动模型运动。具体采用了VC中的定时器函数来实现,即用SetTimer()函数来建立一个定时器,在OnTimer()函数中定义模型的运动。利用飞行参数来驱动模型以及控制模型和场景的变化,即由定时器定时的驱动程序读取当前时间的飞行数据,并将数据和场景相结合动态地绘制出来,从而达到动画的效果。在该系统中生成的动画主要有飞行姿态、仪表板、各种仪表、二维轨迹、三维轨迹和全景图等。

2.使用OpenGL构建系统。为了实现飞行姿态的回放,首先需要获得当前时间飞机的飞行参数值,主要有飞机飞行的俯仰角、航向角和倾斜角等和机身震动的法向过载、侧向过载和纵向过载。然后根据这些数据,利用OpenGL中的glRotatef()旋转函数,通过旋转机身来体现当前飞行中的角度变化。同理,利用OpenGL中的glTranslatef()平移函数和glScalef()缩放函数,通过在X、Y、Z轴移动或是缩放飞机位置来体现当前飞机的飞行模拟。具体代码如下所示:

if(m_nState < 0)

3.播放速度匹配。在飞机的起降和飞行回放过程时,利用算法对读取到的飞机飞行速度与全景图的播放速度进行匹配,从而实现与背景播放速度的同步。同时,为避免跳跃现象的产生,还应在相邻帧之间进行线性插值,使仿真效果更为平滑,具体代码如下所示:

4.增加音响效果。在模拟飞机内部仪表的回放时,由于仪表指针和其他部分元件是分开建模的,所以在进行仪表回放时,只有仪表针随着数据变化而运动,而仪表的其他部分不进行运动。该系统还给飞机驾驶舱中的仪表配上各种真实的音响效果,这样就进一步地增加了使用者身临其境的真实感。

5.增加三维效果的其他手段。在该三维回放系统中,还可利用其他手段进一步来体现三维效果,使回放更加生动。例如,使用粒子系统实现了飞机尾焰的模拟,使用阴影技术生成各种物体的阴影,使用BMP图像作为纹理文件以突出真实的纹理效果等等。为了使用户能够更好地使用该系统,系统还提供了一些交互的功能。主要包括对象的选取、反馈、选取后的缩放、平移操作以及飞机内部和外部的场景漫游等。这些功能主要是基于OpenGL软件来实现的。例如,对象选取主要是利用了OpenGL中的名字堆栈来实现的,利用OpenGL中的gluLookAt()函数来实现场景漫游。

本文,笔者设计了1种飞机三维仿真回放系统,利用3DMAX和OpenGL软件及计算机增强现实技术对现有回放系统作出了较大的改进,进一步提高了回放系统的实时交互性和三维效果。系统可以有效地回放在不同时间、不同地点和不同环境下飞机的飞行状况,基于多窗口显示的设计也有效地满足了不同情况下的需要。因此,该系统在飞行安全问题和培训等方面,都有着十分广泛的应用前景。

猜你喜欢
全景图数据结构仪表
◆ 仪表
仪表
嫦娥四号月背之旅全景图
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
奔驰E260车行驶过程中仪表灯熄灭
高职高专数据结构教学改革探讨
环保概念股全景图
Microchip推出全新零漂移仪表放大器
TRIZ理论在“数据结构”多媒体教学中的应用
《数据结构》教学方法创新探讨