Virtual flight is a homepage which introduces FlightGear Flight Simulator.

装備の搭載・武装



   

●ミサイルの搭載と発射-発射音つきで

【コメント】

 FlightGearは、将来はわかりませんが、現状ではドッグファイトに非対応が仕様のようです。そこが気に入りでもあるのですが、したがって、機体によってはミサイルが発射できるようになっているものがあっても、ただそれだけ。当然マルチプレイの他の端末には発射されたミサイルが表示されることはありません。しかし、近頃はBombable add onもできており、ある程度ドッグファイトも楽しめるようになってきています。その点では、お気に入りの機体にミサイルを搭載できるようにしてみてもいいかもしれませんね。

 今でこそ、爆弾やミサイルを搭載した機体が増えてきていますが、この項を最初にもうけた頃には、こうした機体はまだ限られていて、ここでのテーマであるミサイルの搭載も、下地は増槽タンクの装着でした。
 お気に入りの機体の外観に手を加えただけの我がp-kikkaは、元々のMe262の設定のままでは関空からだと埼玉あたりまで飛ぶのがやっと。そこで燃料を増やしてみることにしたのですが、数値を増やしただけではどこに燃料を積み込めるスペースがあったのかといわれてしまうので、やはり最低限増槽タンクは設けたいと思ったもの。

 参考にしたSeahawkの増槽タンクは、切り離しのプログラム中に速度のタグが含まれていました。もちろん自由落下の増槽タンクでは「0」となるでしょうが、適当な値を与えればどうなるか? 残念ながらこの速度は初速度を与えるもので、機関砲などならよいのですがしばらく飛行を続けるミサイルにはどうにも不適当に見えます。しかし、ミサイルを発射できる機体を調べてみても、どうもこれを利用しているようにしか思えません。ミサイルの重量を実際とは違ってできるだけ小さくすることで重力の影響を極力排し、他方そのために吹き飛ばされないよう風の影響をなしに設定し、擬似的にミサイルに見せかけているわけです。なお、弾道を描かずにミサイルを飛ばすことができるのは、<buoyancy>(浮力)を使うことで実現していることがわかりましたので、追記しています(「buoyancyとballistic」の項を参照のこと)。

 重量については別な問題があります。ミサイル発射や増槽タンクの切り離し前後で機体の重量が変わることによる、飛行への影響です。実はこの点をどう扱えばよいのかわからず、増槽タンクの項を設けるのがはばかられたため、これに代わる項を設けるべくミサイル搭載に挑戦したようなもんです。多分ミサイルは燃料ほどには大きな影響はなく無視してもよかろうと。随分アバウトなことで、他にも主翼がどれほどの荷重にまで耐えうるのかなどまったく考慮の外にしていますので、徹底的なリアリストには耐え難いことかもしれませんね。

 なお、【実際】の項で扱っているp-kikkaの付いたファイルは、いずれも元にしたMe262のファイル名のme262を置き換えただけと見なしてもらってかまいません。

注記)マルチプレイで他の端末にはミサイルが表示されないと書きましたが、もちろんネットワーク上の他の端末にもp-kikkaをインストールしてマルチプレイヤーを実行した場合は、相手側のp-kikkaにミサイルや増槽タンクが搭載されているのを見ることはできます。しかし、発射されたミサイルの飛行する様子や落下するドロップタンクは表示されません。問題なのは、相手側でミサイルを発射しても他の端末上ではミサイルが搭載されたまま残ってしまうこと。ドロップタンクでは、問題なく消えたと思うのですが。FlightGear本体やプログラミングをよく理解もしていない者が、闇雲にいじったのだからいたしかたありません。無理して背伸びするのはほどほどにしたほうがよさそうです。

注記2)燃料とペイロードの重量に関する問題については、こちらを参照いただけると幸いです。

droptank↑増槽タンクを切り離すp-kikka

missileミサイルを発射するp-kikka↑


【実際】

〔ミサイルの3Dモデル〕

・Seahawkからコピーしてきた増槽タンクの3Dモデルファイルdroptank.acを3DモデリングソフトのBlenderを使ってミサイルらしい形に作り変え、ファイル名もmissile.acとし/p-kikka/models/下に置きます。
・3DモデリングソフトのBlenderを使いp-kikka.acを編集し、p-kikkaの主翼下にミサイルを吊り下げるパーツを作成します。
・ミサイルの3Dモデルへのパスを通すmissile.xmlを作成し、/p-kikka/models/下におきます。

 <?xml version="1.0" ?>
 <PropertyList>
   <path>missile.ac</path>
 </PropertyList>


注記)この項を記述した頃は、よくわからぬままにミサイルの3Dモデルを作成しましたが、今日ミサイルを搭載する機体(発射が可能かを別にして)が増えてきていることから、3Dモデルをコピーしてくれば下手くそな自作をせずにすみます。その際は、コピーをしてきたacファイルの名称をmissile.acとするか、あるいはmissile.xmlファイル中にパス指定する3Dモデルの名称をコピーしてきたacファイル名にするだけでOK。

〔ミサイル発射・弾道〕

・/p-kikka/p-kikka-base.xml中のミサイル発射のキーの指定(Aircraft Help用)

 <?xml version="1.0" ?>
 <PropertyList>
  <sim include="Nasal/views.xml">
    (略)
   <help>
    (略)
    <key>
    <name>Ctrl-J</name>
     <desc>missilesr</desc>
     </key>

   </help>
  </sim>
    (略)
 </PropertyList>


・/p-kikka/p-kikka-yasim-set.xmlにsubmodels.xmlを有効にする記述

 <?xml version="1.0" ?>
 <PropertyList include="p-kikka-base.xml">
  <sim>
     (略)
   <submodels>
      <serviceable type="bool">true</serviceable>
      <path>Aircraft/p-kikka/submodels.xml</path>
   </submodels>

  </sim>
 </PropertyList>


・/p-kikka/submodels.xml中にミサイルの弾道に関する初期値、条件を記述

 追記)が有効に使えることがわかったので、これを加えてミサイルの飛距離を延ばし、関係箇所を修正したのが矢印の部分。

 <?xml version="1.0" ?>
 <PropertyList>
     (略)
  <submodel>
   <name>missiler</name>
   <model>Aircraft/p-kikka/Models/missile.xml</model>
   <trigger>controls/armament/station[0]/missiles</trigger>
   <speed>1000</speed>
  ←500に.すぐに落下することがなくなったので.初速の遅いミサイルなので少しは
   <repeat>false</repeat>
   <count>1</count>
   <x-offset>3.2225</x-offset>
   <y-offset>9.0046</y-offset>
   <z-offset>-1.775</z-offset>
   <yaw-offset>0</yaw-offset>
   <pitch-offset>1</pitch-offset>
  ←0に.すぐに落下することがなくなったので
   <wind>false</wind>
    <buoyancy>32</buoyancy>
  ←<buoyancy>を追加し、スモークも飛距離を延ばします
   <eda>0.000001</eda>
   <weight>0.000001</weight>
   <cd>0</cd>
  </submodel>

     (略)
 </PropertyList>


・/p-kikka/models/p-kikka.xml中にミサイルの装着位置と発射のanimationを記述

 <?xml version="1.0" ?>
 <PropertyList>
     (略)
   <model>
    <path>Aircraft/p-kikka/Models/missile.xml</path>
    <name>Missile-Port</name>
    <offsets>
     <x-m>-1.0094</x-m>
     <y-m>2.7200</y-m>
     <z-m>-0.4715</z-m>
     <pitch-deg>0</pitch-deg>
    </offsets>
   </model>
   <animation>
    <type>select</type>
    <object-name>Missile-Port</object-name>
    <condition>
     <not>
      <equals>
       <property>controls/armament/station[0]/missiles</property>
       <value>1</value>
      </equals>
     </not>
    </condition>
   </animation>

 </PropertyList>


・/p-kikka/p-kikka-set.xml中にミサイル発射のキー指定を記述

 <?xml version="1.0" ?>
 <PropertyList include="p-kikka-base.xml">
     (略)
  <input>
   <keyboard>
    <key n="10">
     <name>Ctrl-J</name>
     <desc>missilesr</desc>
     <binding>
      <command>property-assign</command>
      <property>/controls/armament/station[0]/missiles</property>
      <value type="bool">1</value>
     </binding>
    </key>
   </keyboard>
  </input>

 </PropertyList>


〔ミサイルの発射音〕

・bo105よりHOT.wavをコピーしてきて、/p-kikka/sounds/下におきます。
・/p-kikka/sounds/p-kikka-sound.xmlを編集します。

 <?xml version="1.0" ?>
 <PropertyList>
  <fx>
     (略)
   <Hot>
    <name>HOT_OR</name>
    <mode>once</mode>
    <path>Aircraft/p-kikka/Sounds/HOT.wav</path>
    <property>/controls/armament/station[0]/missiles</property>
    <position>
     <x>1.58</x>
     <y>0.25</y>
     <z>0.13</z>
    </position>
    <reference-dist>100</reference-dist>
    <max-dist>500</max-dist>
   </HOT>

  </fx>
 </PropertyList>


[2008/07/20][2008/09/21追加][2011/10/06注記2追加][2012/12/01更新] [2018/04/23刷新]


   

●Seahawkで投下練習

【コメント】

 他の機体のことは知りませんが、Seahawkで面白いことの一つは、切り離された増槽タンクが消えずに落下地点の地表に残ること。さらに、コンソールに落下地点の経度が表示されること(なぜ緯度も表示させないのか不思議)。これなら、インスタントリプレイでどこに落ちたか確認できますし、また少しNasalを修正すればgoogleマップ上で落下地点を比較することができるわけで、例えば災害による被災地への緊急支援物資などの投下訓練にもってこいです。もちろん目測投下ですが、増槽タンクを爆弾に変えれば、爆撃訓練ができないわけでもありません。ただし建物などに投下しても透過する場合もあります。

 我が愛機p-kikkaと違い、Seahawkではしっかりとプログラミングがされていますので、増槽タンクを切り離した後の機体は重量が軽くなります。左下の画像では投下前後を左右で1枚にしています。わかりにくいですが、胴体の文字をみれば、位置が左右で上下に若干ずれています。ここではデフォルトのままにしましたが、変える必要がある場合は、submodels.xml中はもちろんのこと、重量に関係する各xmlファイル中の記述の増槽タンクと燃料の重量に関する部分を書き改めなければなりません。なお、submodels.xml中のドロップタンクに関する記述を元に作成した前掲のミサイルの場合との違いは、初速度が「0」、風の影響が「true」、ミサイルでは限りなく0に近づけた重量が本来の重さになっていることなどです。

 問題は、コンソールに落下地点の経度だけでなく緯度も表示させること。こちらは、Nasalファイルのseahawk.nasに若干の書き足しでOKでした。なお、seahawk.nasをよく見ると地表に落下した増槽タンクを表示させる記述が見られます。ここを他のものに換えれば、例えば爆撃の跡を表示させることも可能です。ちなみに、Nasalで時間差をもうけて爆発とついで爆撃痕をテクスチャ切り替えで再現してみたのが、右下の画像です。投下ボタンを押すことへの罪悪感を惹起するよう少しは不快な絵柄にしたつもりなのですが、思いとはほど遠く安物のスクロールシューティングゲームのような軽薄な出来には、我ながら少々不快な気分。

注記)バージョンの新しいSeahawkになって、増槽タンクの切り離しは、seahawk-submodels3.xmlでは記述がコメントアウトされ、AIディレクトリ下のdroptank_demo.xmlを利用するようになっています。それとあわせ、seahawk.nasの記述がかなり細かいものとなりました。FlightGear Ver.1.9からNasalが変更になったといわれていますが、それへの事前対応なのでしょうか? なお、この項でふれている爆撃痕の表示方法については、FlightGear Ver.1.9導入後、機能しなくなっていましたが、あらたなseahawk.nasの記述を使うことで、従来どおり爆撃痕を再現できるようになりました。
関連)「当たり判定と空戦」

注記2)燃料とペイロードの重量に関する問題については、こちらを参照いただけると幸いです。

drop↑地表に落ちた増槽タンク。
画像は投下前後の違いを左右1枚で表示した。
投下後の機体は軽くなり浮き上がっている

bomb↑投下した爆弾が爆発しないのも変かと、
Nasalに少し変更を加えてそれらしくしてみた。
何だか不快。すっかり信条に反してミリタリ。


【実際】

〔関連ファイルについて〕

・seahawk-submodels.xmlなどドロップタンクに関する記述は一切変更は加えず、ここではデフォルトのままにしました。

〔Nasalファイルの編集〕

・/seahawk/Models/seahawk.nasファイルの末尾にあるDroptanksの記述中、はじめのほうのprintではじまる行を下記のとおり書き改めます。これでコンソールに緯度も表示されます。

  print (" droptank ", droptank, " lat " , node.getNode("impact/latitude-deg").getValue(), " lon " , node.getNode("impact/longitude-deg").getValue(),);


[2008/08/02][2009/11/07追記][2011/10/06注記2追加][2012/12/01更新][2018/04/23刷新]


   

●機銃搭載

【コメント】

 p-kikkaがモデルとしたme262に機銃発射の機能がつくようになり、p-kikkaにこれを移植した時のメモです。

 me262からいくつかのファイルをコピーしてきましたが、me262の機体のacファイルには内蔵された機銃の3Dモデルが含まれるものの、p-kikkaにすでに存在することもありますが、銃口がなくても弾丸は発射されるのでコピーは必要ないかと(他の機体に移植するなら銃口の穴くらいは設けたほうが良いかも)。なお、submodels.xmlファイル中の弾丸の飛び出す位置は4つありますので、明らかに4箇所の銃口から飛び出すべきものと思われるのだが、なぜか一致していなかったのでこれを修正。またgunsディレクトリ下のfire.xmlのx-mの値も、p-kikkaの機体がme262より短くなっているので変更し、銃口の奥で弾丸が発火しているかのように修正する必要がありました。

shoot↑硝煙を流しながら射撃を続けるp-kikka

F-86f↑他の機体にも機銃は簡単に搭載可能
弾幕に関しては「当たり判定と空戦」の項参照


【実際】

〔me262からコピーするファイル〕

・コピーの対象としたバージョンはME-262_20080808.zip。
・以下コピーしたファイル名。
/Sounds/gunfire_1.wav
/Nasal/weapons.nasおよびrevi.nas
/Models/effects/gunsディレクトリ下のsubmodel.xmlを除くすべてのファイル

〔submodel.xmlへの追加〕

・p-kikkaのsubmodel.xmlにme262の/Models/effects/gunsディレクトリ下のsubmodel.xmlから以下の記述を追加(ここの例では左側の2門のみ)。赤字部分は変更点。

 <!-- left up -->
 <submodel>
  <name>left-up-tracer</name>
  <model>Aircraft/p-kikka/Models/effects/guns/apibullet-tracer.xml</model>
  <trigger>controls/armament/trigger</trigger>
  <speed>2460.0</speed>
  <repeat>true</repeat>
  <delay>0.6</delay>
  <count>-1</count>
  <x-offset>-5.363</x-offset>
  <y-offset>-0.425</y-offset>
  <z-offset>1.214</z-offset>
  <yaw-offset>0.0</yaw-offset>
  <pitch-offset>0.1</pitch-offset>
  <life>4.0</life>
  <wind>false</wind>
  <weight>0.07495</weight>
  <cd>0.193</cd>
  <eda>0.00571198</eda>
  <collision>true</collision>
  <collision-report>sim/ai/aircraft/collision/gun</collision-report>
  <impact>true</impact>
  <impact-report>sim/ai/aircraft/impact/gun</impact-report>
 </submodel>
     (略)
 <!-- left-down -->
 <submodel>
  <name>left-down-tracer</name>
  <model>Aircraft/p-kikka/Models/effects/guns/apibullet-tracer.xml</model>
  <trigger>controls/armament/trigger</trigger>
  <speed>2460.0</speed>
  <repeat>true</repeat>
  <delay>0.6</delay>
  <count>-1</count>
  <x-offset>-5.084</x-offset>
  <y-offset>-1.006</y-offset>
  <z-offset>0.687</z-offset>
  <yaw-offset>0.0</yaw-offset>
  <pitch-offset>0.1</pitch-offset>
  <life>4.0</life>
  <wind>false</wind>
  <weight>0.07495</weight>
  <cd>0.193</cd>
  <eda>0.00571198</eda>
  <collision>true</collision>
  <collision-report>sim/ai/aircraft/collision/gun</collision-report>
  <impact>true</impact>
  <impact-report>sim/ai/aircraft/impact/gun</impact-report>
 </submodel>
     (略)

〔/Sounds/me262-sound.xmlへの追加〕

・p-kikkaのme262-sound.xmlにme262の/Sounds/me262-sound.xmlから以下の記述を追加します(ここの例では左側の2門のみ)。

 <gun>
  <name>Gun up left</name>
  <mode>looped</mode>
  <path>Aircraft/p-kikka/Sounds/gunfire_1.wav</path>
  <condition>
   <and>
    <property>controls/armament/trigger</property>
    <property>ai/submodels/submodel[0]/count</property>
   </and>
  </condition>
  <position>
   <x>-5.363</x>
   <y>-0.125</y>
   <z>0.414</z>
  </position>
  <reference-dist>100</reference-dist>
  <max-dist>500</max-dist>
 </gun>
     (略)
 <gun>
  <name>Gun down left</name>
  <mode>looped</mode>
  <path>Aircraft/p-kikka/Sounds/gunfire_1.wav</path>
  <condition>
   <and>
    <property>controls/armament/trigger</property>
    <property>ai/submodels/submodel[0]/count</property>
   </and>
  </condition>
  <position>
   <x>-5.084</x>
   <y>-0.306</y>
   <z>0.237</z>
  </position>
  <reference-dist>100</reference-dist>
  <max-dist>500</max-dist>
 </gun>
     (略)


〔/Nasal/me262-keyboard.xmlの編集〕

・p-kikkaのme262-keyboard.xmlにme262の/Nasal/me262-keyboard.xmlから以下の記述を追加します。変更点である赤字部分は、キーの割り当ての変更が必要だったため。

 <key n="5">
  <name>Ctrl+E</name>
  <desc>Guns</desc>
  <binding>
   <command>nasal</command>
   <script>guns.fire_MG()</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>guns.stop_MG()</script>
   </binding>
  </mod-up>
 </key>


〔/Models/effects/guns/fire.xmlの編集〕

・p-kikkaの/Models/effects/guns下にコピーしたfire.xmlを編集します。当初<x-m>の値を変更するようにしていましたが、不都合が別途生じていることに気が付きました。デフォルトのままがよさそうです。

 <?xml version="1.0" ?>
 <PropertyList>
  <particlesystem>
   <name>fire</name>
   <offsets>
    <x-m>0.0</x-m>
    <y-m>0.0</y-m>
    <z-m>0.0</z-m>
    <roll-deg>0.000</roll-deg>
    <pitch-deg>-90.000</pitch-deg>
    <heading-deg>0.000</heading-deg>
   </offsets>
   <texture>smoke.png</texture>
   <emissive type="bool">true</emissive>
   <lighting type="bool">true</lighting>
   <condition>
    <property>controls/armament/trigger</property>
   </condition>
     (略)


〔p-kikka-military-base.xmlの編集〕

・p-kikka-military-base.xmlにme262-base.xmlから以下の記述を追加します。赤字部分が追加点。

 <?xml version="1.0" ?>
 <PropertyList>
  <sim include="Nasal/views.xml">
     (略)
   <key>
    <name>Ctrl-E</name>
    <desc>Guns fire</desc>
   </key>

     (略)
  </sim>
     (略)
  <controls>
   <armament>
    <trigger type="bool">false</trigger>
    <master-arm type="bool">true</master-arm>
    <position-norm type="int">1</position-norm>
   </armament>
  </controls>

     (略)
  <nasal>
   <me262>
    <file>Aircraft/p-kikka/Nasal/doors.nas</file>
   </me262>
   <guns>
    <file>Aircraft/p-kikka/Nasal/weapons.nas</file>
    <file>Aircraft/p-kikka/Nasal/revi.nas</file>
   </guns>

  </nasal>
 </PropertyList>


〔p-kikka.xmlの編集〕

・p-kikka.xmlにme262.xmlから以下の記述を追加します。赤字部分が追加点。

 <?xml version="1.0" ?>
 <PropertyList>
  <path>p-kikka.ac</path>
     (略)
  <!-- Effets de tir -->
  <!-- Haut gauche -->
  <model>
   <path>Aircraft/p-kikka/Models/effects/guns/fire.xml</path>
   <offsets>
    <x-m>-5.363</x-m>
    <y-m>-0.125</y-m>
    <z-m>0.414</z-m>
   </offsets>
  </model>
  <!-- Haut droite -->
  <model>
   <path>Aircraft/p-kikka/Models/effects/guns/fire.xml</path>
   <offsets>
    <x-m>-5.363</x-m>
    <y-m>0.125</y-m>
    <z-m>0.414</z-m>
   </offsets>
  </model>
  <!-- Bas gauche -->
  <model>
   <path>Aircraft/p-kikka/Models/effects/guns/fire.xml</path>
   <offsets>
    <x-m>-5.084</x-m>
    <y-m>-0.306</y-m>
    <z-m>0.237</z-m>
   </offsets>
  </model>
  <!-- Bas droite -->
  <model>
   <path>Aircraft/p-kikka/Models/effects/guns/fire.xml</path>
   <offsets>
    <x-m>-5.084</x-m>
    <y-m>0.306</y-m>
    <z-m>0.237</z-m>
   </offsets>
  </model>

     (略)
 </PropertyList>


[2009/03/22][2009/11/09修正][2011/10/06注記2追加][2012/12/01更新][2018/04/23刷新]

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