virt_flyのブログ -166ページ目

virt_flyのブログ

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

イメージ 1
 

カタパルトからのM6A晴嵐のAI機の射出

 

  引き続いてFlightGear用I-400の改造の記録です。読み飛ばして結構です。

  ここでは、I-400のカタパルトから水上機の射出を可能にする改造を扱っています。改造のついでにということだったのですが、クレーンの改造よりよほど手間のかかるものでした。

  基本は、ミサイルの発射や爆弾の投下よろしく、水上攻撃機M6A晴嵐を武器扱いして、<submodel>を記述するものです。カタパルトからの射出といっても、あくまでもAI機としてのものです。

  てはじめに、i400-set.xml中にsubmodelsや武器の使用を有効にする記述を書き加える必要があります。

●i400-set.xmlへの追加

<?xml version="1.0" encoding="ISO-8859-1"?>

<PropertyList include="i400-base.xml">

  <sim>

    <description>I-400 (YASim)</description>
         ・
         ・
         (中略)
         ・
         ・
  <submodels>
   <serviceable type="bool">true</serviceable>
    <path>Aircraft/I-400/Models/submodels.xml</path>
  </submodels>

   </sim>

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

</PropertyList>


  次は、核心となるsubmodels.xmlの新規作成です。射出後のM6A晴嵐の動きを設定します。下記にかかげた例の各数値はもっと調整が必要でしょう。射出位置、ピッチ、射出速度…。

●submodels.xmlの新規作成

<?xml version="1.0" encoding="UTF-8"?> ←encordingは統一した方がよさそう

<PropertyList>



  <submodel>
    <name>M6A</name>
    <model>Aircraft/I-400/Models/Aichi-M6A/m6a.xml</model>
    <trigger>controls/armament/station[0]/M6A</trigger>
    <speed>120</speed>
    <repeat>false</repeat>
    <count>1</count>
    <x-offset>10</x-offset>
    <y-offset>0.65</y-offset>
    <z-offset>8</z-offset>
    <yaw-offset>0</yaw-offset>
    <pitch-offset>5</pitch-offset>
    <wind>false</wind>
    <eda>0.000001</eda>
    <weight>500</weight>
    <buoyancy>32.0</buoyancy>
    <cd>0</cd>
    <life>150</life>
    <aero-stabilised>true</aero-stabilised>
    <collision>true</collision>
    <impact>true</impact>
  </submodel>

</PropertyList>


前後が逆になっていますが、射出まえのM6A晴嵐の準備をすませておかねばなりません。3Dモデル設定ファイルi400.xmlに以下のような記述を追加します。

●i400.xml(3Dモデル設定ファイル)

<?xml version="1.0" encoding="ISO-8859-1"?>

<PropertyList>

<path>i400.ac</path>
         ・
         ・
         (中略)
         ・
         ・
   <!-- Aichi M6A -->
   <model>
    <name>M6A</name>
    <path>Aircraft/I-400/Models/Aichi-M6A/m6a.xml</path>
    <offsets>
      <x-m> -21.9 </x-m>
      <!--  <y-m> 0.0 </y-m>  -->
      <y-m> 0.355 </y-m> ←機体の位置をカタパルトに合わせてみた
      <z-m> 4.2 </z-m>
      <pitch-deg> 10 </pitch-deg>
     </offsets>
    </model>
         ・
         ・
         (中略)
         ・
         ・
    <animation>
     <type>select</type>
     <object-name>M6A</object-name>
     <condition>
      <not>
       <equals>
        <property>controls/armament/station[0]/M6A</property>
        <value>1</value>
       </equals>
      </not>
     </condition>
    </animation>

</PropertyList>


  最後に、トリガーキーの設定です。ctrl+KキーでM6A晴嵐の射出を行うものとし、i400-keyboard.xmlに記述を追加します。なお、必須事項ではありませんが、忘れた時のために新設した射出キーのことをhelp.xmlに書き込んでおけばベターでしょう。

●i400-keyboard.xmlへの追加

<?xml version="1.0" encoding="ISO-8859-1"?>

<PropertyList>
         ・
         ・
         (中略)
         ・
         ・
    <key n="11">
     <name>Ctrl-K</name>
     <desc>M6A</desc>
     <binding>
      <command>property-assign</command>
      <property>/controls/armament/station[0]/M6A</property>
      <value type="bool">1</value>
     </binding>
    </key>

</PropertyList>


●help.xmlへの追加
 

<?xml version="1.0" encoding="ISO-8859-1"?>

<PropertyList>

    <title>Submarine Type I-400</title>
         ・
         ・
         (中略)
         ・
         ・
    <key>
     <name>Ctrl+K</name>
     <desc>Aircraft catapult</desc>
    </key>

</PropertyList>
イメージ 1
↑潜航する伊400に、立ったクレーンはすでにない。
 

クレーンの表示・非表示にかかわるプログラムの記述

 

  念のため、I-400の改造の記録を残します。読み飛ばしてください。

  使用したのは、FlightGear用のI400-04-03-2014.tar.gzで、Helijahのハンガーからダウンロードしました。

  まずクレーンの問題ですが、<select>を用いて表示したり非表示にするにしても、何をきっかけにしてするかの問題です。面倒なので潜水艦が沈みだしたらクレーンを非表示することにしました。nキーを押したときを条件にします。

  しかし、これではshift+Nキーを押すと、水中でもクレーンが立ってしまいますので、もう一つ条件をプラスする必要ができます。そこで、条件はshift+Nキーを押したとき、潜水艦の高度が海面に浮上した状態であることとしました。

  なお、クレーンの3Dモデルのobject名は、3Dモデリングソフトにて確認しておきます。3Dモデル設定xmlファイルであるi400.xmlに、クレーンであるgrueの表示・非表示に関わる記述を新たに加えます。

●i400.xml(3Dモデル設定xmlファイル)への追加

<?xml version="1.0" encoding="ISO-8859-1"?>

<PropertyList>

   <path>i400.ac</path>
        ・
        ・
       (中略)
        ・
        ・
  <animation>
    <type>select</type>
   <object-name>grue</object-name>
   <condition>
    <and>
    <equals>
     <property>/sim/SDM/controls/valve-norm</property>

      <value>1</value>
    </equals>
    <greater-than>
     <property>position/altitude-ft</property>
     <value>-16</value>
    </greater-than>
    </and>
   </condition>
  </animation>

        ・
        ・
       (中略)
        ・
        ・
</PropertyList>

 

イメージ 1

 

晴嵐を射出する伊400

 

  人それぞれにこだわりってあるのでしょうが、見た目や飛ばしてみたコントロールの具合、実機に似た飛行特性の再現だったりと、それは人にもよるようです。航空力学などまったく無知なわたくしめとしては、気になるのはもっぱら見た目。(^_^?)

  しょうもないことなのですが、FlightGearに登場した伊400型潜水空母については、水上機をつりあげるクレーンがどうにも気になってしまいました。潜水する時も立ったまま、いつも立ったままでは邪魔で水上機をカタパルトから射出もできないと。

  しかたがないので、I-400を勝手に改造させてもらうことにしました。クレーンは面倒な出し入れは考えず、安易ですが<select>による表示・非表示の切り替えで対応することにしました。せっかくですから、AI機の晴嵐を射出できるようにしました。レシプロ機ですから、プロペラの回転を再現しなくてはならないのが、少々面倒。
 

イメージ 2


  うん、うん、こうでなくちゃ。スクリーンショットを証拠においておきます。

  余談ですが、潜水艦に搭載の重火器は、潜水の度に撤去されるものと思っていました。昔見た映像で大砲を据え付けているように思ったのですが、砲弾を運んでいただけだったのでしょうか。インターネットで調べたら、グリースを塗ったり蓋をつけるくらいで、そのままだとか。そこで、今回の改造でも、らくちんなので火器は潜水時も据え付けたままにしておきました。