Virtual flight is a homepage which introduces FlightGear Flight Simulator.

AIシナリオ



   

●AIシナリオの活用

【コメント】

 FlightGearに用意されているAIシナリオを活用しないてはありません。

 FlightGearには、空母やソアリングをはじめ、嵐、船、空中給油の他、wingmanなど多数のAIシナリオがあります。とてもすべてを試せてはいませんが、これらがFlightGearをより一層楽しめるものにしてくれていることは確かでしょう。空母やソアリングについては別ページをもうけていますので、くわしくはそちらを。

 なお、以前は$ FG_ROOTにあるpreferences.xml(v2017.1以降はdefaults.xml)ファイル中のタグ内にすでにAIシナリオ名が書き込まれていて、コメントマークを削除するかすでに外してあれば、FlightGearを起動するだけで利用が可能になるものが、いくつかありました。どうやら今では空母(nimitz_demo)だけになってしまったようです。
 ソアリングや嵐など空母(nimitz_demo)以外のすべてのAIシナリオが、preferences.xml(現在はdefaults.xml)ファイル中には何の書き込みもなく、いずれもみなFlightGearの起動時に--ai-scenario=オプションを指定するようになっています。

 これらのAIシナリオはおおむねサンフランシスコ空港近辺に限られていますが、$ FG_ROOT/AI/下にあるそれぞれの.xmlには、経度、緯度を指定する箇所が存在するので、ここを適当な経度、緯度に書き改めることで、空母の位置や嵐の発生場所などを好みの場所に移動することができます。またxmlファイルを編集することで、例えば嵐では速度や進行方向、直径、高さなどを変えることもできます。


storm↑関空付近を移動する嵐の稲光

shipship_demo.xmlを少しいじりヨットを複数に↑


【実際】

〔$ FG_ROOT/preferences.xml(v2017.1以降はdefaults.xml)ファイルを使う場合〕

   (略)    空母のページを参照

〔コマンドラインからのオプション指定の場合〕

・一般的な起動例

  $ fgfs --aircraft=△△△ --ai-scenario=〇〇〇  ←〇〇〇はAIシナリオ名(例:bigstorm_demo)、△△△は機種名


・空母でもFochを使用する場合

  $ fgfs --aircraft=△△△ --carrier=Foch --ai-scenario=foch_demo  ←△△△は機種名


〔$ FG_ROOT/AI/下の_demo.xmlファイルの緯度・経度変更の例〕

・bigstorm_demo.xmlなどのファイルの緯度・経度の部分を書き改めます。ここの例では、関空近く。

 <latitude>34.4</latitude>
 <longitude>135.2</longitude>


・上述の例の場合の起動オプションは次のとおり

 $ fgfs --aircraft=△△△ --ai-scenario=bigstorm_demo --airport=RJBB  ←△△△は機種名、空港には関空


[2008/04/25][2012/12/01更新][2018/02/08刷新][2018/08/11更新]


   

●AI機の駐機や編隊飛行を簡単なAIシナリオで実現する

【コメント】

 先にship_demo.xmlを少々いじることで複数のヨットを配置することができたので、編隊飛行や複数のAI機の駐機も可能に思え試してみました。

 これまで編隊飛行についてはplaybackExプロトコルやオートパイロットなどを用いたズルもしてきましたが、それでもなかなか難しく、しかも2機を操るのが限度。そこで業を煮やし、4機編隊を飛ばすのにship_demo.xmlを元にしたAIシナリオを用いました。さすがに禁じ手に手を染めた感は否めません。

 4機並べて一定高度で飛行させるという芸のないもので、エンジンも停止したまま(ジェットだと気付かれにくいですが、レシプロエンジンだとプロペラが停止していることがわかる)ではありますが、これくらいならaircraft_demoのようなフライトプランをもとにしたAIシナリオを作成するまでもなく、簡単なAIシナリオで十分です。ただし、AIシナリオで上昇中の機体を実現するにはやはりフライトプランが必要でです。(注参照)

 また、ターミナルビルもない滑走路だけの空港だと、あまりの殺風景さにせめてAI機でも駐機させたいと思ったりします。これまた本来的な方法(?)ではなくても、単にとめて置くだけならship_demo.xmlの応用で実現できます。加えて、ターミナルビルもないと空港らしくないので、これもできあいの建物を借りてきて、機体の駐機同様の方法で配置しましょう。関空にまだターミナルビルがないころは、サンフランシスコ港のフェリーターミナルを借りて少し修正の上配置したものでした。

 なお、AI機のなかには脚のでているものとないものがありました。飛行には脚のないAI機を、駐機には脚のでているAI機を使わざるをえません。また通常の機体をAI機代わりに駐機させることもできますが、引っ込み脚の場合は脚がでません。
 この方法は、位置や高度を定めるのにやはり少々わずらわしい調整が必要ですが、プログラムとしては単純でわかりやすく、案外お手軽かつ確実なのかも。


airport↑にぎやかになった我が関空

diamond take_off↑ダイアモンド・テイクオフ


 ちなみに左の画像中のANA機はフライトプランをもとにAIシナリオで動かしています。上昇・下降を伴う機体の動きを実現するにはフライトプランが必要で、右の動画はフライトプランでダイアモンド・テイクオフを試みたもの。ジェット噴射がおこす乱流を避けるため、後方に位置すべき機は他の機と高度を違える必要があり、また同じ理由で離陸時には一番端から発進させなければなりません。編隊の端から中央後方へ機体は持ってくることは比較的容易ですが、高度差を与えるために隊形を崩さぬようにして離陸のタイミングをずらすのはむずかしい。フライトプランを扱うのはまだ手に余り、今後の課題です。

※最近のバージョンのFlightGearではFlight Planはなぜか動かないようです。

注記)編隊飛行に関しては、今ではwingmanの機能が使えるようになっていますので、詳しくはこちらを参照のこと。建物など3Dオブジェクトの配置についてはこちら、AI機でもプロペラの回転を再現しあるいはAI機の車輪を飛行中は消し、地上では出す方法はこちらを参照してください。


【実際】

〔ship_demo.xmlファイルを利用したAIシナリオの新規作成の例〕

 <?xml version="1.0"?>
 <PropertyList>
  <scenario>
   <description>
   </description>
   <entry>
    <type>aircraft</type>
    <model>Aircraft/seahawk/Models/seahawk-3d-model.xml</model>  ←機体の指定例
    あるいは上の行に代えて

    <model>AI/Aircraft/A320/A320-fb-AirFrance.xml</model>  ←機体にAI機を指定の例
    <latitude>34.4359</latitude>  ←飛行開始あるいは駐機地点の緯度を指定
    <longitude>135.2474</longitude>  ←飛行開始あるいは駐機地点の経度を指定
    <altitude>200</altitude>  ←飛行高度あるいは駐機地点に見合った高度を指定
    <speed>50</speed>  ←飛行時の速度、駐機時は0を指定
    <roll>15</roll>  ←ロールを指定した場合は飛行時に機体は旋回をします
    <heading>270.0</heading>  ←機首の方角を指定
   </entry>
  </scenario>
 </PropertyList>


 <altitude>や<heading>、<roll>は元のファイルにはなかったタグ(注1)。
 複数の機体を扱う場合は、タグ下を複数記述します。

注1)闇雲に作ったAIシナリオだったので、後に本家のサイトを見てみると少々違っています。<roll>は見当たらず<BANK>がありました。


[2008/05/28][2012/12/01更新][2018/02/08刷新][2018/04/23更新][2018/10/10更新]


   

●wingmanを使った編隊飛行

【コメント】

 これまで何か編隊飛行の実現に固執するかのように試みを繰り返してきた経緯があるので、wingmanの機能についてふれないわけにいきません。

 FlightPlanを用いたり、編隊を一つのacファイルにしたりと、とりわけスタンドアロンのパソコン上で編隊飛行を実現しようとあれこれ姑息なことをしてきましたが、本来編隊を構成する各機体は編隊を維持するために近づきすぎず離れすぎずそれぞれ微妙に異なる動きをしているのですから、これが再現できないといかにもリアリテイに欠けることになります。Nasalにて対処を考えようかとも思っていたら、どうやらwingmanが多少なりともそれらしい動きを再現する機能をもつことがわかりました。

 wingmanの仕組みをよく知らないので、ここでは感覚的なレポートにとどまりますが、編隊を一つのacファイルの如く自在に操作できるばかりか、編隊の先頭の機体が上昇しだすと遅れて編隊の他の機体(wingman)が上昇しだす。逆に下降しだすと他の機体(wingman)も遅れて下降しだし、そのズレのために先頭と他の機体(wingman)の位置関係が上になったり下になったりと変動します。しかも、よくみれば他の機体(wingman)同士の間でもまったく同じ動きをしているのではなく、微妙に異なっているようで、なかなか良い具合ですね。


wingman↑wingmanによる編隊飛行

acrobatics↑wingmanでなければ見れないシーンです


 左上の画像は、wingman_demo.xmlとwingman2_demo.xmlの2つのAIシナリオを実行することで、ダイヤモンドテイクオフなどの4機編隊の飛行を再現したもの。元々は、Buccaneerが機体に指定されていました。見どころはやはりBuccaneerの編隊が、脚を引っ込めながら離陸していくところ。
 なお、真後ろと右後方に機体を出現させるwingman2_demo.xmlに、左後方に機体を出現させる記述を加えれば、4機編隊を実現するのにAIシナリオは1つで済ませれます。その際x,y,z offsetsの値を変更すれば、右上の画像のようなアクロバット的な密集編隊も可能です。


【実際】

〔必要なもの〕

 wingmanにより編隊飛行を行う際に必要になるのは、FlightGear本体と乗機にする機体のファイルはもちろんですが、これ以外に次の2つを用意する必要があります。
 wingman用のAIシナリオ・・・これをを記述したxmlファイル
 wingman用のAI機・・・僚機の3Dモデル(acファイル)と3Dモデル設定ファイル(xml)など機体ファイル一式

〔wingman用のAIシナリオ〕

 僚機となる機体のAI機を指定し、機体同士の間隔を中心となる機体から順次相対的位置を定めているファイル。
 FlightGearにはAIフォルダに、wingman_demo.xmlやwingman_b29_demo.xmlなど、BuccaneerとB29のwingman用のAIシナリオがデフォルトで用意されています。自分の好みの飛行機で編隊飛行をしたい場合はこれを参考にしてファイルを作成しましょう。

〔wingman用のAI機〕

 僚機を乗機と同じ機体にするのであれば、Wingman用AI機として乗機のファイルを指定してもよいのですが、例えばレシプロ機の場合だと、編隊飛行中の僚機のプロペラは回転していないことでしょう。
 これではまずいので、通常AI機の場合は3Dモデル設定ファイル(/Models下にある機体の名前のついたxmlファイル)をいじり、プロペラがまわっているように見せかけたり、ジェットエンジンも速度により吹き出す燃焼ガスの違いを再現するように、wingman用に書き換えたものをつくります。
 多少FlightGearの仕組みを知らないとなりませんが、頑張ってみましょう。僚機にもロケット弾を発射させるようなことも可能です。

 

wingman
↑ロケット弾を発射するJu EF128改の編隊


[2008/07/05更新][2012/12/01更新][2018/02/08刷新]


「仮想飛行」(virtual flight) by virt_fly