virt_flyのブログ -96ページ目

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

イメージ 1

イメージ 2
↑Liveriesで選ぶとOH-6DAにサーチライトを装備したもの、ロケット弾ポッドを装備したものが出現します。確認だけのためとは言え、小さな機体にサーチライトもロケッ卜弾ポッドも大きすぎました。
 

なんて簡単な! これは使える

 

 Liveriesは、まるで服を着替えるようにクリック一つで機体の塗装を変えることができて便利この上ないわけですが、その際同時に装備の異なるバリエーションもなぜか選択できる機体があって、どうしてそういうことができるのかが不思議でした。
 私自身にとっては積年の課題が、今回MD902に出会うことで解決しました。

 素人が、ただ闇雲に模倣し我流で強引なプログラムをつくり、なぜそうなるかの理解を深めることもせずにきましたから、結構簡単なことでも考えつかぬことが多いのではないかと思います。今回の問題もその端的な例といえます。

 わかったのは、基本的に次のようなもの。
 オブジェクトを表示をさせるかさせないかは条件によることを示す<select>文を使い、条件は単純に使うか使わないかのどちらかをtrueかfalseでLiveriesのxmlファイル中に記述することにより、塗装だけでなく装備も異なるバリエーションがたやすく選べる、という簡単なものです。

 確認した実例を記録しておきます。
※オリジナルのOH-6DAは、Liveriesに対応していません。Liveriesに対応させたことを前提にします。

■OH-6DAにMD902からもってきたサーチライトを装着したものしないものを設ける例

●3Dモデル設定ファイル(Modeles/OH-6DA.xml)
 

<?xml version="1.0" encoding="UTF-8"?>

<PropertyList>

  <path>OH-6DA.ac</path>

  <nasal>
    <load>
      var livery_update = aircraft.livery_update.new("Aircraft/OH-6DA/Models/Liveries", 10);
    </load>
    <unload>
      livery_update.stop();
    </unload>
  </nasal>
        ・
        ・
        ・
       (略)
        ・
        ・
        ・
<!-- searchlight -->
 <model>
  <name>searchlight_SX16_Nose</name>
  <path>Aircraft/md900/Models/SearchLight/searchlight_SX16.xml</path>
  <offsets>
   <x-m> -1.800 </x-m>
   <y-m> 0.0 </y-m>
   <z-m> -1.2 </z-m>
   <pitch-deg>0</pitch-deg>
  </offsets>
 </model>
 <animation>
  <type>select</type>
  <object-name>searchlight_SX16_Nose</object-name>
  <condition>
   <property>sim/model/OH-6DA/searchlight_SX16_Nose</property>
  </condition>
 </animation>

        ・
        ・
       (同様にして他にも装備を加える記述を書くとよいでしょう)
        ・
        ・

</PropertyList>

 下線部分が示すように、ここではすでにMD902が存在し、そこへファイルを読みに行っています。別途MD902からサーチライトに関するファイルを取り込んできてもいいかと思います。

●装着する場合のLiveriesのxmlファイル(Modeles/Liveries/○○○.xml)
 

<?xml version="1.0"?>

<PropertyList>
  <sim>
    <model>
      <livery>
        <name type="string">lightyellow-belt</name>
        <texture>lightyellow-colorbelt.png</texture>
        ・
        ・
        ・
       (略)
        ・
        ・
        ・
      </livery>
      <OH-6DA>
      <searchlight_SX16_Nose type="bool">true</searchlight_SX16_Nose>

        ・
        ・
       (同様にして他の装備についてもtrue、falseを記します)
        ・
        ・
     </OH-6DA>

    </model>
  </sim>
</PropertyList>

 下線部分がtrueの場合はこれを装着、falseの場合は装着しません。


■OH-6DAの3Dモデルにロケット弾ポッドも含ませている場合の例

●3Dモデル設定ファイル(Modeles/OH-6DA.xml)
 

<?xml version="1.0" encoding="UTF-8"?>

<PropertyList>

  <path>OH-6DA.ac</path>

  <nasal>
    <load>

        ・
        ・
        ・
       (略)
        ・
        ・
        ・

 <animation>
  <type>select</type>
  <object-name>head</object-name>  ↓以下ロケット弾ポッドのオブジェクト名
  <object-name>body</object-name>
  <object-name>handle-r</object-name>
  <object-name>handle-l</object-name>
  <object-name>plane</object-name>  
  <condition>
   <property>sim/model/OH-6DA/B-8M1</property>
  </condition>
 </animation>

        ・
        ・
       (他にも装備を加える記述を書くとよいでしょう)
        ・
        ・

</PropertyList>

 本体acファイルに一体化されていますのでシンプルです。
 装備については、本体acファイルと一体のもの、別acファイルになっているもの、混在が可能です。

●装着する場合のLiveriesのxmlファイル(Modeles/Liveries/○○○.xml)
 

<?xml version="1.0"?>

<PropertyList>
  <sim>
    <model>
      <livery>
        <name type="string">lightyellow-belt</name>
        <texture>lightyellow-colorbelt.png</texture>
        ・
        ・
        ・
       (略)
        ・
        ・
        ・
      </livery>
      <OH-6DA>
      <B-8M1 type="bool">true</B-8M1>

      <searchlight_SX16_Nose type="bool">false</searchlight_SX16_Nose>
        ・

        ・
       (同様にして他の装備についてもtrue、falseを記します)
        ・

        ・
     </OH-6DA>

    </model>
  </sim>
</PropertyList>

  使わない装備については、falseを記入します。

 こんな簡単なことだったとは。知らないということは恐ろしいことです。
 単に装着するだけですから、重さの違いも反映されるわけではありませんが、これなら機体の様々なバリエーションが簡単に再現できるというものです。

イメージ 1

↑ありえない画像ですみません。「コードブルー」のドクターへりに災害救助用のウインチやサーチライトから、スピーカー、バックミラーまでMD902のファイルにあったすべての装備を無理やり付けてしまいました。
 

コードブルーさまさま MD902で知る

 

 MD902をFlightGearで飛ばすにあたり、Rembrandt非対応だったので、窓ガラスや計器のガラス、ローター、そしてライトと修正していて、サーチライトがたくさんあることに気が付きました。

 あとで、よくよく各バリエーションを見るとウインチやサーチライトを積んだものがあることがわかりましたが、当初は見難くて気が付きませんでした。

 <select>の記述があるので、表示されないわけがないのに、どうすればよいのか理解ができませんでした。

 しかし、Rembrandtに対応させたところで、ついでに「コードブルー」(ドラマ)に出てくるドクターヘリに似せようとペイントしていて、なんとLiveriesの各バリアントのxmlファイルに、サーチライトばかりか、スピーカー、ウインチ、レーダーなどなど、trueとfalseで選択している記述を見つけました。あっ!という驚きです。

 これまで、ロケット弾や爆弾の発射と投下、メニューからクリック一つで装備を変更する自「モード選択」(わからないので勝手に命名)などと、装備の機体への装着については、複雑な方からはじめて四苦八苦したものです。

 FlightGearの機体のなかには、Liveriesで機体の塗装を選べるだけでなく、合わせて異なる装備を装着したバリエーションを選べるものがあって、どうしているのかと不思議に思っていましたが、どうやら簡単そうな方法で実現しているようです。

 もう少し、くわしく確認してみる必要がありますが、これなら様々な塗装のバリエーショを簡単に選べるように、装備の異なるバリエーションの選択も簡単にできることになります。

 でも、まだサーチライトが点灯するものかどうか使い方が不明です。いつもながらしまらない話(^_^?)

 

イメージ 1

↑FlightGearの機体にもあったNOTAR機MD902。特徴的な太いテイルブームに可動のスラスターが。

 

ノーターってどうなのよ

 

 ノーター(NORTAR No tail rotor)の話です。
 概念はヒューズ者の技術者が考えだしたそうで、OH-6Aにはじめて搭載されました。

 回転するテイルローターがなく、かわりに尾部後方に伸びたテイルブームと呼ばれる大きな筒が特徴的な外見となっています。

 以前に当ブロクでもふれたことのあるコアンダ効果を応用していて、テール・ブームの中を、取り込まれた外気がエンジンによって動く送風ファンによって送られ、途中の側面と末端部の側面の2つの開口部から噴出されることで、メインローターの回転がつくりだす機体の回転運動(反トルク)を打ち消す働きをしているそうな。

 途中にある開口部(コアンダスロット)から左右どちらかに空気が噴出されることで、メインローターが作りだす下降気流の流速が左右で異なり曲げられ、結果開口部側へと機体尾部は引っ張られる。他方末端部の開口部(スラスター)からはコアンダスロットとは逆方向に噴射された空気がそのまま機体を押す。単純化して言えばそうした原理のようです。が、実際にはもっと複雑みたいなので、詳しくはウイキペディアでもご覧いただくことにして、すっとばします。

 さて、テイルローターのような外部に露出した回転翼がないということは、人身事故の危険が減らせ、騒音の低減が図れるとして、大いに宣伝され警察などに売り込まれているようです。

 どんなものなんでしょう。テイルローターのある機体ほど効きが良くないこともあってか、軍の特殊部隊でもノーターでない機体をまた採用しているようです。また、高額であることも普及に影響しているのか、いずれ消えるという人もあるようです。

 本当のことなのか、テイルローター翼端がつくる渦流がないだけ振動が低減され、機内で注射を打つことができるようになったと、ドクターヘリ向きのようなことも言われています。

 それにしても、あんな太い筒を付けていたら、素人目にも風の影響が随分ありそうな気がしますが…。

 ところで、FlightGearの機体の中に、ノーターはあるんでしょうか。
 HiTouchさんのブログで、ドラマ「コード・ブルー」に出てくるドクターヘリのMD902がダウンロードできることを知りました。

 冒頭の画像が、MDヘリコプターズMD902。MD Explorerとも呼ばれています。後ろからだと、テイルブームの末端開口部(スラスター)がよく見えています。ヨーイングコントロールとともに、これが動くのですから、なかなかよくできています。
 今のところ結構飛んでいます。Liveriesも豊富で、以下の画像は一部です。

  イメージ 2イメージ 3