FlightGear飞行模拟器中创建新飞机的方法

FlightGear中创建新飞机粗略地分成四步:创建飞机的3D模型,创建飞机的飞行动力学模型,创建飞机操作动画,实现飞机各子系统。具体而言,又可分成两个主要的开发领域:飞行动力学模型开发和飞机3D模型开发。

飞机3D模型开发

主要包括飞机外形、驾驶舱的3D模型开发,为飞行动力学模型设计的动画,声音等。

加载飞机模型

通过OpenSceneGraph,FlightGear支持许多不同的3D文件格式,包括VRML1,AC3D,DXF等等。 但是,.ac是大多数FG模型中使用的标准。

主FlightGear属性树中的属性/ sim / model / path控制将加载的模型; 它需要一个字符串值,从$ FG ROOT给出模型的相对路径。

加载新模型的最简单方法是使用–prop:命令行选项在启动时设置属性; 例如,要使用已安装在$ FG_ROOT / Models / my-cessna.ac中的3D飞机模型,您可以像这样调用FlightGear(在类Unix系统下):

1
fgfs --prop:/sim/model/path=Models/my-cessna.ac

(注意:通常模型使用的所有纹理必须出现在同一目录中。如果my-cessna.ac使用纹理cessna01.rgb和cessna02.rgb,你还应该在$ FG_ROOT / Models /中安装这些纹理。

如果要将3D模型永久设置为飞机的默认值而不是在命令行上指定,则需要编辑飞机设置文件。 在$ FG_ROOT / Aircraft /目录中有一系列以-set.xml结尾的文件,例如c172-set.xml,dc3-yasim-set.xml和beech99-uiuc-set.xml。 当您使用–aircraft选项启动FlightGear时,它会从其中一个文件中读取属性; 例如

1
fgfs --aircraft=dc3-yasim

将$ FG_ROOT / Aircraft / dc3-yasim-set.xml中的属性加载到主FlightGear属性树中。 这些文件与$ FG_ROOT / preferences.xml和FlightGear保存文件具有相同的XML属性列表格式。 对于任何单机类型,可能有许多具有不同启动条件,声音,面板,3D模型等的XML文件,因此您最好复制现有的,重命名它,然后更改模型内部路径元素内的值SIM卡:

1
2
3
4
5
6
7
8
<PropertyList>
<sim>
<model>
<path>Models/my-cessna.ac</path>
<texture-path>./Textures</texture-path>
</model>
</sim>
</PropertyList>

飞机动力学模型开发

FlightGear主要使用JSBSim 和 YASim两个开源的飞行动力学模型,也有极少数使用UIUC飞行动力学模型。

YASim

FDM是控制模拟器内飞行物理的数学模型。 物理3D飞机模型与飞行动力学无关 - 实质上它只是一张要看的图片。 这是FDM决定模型如何飞行。

为何选择YASim? YASim使用飞机的几何形状来生成基本飞行特征。 虽然这表明了一种“现实的”或开箱即用的方法,但在获得接近现实主义的结果之前,这只是一种粗略的近似,需要进行大量的调整。 如果您的飞机有稳定的飞行数据,例如风洞数据,或者您希望最终生成超逼真的模拟,那么JSBSim可能是更好的方法。 如果你缺乏这样的数据但是知道飞机的几何形状并且能够获得与真实飞行员相同的飞行特性和限制,那么YASim可以提供足以满足大多数模拟需求的解决方案。

JSBSim

JSBSim是一个开源飞行动力学模型(FDM)软件库,用于模拟航空航天飞行器的飞行动力学。 该库已被纳入飞行模拟软件包FlightGear和OpenEaagles。 它也可以从一个小型独立程序调用,以创建批处理模拟工具。 JSBSim自1996年以来一直在开发和使用,并且已经构建在当今使用的所有最流行的平台上,包括运行Linux,Macintosh和Microsoft Windows操作系统的平台。 JSBSim是用C ++编写的,使用XML配置文件。

飞机模型开发规范说明

规则和指导

  • FlightGear中的所有图像的大小应为2的幂(例如64 * 64,128 * 256或16 * 1024)。大多数计算机无法处理大于4096像素的纹理。从FlightGear 1.9开始,图像不再需要以.rgb格式保存。现在.png是FlightGear开发人员中最常用的.png。

  • 请注意,我们在代码中使用空格,一些开发人员使用相应的选项卡,以使我们的代码易于(呃)阅读。每一行开始一个新标签,我们按空格键一次,这样你就可以得到一种楼梯。只要您在所有文件中始终如一地使用它,使用何种方法并不重要。但是JSBSim FDM使用的XML文件必须使用空格而不是制表符。

  • 在大多数操作系统上,文件名和目录区分大小写。 Windows不区分大小写,因此当您在Windows计算机上进行开发时,您不会发现任何问题。在其他操作系统上,“波音”和“波音”之间存在差异。由于FlightGear用于多个平台,请确保您的代码正确使用大写字母!

目录结构说明

创建一个新的飞机模型,应该在$FG_ROOT/Aircraft/路径下创建文件夹,以飞机名称命名。例如在$FG_ROOT/Aircraft/路径下创建一个Su30的文件夹,开始构建Su30飞机模型。在飞机根目录下,其目录结构如下:

  • -set.xml file

描述飞机依赖关系的最重要文件是aircraft-set.xml文件。

  • .xml file (FDM)

该文件包含飞机的整个(或部分)飞行动力学模型。有YASim、JSBSim、UIUC三种不同的飞行动力学模型,他们都有自己的优缺点。

由于数据有限,YASim通常被认为是最好的方式。 当您访问真实的风洞数据和/或需要更多灵活性时,JSBSim可能是更好的选择。

  • Engines/ directory

仅适用于JSBSim飞机。 在此目录中,存储引擎和推进器/螺旋桨文件。

  • Models/ directory

该目录包含所有与模型相关的文件; 例如纹理,模型和动画文件(.xml)。 在-set.xml文件中,我们将路径设置为一个.xml文件。 该文件应链接(间接)到飞机所需的每个其他模型文件(包括可能的3D驾驶舱)。 整个飞机可以建模为一个文件,但大多数开发人员更喜欢拆分。 例如,驾驶舱可以由几个文件构建,每个文件只存在一个仪器或面板。 这样很容易(重新)移动飞机的某些部件。 您可以像这样设置模型文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<PropertyList>

<path>Aircraft.ac</path>

<model>
<name>Cockpit</name>
<path>Aircraft/.../Models/cockpit.xml</path>
<offsets>
<x-m> -5.25</x-m>
<y-m> 0.00</y-m>
<z-m> 1.30</z-m>
</offsets>
</model>

<animation>
<type>rotate</type>
<object-name>AileronLeft</object-name>
<property>/controls/flight/aileron</property>
<factor>-65</factor>
<center>
<x-m> 2.09</x-m>
<y-m>-5.50</y-m>
<z-m>-1.50</z-m>
</center>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>

</PropertyList>

cockpit.xml文件可以包含相似结构,所有工具都是单独的模型。 模型的数量不受限制,动画的数量也不限。

  • Nasal/ directory

所有针对飞机的Nasal脚本都放在此目录中,但某些系统或仪器特定的Nasal脚本除外。 如果某个Nasal脚本对所有飞机都有用(例如天气或多人相关),它可以放在$ FG_ROOT / Nasal目录中。 可以在$ FG_ROOT / Aircraft / Generic目录中找到可在多架飞机上使用的Nasal脚本(例如空中加油)。

  • Sounds/ directory

声音对于增加你实际进入模拟的感觉非常重要。 在此目录中,存储了特定于飞行器的所有声音文件。 可以在多个飞机上使用的声音(例如,点击开关或雷声)可在$ FG_ROOT / Sounds目录中找到。

  • Tutorials/ directory

FlightGears教程系统是学习如何启动飞机引擎等的有用功能。 它允许您创建一个分步教程,指导用户完成某个过程。 它甚至可以指示应按下哪些开关!

参考链接

  1. Howto:Make an aircraft,by flightgear home.
  2. Howto:3D Aircraft Models,by flightgear home.
  3. Howto:Animate models,by flightgear home.
  4. YASim,by flightgear home.
  5. JSBSim,by flightgear home.
  6. Welcome to the aircraft developer portal!,by flightgear.
  7. Howto:Creating 3D instruments,by flightgear.