FlightGear飞行模拟器

标题: 构建自己的飞机模型----xml脚本 [打印本页]

作者: fg-fans    时间: 2011-11-9 22:38
标题: 构建自己的飞机模型----xml脚本
     今儿空闲,接着上次写,这回分享一下xml脚本文件的简单结构,了解了这个,估计大家就知道建立简单模型的方法了。xml文件标记了一些程序运行需要的信息,它本身不会去执行,它的执行方式是被调用。xml为程序增添了扩展性,比如我们有时会在xml文件里调节游戏手柄的按键,这样就使程序更加灵活。我本人比较推崇在程序中使用xml文件,虽然至今还未真正实践过,呵呵。
     仍以f18为例,首先说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模型文件的构建步骤也差不多是这样。
     以上是本人研究过的东西,还希望这方面的前辈帮助指正,交流。

f18-set.jpg (115.22 KB, 下载次数: 1040)

f18-set.jpg

作者: Steven    时间: 2011-11-9 23:23
看完后受益匪浅!向楼主致敬!
作者: jackvoy    时间: 2011-11-10 10:47
值得学习啊!
作者: skdzlc    时间: 2011-11-11 10:08
现在正在学这块,顺便说下楼主提到的关于<animation>标签的作用:
这个标签的作用是驱动.ac文件也就是FG中标准的ac3d模型文件,也就是说让.ac文件中飞机的各个部件“动”起来,比如说着落过程中需要放下飞机的起落架,这个动作在模型中实际上是移动起落架从一个位置到另一个位置,这个动作就需要<animation>标签来完成。
说下楼主贴出来的程序中子标签的作用<type>标签是指具体的动作方式,如这里指定了rotate,就是指围绕某坐标轴旋转到一个特定的位置,FG还提供了其他几个动作,none:无改变,spin:绕某坐标轴以一定速度自转,translate:沿某轴移动。
<object-name>标签就是楼主说的飞机某部件的名称,定义在相应的.ac文件中。
<property>是为FG指定路径,FG通过该路径启动该动作。
<factor>改变状态的参数,FG会通过该参数进行比例转换。
<axis>坐标系参数。
仅供参考,如有纰漏请大家指正,一起研究~
作者: 永生    时间: 2011-11-21 10:49
值得学习的啊!
作者: zlycc2012    时间: 2011-12-11 12:40
多谢多谢。。。
作者: XXXXXXX    时间: 2012-3-1 08:53
JSBSim模型自己写的怎么导入?
作者: shadidi    时间: 2012-3-2 11:43
skdzlc 发表于 2011-11-11 10:08
现在正在学这块,顺便说下楼主提到的关于标签的作用:
这个标签的作用是驱动.ac文件也就是FG中标准的ac3d模 ...

你好,可否告知property中的动作参数值到哪里去查?是否有什么说明手册?
作者: skdzlc    时间: 2012-3-16 10:48
shadidi 发表于 2012-3-2 11:43
你好,可否告知property中的动作参数值到哪里去查?是否有什么说明手册?

可以在对应机型的nasal中看到,也可以通过fg提供的访问方式,查看属性树,暂时没有手册,有兴趣的话可以到官方wiki的howto中找找看
作者: 胡秀伟    时间: 2012-4-12 20:18
受益匪浅,多谢!
作者: Momo    时间: 2012-7-4 09:54
楼主啊,问个问题,我载入飞机模型之后,操作不好用,是我没有定义的缘故还是怎样呢?求赐教
作者: Momo    时间: 2012-7-9 09:53
skdzlc 发表于 2012-3-16 10:48
可以在对应机型的nasal中看到,也可以通过fg提供的访问方式,查看属性树,暂时没有手册,有兴趣的话可以到 ...

想问下如何查看属性树?
作者: 爱谁谁    时间: 2012-10-29 00:36
有点收获,谢了
作者: skdzlc    时间: 2012-11-23 14:10
Momo 发表于 2012-7-9 09:53
想问下如何查看属性树?

fg在启动的时候定义了一种httpd的访问方式,默认是5500端口,启动之后通过浏览器访问5500端口就能看到
作者: AVICWHE    时间: 2012-12-5 22:43
与Models目录同级的同名xml文件是用来描述模型气动参数和刚体运动参数的,Models目录内的同名xml文件是用来描述3D模型组成及结构运动方式的。
作者: agm123    时间: 2013-4-5 11:21
多谢,学习下脚本知识
作者: wangchenglanduo    时间: 2013-4-27 21:54
<animation>
          <type>rotate</type>旋转
          <object-name>RudderLeft</object-name>旋转部分 的模型名称
          <property>surface-positions/rudder-pos-norm</property> 调用属性树中的参数
          <factor>30</factor>设置旋转的角度
        -<axis> 坐标轴似乎不正确,绝对垂直或者水平的很好弄,如果是斜的,那么就要用到具体的公式,公式在单位,现在想不起来的,找空贴上来,只是知道,这里面的坐标都是AC3D里面的坐标
          <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>
这个我知道

作者: 从前有个人    时间: 2013-5-7 18:39
学到了很多,以后有用,楼主辛苦
作者: Julie    时间: 2014-4-11 14:58
很受用!!!!!!!!!!!!
作者: mutouren    时间: 2015-1-10 00:18
好东西,值得研究,向楼主学习了!
作者: jashire    时间: 2015-1-12 18:40
资料很好。。。回复求下载。。。多谢了
作者: alien8448374    时间: 2015-1-29 21:54
顶一下,做一个不容易啊,楼主有更详细的教程没有
作者: flightgear123    时间: 2017-9-2 14:04
十分感谢楼主分享!1

作者: hanxiuqing    时间: 2017-12-5 09:45
skdzlc 发表于 2011-11-11 10:08
现在正在学这块,顺便说下楼主提到的关于标签的作用:
这个标签的作用是驱动.ac文件也就是FG中标准的ac3d ...

66666666,能学到点东西,想知道那些资料在哪里找呀

作者: 熠丝不挂    时间: 2018-11-7 16:57
浅显易懂,6666666666666666666666
作者: bellah92    时间: 2018-11-27 17:05
楼主请教一下,与Models目录同级的同名xml文件的文件怎么调用?机型名.xml,这个文件里面重心配置好像没有调用到该文件。
作者: bellah92    时间: 2018-11-27 17:06
AVICWHE 发表于 2012-12-5 22:43
与Models目录同级的同名xml文件是用来描述模型气动参数和刚体运动参数的,Models目录内的同名xml文件是用来 ...

楼主请教一下,与Models目录同级的同名xml文件的文件怎么调用?机型名.xml,这个文件里面重心配置好像没有调用到该文件。
作者: 帆小生丶    时间: 2019-6-15 15:44
辛苦辛苦,xml文件可以用AC3D生成就好了
作者: autumn    时间: 2021-5-18 11:49
帆小生丶 发表于 2019-6-15 15:44
辛苦辛苦,xml文件可以用AC3D生成就好了

你好,请问怎么生成?

作者: Roger123    时间: 2023-8-14 10:25
感谢楼主分享




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