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>標簽來將兩個視角放到一個窗口中。
這個后面我們再討論吧,今天先到這里。