FlightGear飞行模拟器

标题: 基于XML的系统配置及改进技术 [打印本页]

作者: 胡秀伟    时间: 2012-4-13 21:48
标题: 基于XML的系统配置及改进技术
本帖最后由 胡秀伟 于 2012-4-13 21:51 编辑

~整理资料,仅供参考,如有纰漏请大家指正,一起研究~
FG的架构图
1引言
在FlightGear软件体系中使用了大量的XML文档作为配置文件,用于定义软件的运行环境,外界数据(云层、地形等),以及各类飞行器参数定义等。本节从XML语言的发展和规则入手,说明了解析XML文档的具体过程和利用XML文件配置FlightGear的平显系统参数的具体方法。介绍内核轻便、操作简单的miniXML解析库,并利用miniXML改进了FlightGear内的XML解析方法。
2基于XML的配置文件2.1XML语言简介
XML的全称是Extensible Markup Language,意为可扩展标记语言,与HTML一样,是标准通用标记语言(Standard Generalized Markup Language,SGML)的一个子集,是W3C为解决HTML扩展性不强、交互性差和语法定义不强等缺点而制定的。它将数据和程序分开,以开放的、自我叙述的方式定义了数据结构,在描述数据内容的同时能突出数据的结构,进而体现出数据与数据间的相互关系。
XML是一种元标记语言,其文档由XML元素组成。每个元素需要有开始标签和结束标签,开始标签和结束标签之间的信息为该元素的内容。标签表示的是数据的含义而不是数据的显示形式,并且可以由用户自由定义元素的名称,使其具有特定的含义,方便人们理解作者的意图。
每个XML文档都是由XML声明开始,一般情况下XML文档的第一行便是XML声明,例如:<?xml version ="1.0"encoding="UTF-8"?>,声明指定了文档中使用的XML版本和字符集。XML最常用的标签由包围在小于号(<)和大于号(>)之间的文本组成,例如<tag>。起始标签(start tag)表示一个特定区域的开始,例如<start>;结束标签(end tag)标志着该区域的结束,除了在小于号后面紧跟着一个斜线(/)外,其余和起始标签基本一样,例如</end>。XML还定义了标签的属性(attribute),他们是定义在小于号和大于号之间的值,例如<rotor type="bool">true</rotor>中type的属性。
XML语言的优缺点如下表所示。
XML语言的优缺点

未命名02.JPG (41.6 KB, 下载次数: 1171)

未命名02.JPG

作者: 胡秀伟    时间: 2012-4-13 21:51
本帖最后由 胡秀伟 于 2012-4-13 21:52 编辑

2.2 XML 标准配置文件
在 FlightGear 系统中使用的 XML 文件以声明<?xml version=" 1.0"?>开头,此行之前不能有空行或字符,根元素为 PropertyList,其数据形成一个树形层次的结构。标准配置格式如下:
<?xml version="1.0"?>
<PropertyList>
<orientation>
<heading-deg type="double">0.0</ heading-deg >
<pitch-deg type="double">0.0</ pitch-deg >
<roll-deg type="double">0.0</ roll-deg >
</ orientation >
</PropertyList>
其中,PropertyList 是根元其中,PropertyList 是根元素,它存在一个子元素 orientation,即方向属性,方向属性自身有三个子元素 heading-deg,pitch-deg 和 roll-deg,表示直升机的航向角、俯仰角和滚转角,
type="double"表示值为“双精度”型实数,三个方向的值都设置为 0.0。
3 XML 配置文件的解析
对 XML 文档的解析以及参数的管理,需要建立树状的数据结构,各元素的属性值作为属性树的一个节点,节点之间形成父子、兄弟关系。在解析文档时,根元素对应属性树的根节点,每读取一个元素,就生成一个节点,遇到子元素,就生成逻辑上的子节点与之对应。对节点操作,首先需要遍历 XML 属性树,查找到相应的节点,然后进行读取属性、修改、删除、保存等操作。如下例。
< PropertyList >
<startup>
<width type="int">100</ width >
<height type="int">50</ height >
</startup>
<hud>
<path> Huds/default.xml</path>
<y-offset>190</y-offset>
</ hud>
< /PropertyList >
XML 示例说明如下:
(1) 读取起始标签< PropertyList >,生成根节点 PropertyList。
(2) 读取标签< startup >,生成节点 startup,作为根节点的第一个子节点。
(3) 读取标签< width >,生成节点 width,作为 startup 节点的子节点。读取该节点标签属性 type,记录其属性为 int。读取 width 节点的值为 100,数据类型为 int 型。
(4) 遇到结束标签< /width >,返回到节点 startup 处,读取标签< height >,生成 height 节点,作为 startup 节点的子节点。
(5) 遇到结束标签< /startup >,返回根节点 PropertyList 处。
(6) 读取标签< hud >,生成 hud 节点,作为 PropertyList 根节点的第二个子节点。
(7) 分别读取标签< path >和< y-offset >,生成 path 节点和 y-offset 节点作为 hud 节点的两
个子节点。遇到结束标签时,返回 hud 节点处。
(8) 遇到结束标签< /PropertyList >,完成整个文档的解析。经过以上步骤的解析,最终将
生成如下图所示的属性树。

未命名03.JPG (6.33 KB, 下载次数: 1139)

未命名03.JPG

作者: 胡秀伟    时间: 2012-4-13 21:54
胡秀伟 发表于 2012-4-13 21:51
2.2 XML 标准配置文件
在 FlightGear 系统中使用的 XML 文件以声明开头,此行之前不能有空行或字符,根元素 ...


根据上例,可以总结出 FlightGear 软件体系中解析 XML 文档的主要流程,如图下所示。

未命名04.JPG (13.99 KB, 下载次数: 1030)

未命名04.JPG

作者: 胡秀伟    时间: 2012-4-13 21:56
在解析开始时,首先检查 XML 文档的文件头,对于不符合标准规范的 XML 文档,是无法解析的。在解析 XML 节点时,首先读取文本标签,记录下文本标签的属性,然后判断是否需要记录该标签的属性,如果不需要记录属性值,则跳过该步骤。保存标签的属性值后,将属性值写入程序参数中。接着开始对下一节点的解析,重复以上步骤,直至 XML 文档解析结束。
了解xml脚本文件的简单结构,估计大家就知道建立简单模型的方法了。xml文件标记了一些程序运行需要的信息,它本身不会去执行,它的执行方式是被调用。xml为程序增添了扩展性,比如我们有时会在xml文件里调节游戏手柄的按键,这样就使程序更加灵活。以f18为例,首先说f18-set.xml.

作者: 胡秀伟    时间: 2012-4-13 21:56
3.1解析实例(f18-set.xml)
     FlightGear在导入模型的时候会首先找这个文件,因为该脚本里定义了模型文件的位置及其它相关信息,打开脚本文件:
     首先是:
    <description>F-18 Hornet Royal Canadian Air Force</description>
          <author>Fabrice Kauffmann</author>
          <status>Early production</status>
          <flight-model>jsb</flight-model>
          <aero>f18</aero>
     从英文标记描述可看出这部分定义了一些基本信息,其中最重要的是<flight-model>jsb</flight-model>,因为此句定义了气动模型为“jsb”。
    接下来:<splash-texture>Aircraft/f18/f18-splash.rgb</splash-texture>      
                 飞机贴图文件位置
                 <path>Aircraft/f18/f18-sound.xml</path>
                  声音控制脚本位置,f18-sound.xml里面定义了声音文件位置,格式为“.wav”
                 <path>Aircraft/f18/Models/f18.xml</path>
                  模型控制脚本位置,待会儿会具体说f18.xml文件
                 <path>Aircraft/f18/Panels/f18-2d-panel.xml</path>
                  面板(即机舱视角)控制脚本,里面主要定义了贴图文件位置,这些贴图文件是在建模时贴上去的
                 <path n="1">Aircraft/f18/f18-hud.xml</path>
                 飞机HUD文件
     这些只是最简单的配置,主要是了解xml的作用,还有很多实现其它功能复杂的配置,包括与Nasal的配合等。因本人才疏学浅也不是很了解编写方法和作用,实际上只是FG为这些标记预留了处理接口而已。
     下面说位于Models文件夹下的f18.xml,(这里要声明一下:与Models同级目录下也有一个f18.xml脚本,里面定义的内容很复杂,所以还请牛人指教小弟一下,该文件不可缺)首先看里面的内容,以这样一部分结构为例:
      -<animation>
          <type>rotate</type>
          <object-name>RudderLeft</object-name>
          <property>surface-positions/rudder-pos-norm</property>
          <factor>30</factor>
        -<axis>
          <x1-m>4.46901</x1-m>
          <y1-m>-1.03207</y1-m>
          <z1-m>0.670875</z1-m>
          <x2-m>4.84972</x2-m>
          <y2-m>-1.39064</y2-m>
          <z2-m>1.71914</z2-m>
          </axis>
      </animation>

     对象名为:RudderLeft(<object-name>RudderLeft</object-name> ,该句定义),还记得我说过建模时飞机模型的各个对象名不可以随便取吧,就是因为在这个脚本里需要引用,脚本里定义的名称为RudderLeft,则模型里面的“左舵角”名称也应为RudderLeft,否则初始化的时候将因找不到该对象而报错。<property>surface-positions/rudder-pos-norm</property> 定义了属性的节点;后面的参数因机型的不同而不同,具体值大家需要查资料了。
     该脚本的其它内容在结构功能上与此相似,各对象名称需要与模型相对应。
     当然,脚本里不仅仅只定义了这些功能,要想了解还需深入研究啊。
     不过,了解了以上这些,构建一个不精准的模型还是可以的,FG模型文件的构建步骤也差不多是这样。
     以上是本人研究过的东西,还希望这方面的前辈帮助指正,交流。
作者: 胡秀伟    时间: 2012-4-13 21:58
f18截图....................

未命名05.JPG (71.07 KB, 下载次数: 1083)

未命名05.JPG

作者: 胡秀伟    时间: 2012-4-13 21:59
胡秀伟 发表于 2012-4-13 21:58
f18截图....................

现在正在学这块,顺便说下楼主提到的关于<animation>标签的作用:
这个标签的作用是驱动.ac文件也就是FG中标准的ac3d模型文件,也就是说让.ac文件中飞机的各个部件“动”起来,比如说着落过程中需要放下飞机的起落架,这个动作在模型中实际上是移动起落架从一个位置到另一个位置,这个动作就需要<animation>标签来完成。
说下楼主贴出来的程序中子标签的作用<type>标签是指具体的动作方式,如这里指定了rotate,就是指围绕某坐标轴旋转到一个特定的位置,FG还提供了其他几个动作,none:无改变,spin:绕某坐标轴以一定速度自转,translate:沿某轴移动。
<object-name>标签就是楼主说的飞机某部件的名称,定义在相应的.ac文件中。
<property>是为FG指定路径,FG通过该路径启动该动作。
<factor>改变状态的参数,FG会通过该参数进行比例转换。
<axis>坐标系参数。

作者: 胡秀伟    时间: 2012-4-13 22:01
3.2解析实例(HUD平显配置)
本节对FlightGear 的平显(HUD)系统配置和直升机参数配置做详细的描述。HUD(Head Up Display)是目前普遍运用在航空器上的飞行辅助仪器。平视的意思是指飞行员不需要低头就能够看到他需要的重要资讯。平视显示器最早出现在军用飞机上,降低飞行员需要低头查看仪表的频率,避免注意力中断以及丧失对状态意识(Situation Awareness)的掌握。因为 HUD 可以显著提高飞行的安全性,民航机也纷纷跟进安装。
HUD 利用光学反射的原理,将重要的飞行姿态信息投射在一片玻璃上面,它位于座舱前端,
与飞行员视平线的高度大致与成水平,投射的文字和影像调整在焦距无限远的距离上面,飞行员透过 HUD 向前方看的时候,能够将前方的景象与 HUD 显示的信息融合在一起。HUD 投射的信息主要与飞行安全有关,例如飞行速度,飞行高度,航向,高度变化速率,滚转角度等。
FlightGear 飞行模拟器中的 HUD 平显系统配置文件在$FG_ROOT \data\Huds 目录下。其中$FG_ROOT 表示为 FlightGear 的安装路径。该目录下的文件列表如图所示

作者: 胡秀伟    时间: 2012-4-13 22:01
胡秀伟 发表于 2012-4-13 22:01
3.2解析实例(HUD平显配置)
本节对FlightGear 的平显(HUD)系统配置和直升机参数配置做详细的描述。HUD(He ...


图.....................

未命名06.JPG (10.08 KB, 下载次数: 974)

未命名06.JPG

作者: 胡秀伟    时间: 2012-4-13 22:03
其中 Instruments 文件夹下的配置文件为目前 FlightGear 飞行模拟器默认使用的 HUD 系统配置文件。其余的配置文件为 FlightGear 软件 0.7 版本之前的平显配置文件,现在已经不再使用。Instruments 目录下文件列表如图所示
作者: 胡秀伟    时间: 2012-4-13 22:04
本帖最后由 胡秀伟 于 2012-4-13 22:05 编辑

图......................才cccccc

未命名07.JPG (13.3 KB, 下载次数: 687)

未命名07.JPG

作者: 胡秀伟    时间: 2012-4-13 22:06
FlightGear 飞行模拟器下,HUD 平显系统有三种不同的配置形式:其中 Delault 目录下为默认的 HUD 配置,Custom 为传统 HUD 配置,Minimal 为最简化 HUD 配置。
在 FlightGear 软件初始化后,系统会自动调用 Delault 模式下的 HUD 平显配置。因此对当前 FlightGear 平显系统的研究和改进主要针对默认模式下的配置文件。
在 delault.xml 配置文档中说明了默认模式下的 HUD 平显系统的结构组成、以及平显其他
组成部分配置文件的路径信息。其配置文件结构如图所示

作者: 胡秀伟    时间: 2012-4-13 22:08
图...................................

未命名08.JPG (13.53 KB, 下载次数: 711)

未命名08.JPG

作者: 胡秀伟    时间: 2012-4-13 22:09
默认平显配置文件结构为典型的“树”结构:PropertyList 为根节点,name 和 instruments
为两个子节点,其中 name 节点描述了 HUD 类型为默认飞机平显,instruments 节点下则包含了HUD 系统的四个组成部分,这四个节点的属性为相应的配置文件路径。结合典型的 HUD 平显界面来说明这四部分的功能。平显界面如图所示

作者: 胡秀伟    时间: 2012-4-13 22:10
图...................................

未命名09.JPG (27.38 KB, 下载次数: 732)

未命名09.JPG

作者: 胡秀伟    时间: 2012-4-13 22:12
hudladder 定义了俯仰角和滚转角在屏幕上的显示位置、显示长度和宽度,以及显示的形状、
数据跨度和精度等信息。如上图的倾角。
hudcard 定义了航向和速度等信息在屏幕上的显示位置、显示长度和宽度,以及数据跨度、
显示精度等信息。如上图中的航向和速度。
instrlabel 定义了数字信息(如经度、维度)在屏幕上的显示位置、显示长度和宽度,以及
数字显示格式等信息。如上图中的经度值和纬度值。
fgTBI 表示 Turn Bank Indicator,主要是显示直升机滚转的趋势,以表明直升机横向的稳定
状态。如上图中的滚转侧滑显示。
虽然以上四部分分别规定了 HUD 显示界面不同的功能模块,但是其 xml 配置文件的格式结构都比较接近,下面选取较有代表性的 hudcard 模块,说明 HUD 显示界面的配置。
hudcard 配置文件主要完成了 3 个功能,分别是显示位置设定、显示格式设定、图形显示设定。其功能结构如图所示

作者: 胡秀伟    时间: 2012-4-13 22:12
图.................................

未命名10.JPG (7.89 KB, 下载次数: 684)

未命名10.JPG

作者: 胡秀伟    时间: 2012-4-13 22:14
根据配置文件设定的不同功能分别说明每个设定部分的作用和原则。
作者: 胡秀伟    时间: 2012-4-13 22:14
3.2.1显示位置设定
FlightGear 飞行模拟器以 OpenGL 做为图形显示的工具,在 OpenGL 项目中,位置坐标原点(0,0)为工程项目的左下角点。
显示位置规定了该设备在屏幕上的显示位置,包括该设备在屏幕上的起始位置坐标以及 x轴和 y 轴上的长度。该设定部分的“树”形结构如图所示

作者: 胡秀伟    时间: 2012-4-13 22:15
本帖最后由 胡秀伟 于 2012-4-13 22:17 编辑

图..................................

未命名11.JPG (6.89 KB, 下载次数: 725)

未命名11.JPG

作者: 胡秀伟    时间: 2012-4-13 22:18
根据设定的位置,该设备在屏幕上的显示位置如图所示
作者: 胡秀伟    时间: 2012-4-13 22:18
本帖最后由 胡秀伟 于 2012-4-13 22:19 编辑

图.............................

未命名12.JPG (6.39 KB, 下载次数: 610)

未命名12.JPG

作者: 胡秀伟    时间: 2012-4-13 22:19
3.2.2显示格式设定
显示格式设定了该设备数据显示的格式,包括数据显示需要调用的程序函数、数据显示的最大刻度值和最小刻度值、数据显示的数值跨度、数据显示的最大刻度和最小刻度、过零显示等。其“树”结构如图所示

作者: 胡秀伟    时间: 2012-4-13 22:20
本帖最后由 胡秀伟 于 2012-4-13 22:21 编辑

图,,,,,,,,,,,,,,,,,,,,,,,,

未命名13.JPG (16.36 KB, 下载次数: 646)

未命名13.JPG

作者: 胡秀伟    时间: 2012-4-13 22:22
配置文件中<loadfn>节点规定了平显数据显示调用的函数。在描述座舱系统的程序 Cockpit中,建立如下一个通过字符串搜索调用函数的结构体,FlightGear 源程序通过解析 XML 文档可以获得该节点的值“heading”,通过该字符串指向调用函数,完成平显数据显示。
truct FuncTable {
const char *name;
FLTFNPTR func;
} fn_table[] = { { "heading", get_heading }……. }
平显中有部分变量默认使用的是英制单位,例如海拔高度(英尺)、空速(海里/时)等,这就给直观的读取飞行数据变量带来了一定的障碍。通过以上的流程可以发现,平显数据是在调用函数中完成的。例如描述海拔高度的函数 get_agl( ),其原型为:
agl = current_aircraft.fdm_state->get_Altitude( )
- current_aircraft.fdm_state->get_Runway_altitude( );
将英制单位转换为公制单位只需要进行单位转换即可达到在平显中显示公制单位的数据。修改如下:
agl = (current_aircraft.fdm_state->get_Altitude( )
-current_aircraft.fdm_state->get_Runway_altitude( ))* SG_FEET_TO_METER;
其中 SG_FEET_TO_METER 定义为 0.3048,表示 1 英尺=0.3048 米。
3.2.3图形显示设定
HUD 平显界面是由基本的矩形组成的,图形显示设定设备的矩形边框是否显示,从而完成设备的图形显示。图形显示设定的“树”形结构图如图所示

作者: 胡秀伟    时间: 2012-4-13 22:22
图.........................

未命名14.JPG (13.6 KB, 下载次数: 606)

未命名14.JPG

作者: 胡秀伟    时间: 2012-4-13 22:24
节点中的 Ticks 和 Caps 表示设备边框的显示。不同的设备的矩形框的区别在于显示时边框的圆缺不同。例如航向显示器,需要有左右边框和下边框,没有上边框,true 表示边框显示,false 则表示不显示边框。Tick 和 Cap 的具体显示位置如图所示。
作者: 胡秀伟    时间: 2012-4-13 22:24
图.............................

未命名15.JPG (9.31 KB, 下载次数: 663)

未命名15.JPG

作者: 胡秀伟    时间: 2012-4-13 22:25
4 XML 的改进
4.1 存在的不足与完善需求
FlightGear 飞行模拟器软件内部使用了大量的 XML 配置文件作为定义程序运行环境、外界数据(大气云层等),以及各类飞行器的参数定义等。可见基于 XML 的系统配置是 FlightGear软件定义环境的核心,也是保证 FlightGear 开源软件可以支持多平台的重要原因。但是由于FlightGear 飞行模拟器的开源性,导致其 XML 解析程序不够规范,例如在同一程序文件中,定义了几个不同的函数,却实现的是同一功能。XML 程序解析在 FlightGear 整体软件中有大量应用,不同的维护者利用自己封装的 C++函数去实现,显得程序十分庞大,杂乱无章,缺乏规范性。
鉴于FlightGear飞行模拟器在 XML 解析上存在的问题,可以利用全新的 XML 解析程序来替代 FlightGear 中原有的 XML 解析程序。对于全新的 XML 解析程序来说,需要满足以下几点需求:
1) 代码规模小,操作简单,内核轻便,便于多平台的移植;
2) 可以实现基本的 XML 配置文件操作,例如搜索节点、读取属性、保存节点值等;
3) 以标准 C 语言实现,程序书写规范, 体系结构完整。
miniXML 就是满足需求的一个解析 XML 文档的标准 C 语言库,它最初是 Robert为了 Gutenprint 项目而开发的,是一个操作更简单、内核更轻便的解析工具,它具有基本的配置文件操作,并且程序书写规范,体系结构完整,因此选择 miniXML 替代 FlightGear 内原有的解析 XML 模块。
4.2 miniXML 结构及解析流程
利用 VC++ 6.0 编译 miniXML 源码,生成静态链接库 mxml.lib。将 mxml.lib 和 mxml.h 文件拷贝到 FlightGear 的库目录下,在 FlightGear 的链接器属性中添加 mxml.lib,设置其路径,并在程序中需要包含以下头文件:
#include <mxml.h>
即可以在 FlightGear 软件体系中调用 miniXML 下的函数完成 XML 文档的解析。
在 miniXML 中使用 mxml_node_t 结构体对 XML 文档中的节点进行定义。其定义如下:
typedef struct mxml_node_s
{
mxml_type_t type; /* 节点类型 */
struct mxml_node_s *next; /* 同一父节点的下一个节点*/
struct mxml_node_s *prev; /* 同一父节点的上一个节点*/
struct mxml_node_s *parent; /* 父节点 */
struct mxml_node_s *child; /* 第一个子节点*/
struct mxml_node_s *last_child; /* 最后一个子节点 */
mxml_value_t value; /*节点值 */
} mxml_node_t;
Type 成员变量定义不同的节点类型(element, integer, opaque, real, text),可以在不同的节点类型的成员变量获取共用体类型的值(value)。miniXML 节点值的变量成员详见下表
miniXML 节点值的成员变量

作者: 胡秀伟    时间: 2012-4-13 22:25
本帖最后由 胡秀伟 于 2012-4-13 22:27 编辑

图......................................

未命名16.JPG (15.33 KB, 下载次数: 635)

未命名16.JPG

作者: 胡秀伟    时间: 2012-4-13 22:27
miniXML 提供了解析 XML 文档所需要的若干函数,主要函数见下表

未命名17.JPG (16.24 KB, 下载次数: 731)

未命名17.JPG

作者: 胡秀伟    时间: 2012-4-13 22:28
上表中只是平常使用比较多的函数,此外miniXML还提供了丰富的接口函数供用户调用,更详细的函数功能可以参考其官方网站。
在 FlightGear 下使用 miniXML 解析文档的大致流程如下图所示。

作者: 胡秀伟    时间: 2012-4-13 22:28
图....................................

未命名18.JPG (12.72 KB, 下载次数: 751)

未命名18.JPG

作者: 胡秀伟    时间: 2012-4-13 22:29
首先利用函数 mxmlLoadFile 装载 XML 配置文档;利用函数 mxmlFindElement 查找到所需节点,将节点的值利用结构体变量赋给程序参数;再利用 mxmlWalkNext 遍历其他的节点,改变当前节点的指针指向,重新读取下一节点的属性值,并将相应的节点值赋给程序参数;对于需要修改节点值的节点,在修改结束后,调用 mxmlRetain 保存节点值;解析全部结束后,关闭XML 配置文档。
作者: 胡秀伟    时间: 2012-4-13 22:30
以上资料的doc文档

基于XML的系统配置及改进技术.rar

398.45 KB, 下载次数: 303, 下载积分: 金钱 -2


作者: Steven    时间: 2012-4-13 22:59
你是从哪里找到这个资料的?非常有用啊!
作者: 胡秀伟    时间: 2012-4-13 23:04
Steven 发表于 2012-4-13 22:59
你是从哪里找到这个资料的?非常有用啊!

来源于互联网,服务于互联网,好东西,大家共享!
作者: zlycc2012    时间: 2012-4-16 09:56
标题: 非常好。。。请继续
本帖最后由 zlycc2012 于 2012-4-16 10:29 编辑

建议置顶。。。非常好。。。请继续
作者: wayne00000    时间: 2012-4-18 11:00
学习一下,谢谢
作者: 儒文    时间: 2012-4-19 13:44
太好了,可以空战了

作者: my5800mkk    时间: 2012-4-22 15:26
谢谢     好文章
作者: ha166    时间: 2012-4-25 10:42
好东东,收藏先,谢谢啦。慢慢学习。。。。。。。。。。。。。
作者: 墨言    时间: 2012-7-8 19:17
很重要的资料,希望楼主还能多介绍点
作者: dooake    时间: 2012-7-13 05:52
很好很专业,请问哪里有flightgear xml配置的详细手册,谢谢

作者: 漂游的风    时间: 2012-10-26 23:08
楼主真乃神人也
作者: 爱谁谁    时间: 2012-10-29 00:30
收藏了,学习下,谢啦。Flightgear有英文的帮助文档,看了费劲。。。
作者: azure_sky    时间: 2012-12-27 11:30
很受启发,感谢LZ的无私!
作者: xuge    时间: 2013-3-31 16:45
谢谢楼主!!!!!!!!
作者: kgdjszx    时间: 2013-4-2 01:34
楼主分析的真好,学习到了,感谢!
作者: SnowRestar    时间: 2013-4-2 11:45
楼主霸气威武啊,很受用
作者: agm123    时间: 2013-4-5 12:27
技术流,新手认真学习下
作者: azure_sky    时间: 2013-4-7 17:55
晕,把每个楼层都复制了下来,想仔细研究,没想到后面就有WORD版本。
作者: wwjiangyou    时间: 2013-5-20 08:59
谢谢楼主!非常有用!收藏了!!
作者: 冷太阳    时间: 2013-5-22 10:32
不知楼主对FG中自动驾驶部分的配置文件有没有关注呢
作者: chiuras    时间: 2013-5-23 22:23
学习了,希望有更多更好的类似的文章
作者: mlmlmoon    时间: 2013-6-4 15:50
哪个大神把楼主没写的那个xml的文件补充下啊!
p.s.c172是什么错误啊?仪表么?怎么弄啊?
作者: fei_ao    时间: 2013-7-6 08:52
楼主对FG中的XML研究的很透彻,但不知道实际的效果会怎么样?
作者: 北极以北的冰    时间: 2013-7-30 16:16
收藏下  看看以后会不会有用
作者: wuwell    时间: 2013-9-8 20:09
学习一下,谢谢                        
作者: my5800mkk    时间: 2013-9-14 23:51
请教”将节点的值利用结构体变量赋给程序参数“ 这个过程是在程序中什么地方实现的?
作者: kgdjszx    时间: 2013-9-23 01:59
真是好东东,资料下载了,谢谢分享!
作者: kgdjszx    时间: 2013-9-23 02:03
我最近烟酒了下属性树,发现通过属性树可以改变飞机的很多东西,主要方法:
在向导中添加了telnet协议,然后在程序中通过连接telnet,给属性树中某些值设置变量,即可改变飞机。
例如设置autopilot\locks\heading   true-heading-deg;
autopilot\settings\target-deading-deg  180;
即设置其为自动驾驶,航向180度。
作者: kgdjszx    时间: 2013-9-23 02:04
最近很忙,等放寒假了我整理整理资料,放上来与各位分享。
作者: 我是傻逼    时间: 2013-9-28 00:17
开眼界了,谢谢分享,我要看看代码
作者: 爱茶者    时间: 2013-11-5 20:25
大哥,我爱死你了,我都想嫁给你了!
作者: athenakeke    时间: 2014-1-21 09:43
好东西,一边看一边整理,最后才发现有一个word版的可以直接下载。。。
作者: 我爱茜茜    时间: 2014-3-14 23:09
胡秀伟 发表于 2012-4-13 22:03
其中 Instruments 文件夹下的配置文件为目前 FlightGear 飞行模拟器默认使用的 HUD 系统配置文件。其余的配 ...

这个太有才了。可以用来学习研究flightgear啊!
作者: 叶落流年    时间: 2014-5-28 23:06
好东西,多谢分享。正在学习中……
作者: 飞天小猪2010    时间: 2014-7-30 19:45
不错 看看 膜拜大神
作者: goodgugege    时间: 2014-11-3 20:27
太好了,新人向楼主学习!
作者: 爽0618    时间: 2014-12-23 14:54
提供的不错,谢谢!!!!!!!!!!!
作者: 缔造之心    时间: 2015-7-20 10:17
正在学习使用,多谢分享
作者: mutouren    时间: 2015-7-29 13:22
分析的好透彻啊!感谢楼主!
作者: halamadrid    时间: 2015-7-30 10:22
非常感谢楼主!太有用了!
作者: scliou    时间: 2015-8-17 09:54
對於FG的XML研究有很大的幫助,謝謝!
作者: blue_sky_1    时间: 2015-9-3 17:43
谢谢分享,很详细的资料!!   
作者: 机器飞镖    时间: 2015-9-28 22:17
这个一定要学一下,太有用了。
作者: xiongwy    时间: 2015-11-6 09:29
非常有帮助,谢谢楼主
作者: goodman11011011    时间: 2015-11-12 20:24
先收藏了,下下来好好研究研究
作者: jie.cheng    时间: 2015-11-30 15:24
V587,慢慢学习中,刚开始
作者: 22096749    时间: 2016-4-9 22:00
学习一下,谢谢
学习一下,谢谢
作者: 22096749    时间: 2016-4-9 22:01
学习一下,谢谢
学习一下,谢谢
学习一下,谢谢
作者: adequatebiy    时间: 2016-5-12 23:17
这个精华啊,必须顶,收藏
作者: adequatebiy    时间: 2016-5-14 23:34
实在是牛人啊,赞
作者: wanghaitao    时间: 2016-6-11 14:53
非常感谢大神共享!!!!!!
作者: wanghaitao    时间: 2016-7-11 12:39
非常感谢啦非非水水司司丨
作者: sticksheng    时间: 2016-7-31 00:17
请问楼主,有没有详细介绍FG各个配置文件和作用的相关资料尼?请指点哈
作者: 凌风Jack    时间: 2016-9-6 16:43
偷的人家论文里的,咋还成牛人了?
作者: limits    时间: 2016-9-22 14:17

作者: limits    时间: 2016-11-15 15:42

作者: boyblog    时间: 2017-2-22 10:09
谢谢楼主介绍
作者: 机务侯叔    时间: 2017-4-17 22:33
很有用,非常感谢楼主
作者: 飞翔的土豆    时间: 2017-5-25 10:19
非常好的学习资料,感谢楼主分享!3Q
作者: Fredlee    时间: 2017-6-16 22:52
楼主大牛,学习了,多谢多谢
作者: jiejiehaha    时间: 2018-4-22 04:44
XML文件里面,可以直接用MATLAB来修改吗
作者: 123456dongzhe    时间: 2018-8-24 22:24
楼主霸气啊,多谢了
作者: shark1986    时间: 2019-4-9 16:45
楼主学习比较深刻,向你学习




欢迎光临 FlightGear飞行模拟器 (https://www.flightgear.org.cn/) Powered by Discuz! X3.2