通用飞行器视景仿真系统的研究与开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通用飞行器视景仿真系统的研究与开发
2.陆军装备部航空军事代表局驻哈尔滨地区航空军事代表室,黑龙江省哈尔滨市,150066)
摘要:本文针对不同的半物理仿真试验台视景仿真系统无法兼容的问题,运用3DSMAX 进行模型的勾画和渲染以及数据类型转换,运用Unity3D进行模型
素材集成以及和外围设备的通讯,使用的编程语言为C#,与主系统的交互采用TCP/IP的UDP协议,设计了一款通用飞行器视景仿真系统。
避免了不同飞行场景
不同飞行器间匹配时的重复设计问题,降低了研发成本,缩短了研制周期,并且
提高了系统集成度,现已在Y12F型机和Z9型机的半物理仿真试验台中成功应用。
实现了不同飞行场景和飞行器模型间的切换,并拥有多重视角变换功能,包含晴、雨、雪、雾四种天气,提高了视景仿真系统的通用性,对于飞行器视景仿真系统
的设计具有指导意义。
关键词:视景仿真;Unity3D;飞行器;3DSMAX;三维建模
Research and development of generalaircraft visual simulation system
Fubo, Liuchang, Wangwen
( Hafei Aviation Industry
Co.,Ltd,Haerbin,Heilongjiang,150066,China)
Abstract:This article aims at the incompatibility of visual simulation systems of
different semi-physical simulation test beds,uses 3DSMAX to sketch and render the model and
data type conversion,Unity3D was used to integrate model materials and communicate with peripheral devices, the programming language used is C#, the interaction with the main system uses the UDP protocol TCP/IP,designs a general aircraft visual simulation system.It avoids the duplicate design problem when different flight scenarios match different aircraft, reduce research and development costs , shorten the development cycle, and improve system integration, now it has been successfully applied in the semi-physical simulation test bench of Y12F and
Z9.The switch between different flight scenarios and aircraft models is realized, and has multiple view conversion function, there are four kinds of weather ,including fine, rain,snow
and fog,it improves the universality of visual simulation system and has guiding significance
for the design of visual simulation system of aircraft.
1
引言
1
随着飞行器技术的高速发展,视景仿真系统的重要性也日益凸显,需求也日渐多样化。
为满足不同使用者的不同需求,本文研究开发了一款可进行机型切换和飞行场地切换的并伴
有多种天气的通用飞行器视景仿真系统。
本文主要从以下几个方面进行论述:
1.三维视景建模工具的选择
目前常用的三维建模工具主要有3DSMAX、Maya、Unity3D、Multigen Creator、Lightwave 3D。
现对这些三维建模软件进行说明和选择。
1)3DSMAX,3DSMAX由Discreet公司开发,是一款基于PC系统的3D建模渲染和制作
软件。
首先开始运用在电脑游戏中的动画制作,后更进一步开始参与影视片的特效制作。
在
国内拥有最多的使用者,便于交流,教程也十分丰富且容易上手,现多被用于动画及游戏的
三维模型创建。
2)Maya,Maya软件是Autodesk旗下的著名三维建模和动画软件,可以大大提高电影、电视、游戏等领域开发、设计、创作的工作流效率,同时改善了多边形建模,通过新的运算
法则提高了性能,在建模、动画、渲染和特效方面都有使用。
3)Unity3D,Unity3D由Unity Technologies公司开发的一个让作者轻松创建三维视
频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型开发工具,是一个全
面整合的专业游戏引擎,近些年在视景仿真方面应用颇多。
4)Multigen Creator,Multigen Creator拥有针对实时应用优化的OpenFlight数据
格式以及多种专业选项及插件,能高效、最优化地生成实时三维数据库,与实时仿真软件紧
密结合,在模拟训练、城市仿真、交互式游戏及工程中应用颇多。
5)Lightwave 3D,Lightwave 3D由美国New Tek公司开发,这是一款主要应用于三维
动画制作的软件,性价比很高,功能强大。
基于光线追踪、光能传递的渲染模块,使得它有
极高的渲染品质。
主要用于电影、游戏、动画、广告等领域。
[1]
本文选用的软件为3DSMAX和Unity3D。
其具有鲜明简洁的操作界面,且可以使用C#、JAVA、Boo语言和其他系统进行数据交互及控制,在互联网上拥有大量的素材库,并具有操
作简单易上手等特点。
2.系统设计
2.1 Unity3D重要组件介绍
2.1.1 GameObject
Unity3D是一个Component-Based的引擎,所有物体都是GameObject。
GameObject是
视景场景中真实存在,而且有位置的一个物体。
通过将Component附属于GameObject来控
制GameObject的各种属性。
2.1.2 Camera组件
Camera是摄像机组件,只有添加摄像机组件,才可以看到视景仿真中的物体。
场景中
至少需要有一台摄像机,也可以使用多个摄像机从不同视角展现物体状态。
其常用的属性有Clear Flags、Viewport Rect和Depth。
2.1.3 Light组件
Light是光源组件,能够实现场景内的照明,如果缺失,场景内则会变得十分灰暗。
常
用的光源类型有:方向光源、点光源、聚焦光源、区域光源等。
其常用的属性有Type、Range、Spot Angle和Intensity。
2.2视景仿真关键技术
2.2.1飞行器模型设计
在3DSMAX中进行飞行器模型设计时,需要根据不同飞行器结构数据、特征点设置放样点;勾画与特征线吻合的放样线;创建与其形状一致的放样面。
并将日后可能用于操作的活
动部件形成单独构件,并使其拥有以自己几何中心为原点的坐标系,例如旋翼、尾桨、机轮、方向舵、升降舵、副翼、襟翼等。
生成的模型须为FBX格式,连带贴图一并进行存储。
下图为利用3DSMAX设计Y12F飞行器的效果图:
图1 Y12F模型设计
2.2.2 机场模型设计
目前常用的机场模型建立有3种途径:
1)在网上找素材,导入Unity3D。
2)利用模型构建软件自行绘制。
3)利用卫星图和高程数据进行拟合。
本视景仿真系统采用了第1种和第3种途径。
将在网上收集到的成都双流机场、烟台蓬莱机场和上海虹桥机场导入素材库。
将基于worldimagery卫星图与asterV2高程数据库制作,并在此基础上做精细化处理,添加机场附近的房屋等建筑的攀枝花机场也导入素材库。
2.2.3 输入输出数据
端口数据传输可以完成程序之间的数据交流。
Unity3D提供了一个可以处理网络数据服务的类NetWork。
Socket是一种通用的网络数据传输方式,通过绑定IP地址和端口实现数据的传递。
Socket服务可以用C#、C++、C、PHP、Java等语言开发,可以实现不同语言程序间的数据传输。
[2]本视景仿真系统与外界的信息交互模块采用TCP/IP的UDP技术,通过IP 地址和端口配对进行匹配,代码如下:
server = new Socket(AddressFamily.
InterNetwork, SocketType.Dgram, ProtocolType.Udp);
ipep = new IPEndPoint(IPAddress.Parse
("127.0.0.1"), 8844);
其中"127.0.0.1"为IP地址,可以实现同一台电脑软件间的互联,如希望匹配其他电脑可将IP地址改为"192.168.2.2"之类,8844为端口号。
2.2.4 不同场地机型间切换
本视景仿真系统的素材库中含有直升机、定翼机、倾转旋翼机和滑翔机10余种机型,成都双流机场、烟台蓬莱机场、上海虹桥机场和攀枝花机场四个可选机场,均可在载入画面中进行选择。
在Unity3D的视景仿真载入画面中添加两个UI-Dropdown控件,并为其分别赋予不同机型选项和不同机场选项,当某一个机型和机场被选中时,使其Mesh Render组件有效,其余均置成无效即可,即只有需要的机场和机型能够显现,其余均被隐藏。
图2 各种飞行器模型列队
2.2.5 坐标系和视角转换
Unity3D中默认坐标系为左手系,与飞行器常用坐标系不一致。
故需在数据输入时进行坐标系转换,转换后的坐标系为右滚、抬头、右偏为正,向北、向天、向东为正。
本系统设置了多种飞行器观察视角,主要包括尾随视角、45°斜视、鸟瞰、双屏、飞手视角以及自由视角。
视角的设计依托于Camera组件,可以通过调整Camera组件与飞行器的相对位置,形成期望的视角。
视角间可以自由转换,主要是通过改变Camera组件的depth 属性进行实现。
通过按压键盘上的C键转换到(自由视角)视角1的代码如下:
if (Input.GetKeyUp(KeyCode.C))
{sj1.GetComponent().depth = 3;
sj2.GetComponent().depth = -3;
sj3.GetComponent().depth = -3;
sj4.GetComponent().depth = -3;
sj5.GetComponent().depth = -3;
sj6.GetComponent().depth = -3;
}
2.2.6 视角移动和位置移动
在自由视角、双屏视角和飞手视角时,需要控制鼠标进行视角移动,控制键盘进行观察者位置移动。
位置移动代码如下:
if (Input.GetAxis("Horizontal") != 0 && Input.GetKey(KeyCode.LeftControl) == false)
{double dx = Input.GetAxis("Horizontal") * sensitivetyKeyBoard * transform.right[0] * Time.deltaTime;
double dy = Input.GetAxis("Horizontal") * sensitivetyKeyBoard * transform.right[2] * Time.deltaTime;
double dz = 0;
FreeModePosition += new Vector3((float)dx, (float)dz, (float)dy);
transform.position = FreeModePosition;}
视角移动代码如下:
if (Input.GetMouseButton(1))
{transform.RotateAround(transform.position, transform.right, Input.GetAxis("Mouse Y") * sensitivityMouse * -1.0f);
transform.RotateAround(transform.position, new Vector3(0, 1, 0), Input.GetAxis("Mouse X") * sensitivityMouse);}
2.3细节处理
2.3.1 活动部件
飞行器的姿态变化主要依靠旋翼、尾桨、方向舵、升降舵、副翼、襟翼等活动部件的改变,从而改变升力的方向,进而产生姿态的变化。
为提高视景仿真逼真度,这些活动部件也需要在姿态变化的同时,随之运动。
主要运动方式为位置平移和绕轴旋转,位置平移通过改变物体Transform的Position属性可实现;绕轴旋转通过改变物体Transform的Rotation 属性可实现。
旋翼旋转的代码如下:
this.transform.Rotate(0, 360 * 3 * Time.deltaTime, 0, Space.Self );
2.3.2 飞行器运动
视景仿真中飞行器的运动主要依靠从外界不同飞行器的6自由度飞行动力学模型获取姿
态角和位移量等信息,在视景仿真中进行相应的变化:当收到东北天位移量时,通过改变飞
行器Transform的Position属性,进行位置变化;当收到俯仰角、横滚角、航向角变化时,通过改变飞行器Transform的Rotation属性,进行姿态航向的变化。
主要获取参数定义如下:
Roll:横滚角
Pitch:俯仰角
Yaw:航向角
X_N:北向位移量
X_E:东向位移量
Z:高度位移量
2.3.3天气系统
飞行器三维视景仿真软件中的天气效果,采用UniStorm插件制作,包含晴、雨、雪、
雾四种天气,以及24小时的太阳光照效果。
[3]
1)光照:通过改变light组件的方向与灯光强度,实现模拟不同时间段的太阳光照射。
2)能见度:通过设定不同天气fog mist的百分比,调整天空盒子(skybox)中的不透
光粒子浓度,模拟仿真不同天气下的能见度。
3)天气粒子效果:部分天气(雨、雪)可通过粒子系统生成不同的动画效果,模拟场景
中的雨雪颗粒。
以上功能均在Unity3D中的天空盒子(skybox)组件中编辑。
3.系统应用
本系统可应用于航空模拟器设计、半物理仿真试验台研制、控制律设计展示以及飞行员培训教学等领域。
目前本系统已应用于Z9型机的半物理仿真试验台研制中,Z9型机在攀枝花机场进行仿真试飞展示画面如图3所示:
图3 Z9型机仿真试飞视景
生成的曲线如图4所示:
图4 某型机仿真飞行曲线
由图3和图4对比可知,图3视景仿真中直升机的姿态和图4飞行曲线中的姿态航向角基本一致,达到系统设计的预期效果。
本系统亦应用于Y12F型机的半物理仿真试验台研制中,通过改变机型、场地和视角,进行Y12F飞行器在烟台蓬莱机场进行试飞,并以双屏视角进行展示,如图5所示:
图5 Y12F型机仿真试飞视景
4.结束语
本文主要阐述了一款通用飞行器视景仿真系统的设计过程:运用3DSMAX进行飞行器模
型的勾画和渲染以及数据类型转换;运用Unity3D进行素材集成、整体设计以及与外界交互。
主要从三维视景建模工具的选择、系统设计以及系统应用进行介绍,并对Unity3D重要组件、视景仿真关键技术和系统细节处理进行了详细论述。
本文设计的视景仿真系统应用前景广泛,可用于航空模拟器设计、半物理仿真试验台研制、控制律设计展示以及飞行员培训教学等领域,在高速发展的航空技术领域中占有一席之地。
参考文献:
[1]基于Vega Prime的飞行模拟器视景仿真系统的研究与实现孙起帆中北大学 2020.
[2]基于Unity的无人艇三维视景仿真技术研究华隽杰中国船舶科学研究中心 2021
[3] UniStorm Documentation
作者简介:
付博,男,1990年3月,研究方向:飞行控制和半物理仿真技术,哈尔滨飞机工业集团有限责任公司,黑龙江省哈尔滨市平房区友协大街15号,150060,Tel:136****7715,*************
E-mail:136****************
1。