FlightGear 视角控制

Posted 水滴工作室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FlightGear 视角控制相关的知识,希望对你有一定的参考价值。

Flightgear提供了非常灵活的模块化功能

这里就简要记录一下视角切换功能

首先,需要了解一下Flightgear中的property tree的主要内容,这里暂略。

http://wiki.flightgear.org/PropertyList_XML_files

然后,我们看官方说明(http://wiki.flightgear.org/Howto:Configure_camera_view_windows)

FlightGear‘s XML-configurable camera view 主要支持两种模式:

  1. 假如你电脑连接了多个独立显示器(比如,你不能在显示器上前后拖拽窗口,也不能创建一个横跨多个显示器的大窗口),那你就可以配置FlightGear来打开一个分离的窗口,每块上面都显示一个特定角度的画面,然后分别显示在每个显示器上(当然,你也可以在一个显示器上打开多个窗口)

  2.  如果你连接了多个显示器,并且将他们虚拟成了1个虚拟显示器。那么你可以配置FlightGear打开一个超大的能够扩展到所有显示器上的窗口,但也需要将这个大窗口分成多个相机看到的内容,然后在不同的显示器上显示。

要实现这一功能,需要修改 preferences.xml文件

但是,FlightGear并不建议这么做,为了主配置文件的稳定起见,将配置文件建立在外部,然后通过文件引用的方式使用。相关命令为:--config=path-to-your-config.xml 。

FlightGear的地景是通过OSG实现的,因此有个默认的配置文件为:$FG ROOT/preferences.xml. (实际FlightGear2016 .1.1中,在$FG ROOT/data,或者$FG ROOT/fgdata中)。

 

你可以通过添加配置文件,实现多个窗口,也可以在一个窗口中显示多个相机视角中的内容。当关闭其中任何一窗口时,整个程序关闭。

例:

 1  <?xml version="1.0"?>
 2  <PropertyList>
 3    <camera>
 4     <host-name type="string"></host-name>
 5     <display>0</display>
 6     <screen>0</screen>
 7     <shear-x>2</shear-x>
 8     <shear-y>1</shear-y>
 9     <width>320</width>
10     <height>240</height>
11     <fullscreen type="bool">false</fullscreen>
12    </camera>
13    <camera>
14     <host-name type="string"></host-name>
15     <display>0</display>
16     <screen>0</screen>
17     <shear-x>-2</shear-x>
18     <shear-y>1</shear-y>
19     <width>320</width>
20     <height>240</height>
21     <fullscreen type="bool">false</fullscreen>
22    </camera>
23  </PropertyList>

 

这段代码放到rendering中,也就是,如果要引用的话,是这样的

1   <rendering include="camera-views.xml">
2   ...
3   </rendering>

然后打开FlightGear,会发现,多了两个窗口,分别显示了不同的内容。

 

当然,你也可以通过<camera-group>标签来将两个视角放到一个窗口中。

这个后面我们再讨论吧,今天先到这里。

 

以上是关于FlightGear 视角控制的主要内容,如果未能解决你的问题,请参考以下文章

PX4模块设计之八:Ubuntu 20.04搭建FlightGear模拟器

nasal脚本起源与环境搭建(flightgear开源项目)

如何在使用WIN10 Visual Studio 2015 编译FlightGear源码(2020.1.1版本)

如何在使用WIN10 Visual Studio 2015 编译FlightGear源码(2020.1.1版本)

Qt实现telnet服务记录

Unity 鼠标控制视角功能和动画播放冲突解决办法