通用飞行器视景仿真系统的研究与开发2.陆军装备部航空军事代表局驻哈尔滨地区航空军事代表室,黑龙江省哈尔滨市,150066)摘要:本文针对不同的半物理仿真试验台视景仿真系统无法兼容的问题,运用3DSMAX 进行模型的勾画和渲染以及数据类型转换,运用Unity3D进行模型素材集成以及和外围设备的通讯,使用的编程语言为C#,与主系统的交互采用TCP/IP的UDP协议,设计了一款通用飞行器视景仿真系统。
避免了不同飞行场景不同飞行器间匹配时的重复设计问题,降低了研发成本,缩短了研制周期,并且提高了系统集成度,现已在Y12F型机和Z9型机的半物理仿真试验台中成功应用。
实现了不同飞行场景和飞行器模型间的切换,并拥有多重视角变换功能,包含晴、雨、雪、雾四种天气,提高了视景仿真系统的通用性,对于飞行器视景仿真系统的设计具有指导意义。
关键词:视景仿真;Unity3D;飞行器;3DSMAX;三维建模Research and development of generalaircraft visual simulation systemFubo, Liuchang, Wangwen( Hafei Aviation IndustryCo.,Ltd,Haerbin,Heilongjiang,150066,China)Abstract:This article aims at the incompatibility of visual simulation systems ofdifferent semi-physical simulation test beds,uses 3DSMAX to sketch and render the model anddata 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 andZ9.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,snowand fog,it improves the universality of visual simulation system and has guiding significancefor 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 GameObjectUnity3D是一个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 视角移动和位置移动在自由视角、双屏视角和飞手视角时,需要控制鼠标进行视角移动,控制键盘进行观察者位置移动。