Virtual flight is a homepage which introduces FlightGear Flight Simulator.

機能関連



   

●Select-Liveriesー衣服のようにペイントを替える

【コメント】

 メニューから選ぶだけで衣服を着替えるように機体のペイントが替えられるSelect Liveryの機能は便利です。新しく機体の塗装のデザインができたら、その画像ファイルに対応するxmlファイルをひとつ作成して/Liveries下に置くだけでよいのです。自動的にメニューに登録されてすこぶる簡単。どんどん機体を塗り替えて楽しんでみてはいかがでしょう。

 FlightGearのバージョンが1.9になってそなわった機能ですが、すでにほとんどの機体が対応しています。まだデフォルトでは1種類のペイントしかないものもありますが。なお対応していない機体でも、Select Liveryの機能を使えるようにすることができます(次項)が、これらの未対応の機体ではそれよりもペイントが複数の画像ファイルからなっていて、作画や対応するxmlにファイルを作成することのほうに挫けます。

 ミステル(親子飛行機)を試していて気が付いたのですが、親機から切り離される子機が、はじめはSlect Liveryで選択した塗装だったのに、切り離したとたんに別な塗装に替わってしまいました。また、マルチプレーヤーでは相手機の機体はデフォルトが表示?

livery select system↑Select Liveryのメニュー画面でペイントを選
ぶと瞬時に機体の塗装が変わります.
画像は迷彩塗装のMe262 A-2a/U2

livery select systemSelect Liveryに未対応でも導入は容易↑
CVS版で見つけたHe162もそうした例のひとつ


【実際】

〔Slect Liveryの使い方と新規Liveryの登録〕

・新たに機体に施すペイント用に作成した画像ファイルであるテクスチュアpngあるいはrgb(複数の場合も)に対応するxmlファイルを、当該機体の下部ディレクトリである/Liveries下に置きます。
・そうしておけば、ウインドウ上部のバー中の大概は機体の名称になっているタブをクリックし、開いたドロップダウンメニューから[Select Livery]を見つけ出し、これを開くことによりすでに新しいペイントが登録されメニューに表示されているのがわかるはずです。
・もしウインドウ上部のバーの中に機体の名称のタブがなければ、[Help]から[Aircraft Help]を開き、Open Livery Dialogなどと書かれたキーがないか探し、幸いなことにあれば当該キーを押すことでSelect Liveryが開き、メニューが表示されまるはずです。
・Select Liveryが開いたなら、後はメニューから目的のペイントを選びそれをクリックするだけ。機体の塗装が瞬時に目的のものに切り替わります。

〔テクスチュアpngファイルに対応するxmlファイルの例〕
・新たに作成したペイントの画像ファイルであるテクスチュアpng(ここでは単一ファイルとした)に対応し、当該機体の下部ディレクトリである/Liveries下に置かれるxmlファイルの例を以下に示します。
・この例では、機体に迷彩を施すために用意したtexture2.pngという画像ファイルが、camouflageの名称でメニューに登録されます。なお(略)の部分は他のテクスチュアのxmlファイルと同じように書いておきます。

  <PropertyList>
   <sim>
    <model>
     <livery>
       <name type="string">camouflage</name>
       <texture>texture2.png</texture>
         (略)
     </livery>
    </model>
   </sim>
  </PropertyList>


〔テクスチュアファイルと3Dモデルの対応〕

・新たに機体に施すペイントのために作成した画像ファイルであっても、それが3Dモデルに正しく張り付かない、反映されないことがあります。
・3Dモデリングソフトにて、新しい画像ファイル(テクスチュアファイル)と3Dモデルの各パーツを、あらかじめ関連付けておく必要があります。
・3DモデリングソフトのBlenderであれば、エディットモードにてパーツを選択、各頂点を黄色の状態にした上で、Viewモードを変えUV/Image Editorで新しく作成した画像ファイルを開き、3Dモデルのパーツをここでも各頂点を黄色の状態にした上で、目的の絵柄の上に配置します。なお、通常は目的の画像ファイルが表示されていない場合には、押ピンマークをクリックして開いたメニューから目的の画像を探すのですが、まったく新規の画像のファイルの場合は、[Image]から[Open]をクリックして目的の画像ファイルを探して[Open Image]を実行する必要があります。

〔Select Liveryの適用除外〕

・ミステル親機から切り離される子機が、はじめはSlect Liveryで選択した塗装だったのに、切り離したとたんに別な塗装に替わってしまいました。これを避ける方法の一つとしては、Select Liveryの影響を受けず元々のテクスチュアを継承するようにできれば、手っ取り早いでしょう。これが正しい方法なのかははなはだ心もとないですが、以下の通りにすれば、影響を受けなくなりました。
・以下は子機のxmlファイルの例。

  <PropertyList>
      (略)
   <property-base>sim/model/livery<property-base>
   <texture-prop>texture1</texture-prop>  ←元々はtexture
   <texture>texture1.png</texture>  ←元々の子機独自の画像ファイル名を書き込む。
      (略)
  </PropertyList>


[2009/08/23][2009/09/09更新][2012/12/09更新][2018/04/23刷新]


   

●未対応機体へのSelect-Liveriesの導入

【コメント】

 便利なSelect Liveryですが、時折未対応の機体に出くわします。自分でいくつか気に入りのペイントを施したときは、やはり選択が簡単にできるSelect Liveryの機能が使えればと思ってしまいます。

 導入は比較的容易です。これまでは、米国サイトのwikiでくわしく扱われていることを紹介するだけにしていましたが、関連記事を掲載するにあたり、この際あらためて項をおこすことにします。

【実際】

〔liveries.nasのコピペ〕

・Select Liveriesに対応しているいずれかの機体ファイルから、Nasalプログラムファイルであるliveries.nasをコピーしてきます。場所は/Models/Nasal下にあるのがほとんどです。
・未対応の機体ファイルの/Models/Nasal下にliveries.nasを貼り付けます。
・テキストエディターでliveries.nasを開き、機体名の箇所を目的の機体ファイル名に書き換えます(下記の◯◯◯で表した部分)。

  aircraft.livery.init("Aircraft/◯◯◯/Models/Liveries");


〔機体の3Dモデル設定ファイルへの記述追加〕

・機体の3Dモデル設定ファイル(/Models/◯◯◯.xml)に、次のような記述を追加します(赤字部分)。
・前段は、Nasalプログラムを使用したLiveryの読み込み、後段はペイントされる3Dオブジェクトのリストアップ部分と言えば良いでしょうか。
・後段部分は、元々記述がすでにあれば書き加える必要がありませんが、なければペイントされるべきオブジェクト名の指定のために書き加えが必要になります。その際はBlenderなどの3Dモデリングソフトを使って3Dオブジェクト名を確認(一覧もしくは一つ一つオブジェクトをクリックして名前の表示を見ます)、列挙していきます。

  <PropertyList>

   <path>◯◯◯.ac</path>  ←機体の3Dモデル名をpath指定

   <nasal>
    <load>
     var livery_update = aircraft.livery_update.new("Aircraft/◯◯◯/Models/Liveries", 10);   
←◯◯◯は機体ファイルの置かれたディレクトリ名
    </load>
    <unload>
     livery_update.stop();
    </unload>
   </nasal>

         (略) ←元〃の記述は省略
   <animation>
    <type>material</type>
    <object-name>fuselage</object-name>
 ←例えば
    <object-name>wing</object-name> ←同様に必要なだけオブジェクト名を指定
         (略)
    <property-base>sim/model/livery</property-base>
    <texture-prop>texture</texture-prop>
    <texture>Aircraft/◯◯◯/Models/texture.png</texture> ←元々のテクスチュアファイルをpath指定
   </animation>

  </PropertyList>


〔機体設定ファイルへの記述追加〕

・機体設定ファイル(◯◯◯-set.xml)に、次のような記述を追加します(赤字部分)。なお、前後の記述もなければ含めて書き加えてください。
・Nasalプログラムとしてliveries.nasを使うことを指定する後段と、起動したFlightGearのメニューバーからSelect Liveryを指定しペイントを選べるようにする前段とに分かれます。
・Select Liveryは、メニューバーの右端、機体名をクリックすると現れるドロップダウンメニューに表示されることを前提とします。なお、メニューバーこの部分を◯◯◯-menu.xmlというような別ファイルに書き出している場合も見かけます。記述はいっしょですので、その場合はDialogs名のディレクトリあたりを探して、書き加えてください。

  <PropertyList>
   <sim>
         (略)
    <menubar>
      <default>
        <menu n="100">
        <label>◯◯◯</label>  ←ここは通常機体名
        <item>
           <label>Select Livery</label>
           <binding>
                 <command>nasal</command>
                 <script>aircraft.livery.dialog.toggle()</script>
           </binding>
        </item>

        <item>
         (略)  ←ここにはautostartなどが入っていることが
        </item>
        </menu>
      </default>
    </menubar>
         (略)
   </sim>

         (略)

   <nasal>
      <◯◯◯>
         (略)  ←ここには他のNasalファイル名が
         <file>Aircraft/◯◯◯/Nasal/liveries.nas</file>
      </◯◯◯>
   </nasal>

  </PropertyList>


〔新規Liveryの登録〕

・新たに機体に施すペイント用に画像ファイル(テクスチュアpngあるいはrgb)を作成したら、これに対応するxmlファイルをつくり、当該機体ファイルの下部ディレクトリである/Liveries下に置きます。このことは、前項で記述していますので参照ください。

[2017/10/5][2018/04/23刷新]


   

●Select-Liveriesで装備や機体形状の異なるバリエーションの選択も<

【コメント】

 なんのことはない、機体の塗装ばかりでなく、装備や機体の形状の異なるバリーエーションも、クリック一つで簡単に変更できるのがSelect Liveryです。

 以前よりそうした機体がFlightGearのなかにあることは知っていましたが、にわかには仕組みが理解できず、ようやく今回機体ファイルをよく見る機会を得て、その方法に気づくことができました。

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

 思えばこれまで、ロケット弾や爆弾の発射や投下(詳しくはこちら)、クリック一つで装備を変更できる「モード選択」(わからないので勝手に命名、詳しくはこちら)など、航空機の装備の着脱再現のために、随分複雑な仕方の方からアプローチしてきたものです。これらと比べればなんと簡単なことか。
 単に装着するだけですから、重さや形状の違いによる影響が反映されるわけではありませんので、あまり極端なことはリアルシミュレーターとして好ましくはないことでしょう。でも、ちょっとした違いを勘弁願えるなら、機体の様々なバリエーションが簡単に再現でき、かなり使えそうに思えます。

livery select system

livery select system

↑画像は、実例です。装備など対象とする3Dモデルを、機体本体の3Dモデルとは別に設けた場合(サーチライト)と、一体化して中に含めた場合(ロケット弾ポッド)のそれぞれの例です。違いは、その分若干xmlファイルの記述がかわるだけです。それにしてもロケット弾ポッドはでかすぎて、先程の好ましくない最たる例になりそうです。


【実際】

〔機体の3Dモデル設定ファイル〕

・以下に機体の3Dモデル設定ファイルの例(OH-6DA/Models/OH-6DA.xml)を示します。
便宜的にここではOH-6DAにサーチライトをつけたタイプとロケット弾ポッドをつけたタイプを、Slect Liveryで切り替えれるようにすることにします。
・サーチライトはFlightGearの/Aircraftにダウンロードしてきてあるmd900から直接読み込む手もありますが、ここではサーチライトの3Dモデルファイルと対応するxmlファイルをコピーしてきてOH-6DAの/Models/searchlight下に貼り付けて使うこととします。一方比較のため、ロケット弾ポッドの3Dモデルについては機体本体の3DモデルOH-6DA.ac内に一体化しておくことにします。都合本体acファイルの外部と内部に装着する3Dモデルの2つの例をもうけたわけです。 ・なお、OH-6DAはSelect Liveryを導入していることを前提にします。

  <PropertyList>

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

   <nasal>  ←Select Liveryは導入済み
    <load>
     var livery_update = aircraft.livery_update.new("Aircraft/OH-6DA/Models/Liveries", 10);   
    </load>
    <unload>
     livery_update.stop();
    </unload>
   </nasal>
         (略)
  <!-- searchlight -->  ←装備の3Dモデルが機体の3Dモデルとは別の例
   <model>
    <name>searchlight_SX16_Nose</name>
    <path>Aircraft/OH-6DA/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>

  <!!-- rocket launcher -->  ←装備の3Dモデルと機体の3Dモデルが一体の例
   <animation>
    <type>select
    <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>


〔Liveriesのxmlファイルの例〕

・Liveriesのxmlファイルの例(/Models/Liveries/kpa.xml)。ここではサーチライトは装着せず、ロケット弾ポッドを装備したものとします。
・サーチライトのtypeにはfalse、ロケット弾ポッドのtypeにはtrueを記述します。同様にして、他にもtrue、falseを記して装備をふやすことができます。

  <PropertyList>

   <sim>
    <model>
     <livery>
      <name type="string">KPA</name>
      <texture>kpa.png</texture>
         (略)
     </livery>
     <OH-6DA>
     <searchlight_SX16_Nose type="bool">false</searchlight_SX16_Nose>
 ←非選択
     <B-8M1 type="bool">true</B-8M1> ←選択
        
        ・
  ←同様にして他にもtrue、falseを記して装備はふやせる
        
     </OH-6DA>

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


[2014/04/22][2018/04/23刷新]

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