virt_flyのブログ -163ページ目

virt_flyのブログ

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

イメージ 1
↑靄の中のグラン・パレとエッフェル塔

風向に合わせ旗の向きを変える

  しつこく旗の話ですが、風向きにより旗のなびく方向を変えるのは、意外と簡単なことでした。

  はじめは、Nasalを使わなければならないかと思い、AI機などに影響が及ぶのは嫌だし、データをやりとりする方法もよく理解していないので、手をつけないつもりでした。

  しかし、気にしだしたら気になるものです。なんとかならないかと考え、思いついたひとつが、向きの異なる旗をいくつも用意し、一定範囲に分けた風向きの値を条件に、それに対応する旗以外は非表示にすることで、擬似的に再現しようというもの。

  これでは、どうしても旗の動きが不連続にならざるをえませんし、条件に>=や=<がないのでなおさら。

  思えば、FlightGearの機体にはコンパス(方位計)が装備されているのですから、何のことはない、これをまねればよいはず(早く気が付けよ)。

  なお、風向きと旗のなびく方向は180°正反対かと思いこみ、何らかの処理が必要かと思っていたのですが、そうでもないようです。

  以下は、旗(flag.ac)用の3Dモデル設定xml(flag.xml)の例です。

<?xml version="1.0"?>

<PropertyList>

    <path>/Models/flag.ac</path> ←旗の3Dモデルをpath指定
    <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> 0.000 </pitch-deg>
        <heading-deg> 0.000 </heading-deg>
    </offsets>

    <animation>
        <!-- Objets transparents -->
        <object-name>Plane</object-name>    ←風にはためく旗を再現するため
        <object-name>Plane2</object-name>   用意した4枚の波板。4枚の板
        <object-name>Plane3</object-name>   は波の位置を少しずつずらして
        <object-name>Plane4</object-name>   あります
    </animation>

    <animation>
        <type>noshadow</type>
        <object-name>Plane</object-name>
        <object-name>Plane2</object-name>
        <object-name>Plane3</object-name>
        <object-name>Plane4</object-name>
    </animation>

    <animation>
        <type>rotate</type> ←風向きに合わせてz軸を中心に旗を回転
        <object-name>Plane</object-name>
        <object-name>Plane2</object-name>
        <object-name>Plane3</object-name>
        <object-name>Plane4</object-name>
        <property>/environment/wind-from-heading-deg</property>
        <axis>            ↑風向き
            <x> 0 </x>
            <y> 0 </y>
            <z> -1 </z>
        </axis>
    </animation>

    <animation>
        <type>timed</type> ←4枚の波板を順番に表示・非表示ではためき再現
        <object-name>Plane</object-name>
        <object-name>Plane2</object-name>
        <object-name>Plane3</object-name>
        <object-name>Plane4</object-name>
        <duration-sec>0.15</duration-sec> ←表示の間隔
    </animation>

</PropertyList>

  これなら、滑走路脇に見かける吹流しだって動かせそうです。旗なら、いくら人を驚かす大きなものであっても、大空からは見つけることもできませんし、そうしょっちゅう風向きが変わるわけでもありませんから、動くようにしたところでほとんど意味がないでしょう。

  しかし、よく目につく吹流しは別です。否、離着陸に影響を及ぼす風の動きを把握することは重要なことであり、リアル・フライトシミュレーターであれば、動くようにするのが本来的なのではないでしょうか。

  Flightgearの世界で吹流しを動かしていない理由は何なんでしょうね。
  航空管制がしっかりとカバーし、ILSが完備しているので、最悪風向風速計が故障などの時のために残してあるだけのおかざりとでもいうのでしょうか?


  追記)
  失礼しました。思い込みは恐ろしいですね。次は吹流しの番と、とりあえずファイルをチェックしてみたら、なんと吹流しは動くようになっているではありませんか。
  方向ばかりか、風力で吹流しがなびく様子も。
イメージ 1

↑パリには三色旗がお似合い。グラン・パレの上のできあいの三色旗をはためくものに取り替えました

はためく旗をダウンロードできるようにしました
  はためく旗をつくってみましたが、ある事実に気付きました。
  はじめにつくったのがベトナムの国旗だったのでよかったのですが、三色旗にしたら、なんと表裏の色が一致していません。表も裏も左から青、白。赤の純になっていて、青の裏が赤、赤の裏が青とおかしなことに。本来、布を染色しているのでしょうから、表の色が裏にまで透け、ポール側から青、白、赤となるのが正しく、裏面のテクスチュア貼り付けは裏返して左右を逆にしなければならなかったのです。

  念のために調べてみたら、表裏のデザインが異なる国旗もあるそうです。パラグアイだけだそうですが。一方、星条旗は星型が集まった部分(カントンというそうです)を常に左上にしなければならず、そのため縦に掲揚しなければならない時も、旗を裏返してカントンが左上にくるようにするそうです。イギリスを旧宗主国とする国で、ユニオンジャックを国旗のデザインの1部としている国でも、ユニオンジャックが左上にくるように決められているみたいですね。

  どうやら、国旗の多くは染色、いわば片面印刷で裏までインクが染みとおったままの状態と考えてよさそうです。それがどのくらいの割合になるのか気にはなったのですが、そうしたデータを見かけなかったのは、多分圧倒的な数だからでしょう。

  ちなみに、星条旗では星の数は州をあらわし、州が増えるたびに星の数が増えるので、デザインも少しずつ変わってきたことは、よく知られています。三色旗も、かつて横縞だったり、色の順番が今と違っていたり、各色等分でなく色ごとの比率が決められていたこともあったと知り、おどろきました。

  世界には、ネパールの三角形からなる国旗や真四角のスイスなど、形もサイズもかなり多様なんですね。

  とてもすべてに対応できませんので、ごく一般的と思われるパターンのはためく旗をつくり、ダウンロードできるようにしました。ダウンロードのページをごらんください。

  図柄は三色旗ですが、他の国のものでもテクスチュアのサイズを合わせ、旗の3Dモデルファイル(acファイル)中のテクスチュア指定の部分を書き換えれば、はためくところ見ることは可能です。なお、3Dモデルは旗だけでポールはありません。タイプは染色形式です。

  使用方法は、AIシナリオかなにかで位置(緯度、経度、高度、向き…風向きは反映せず固定です)を与え、旗のxmlファイル(ここではflag.xml)を指定します。
  旗の3Dモデルファイル(ここではnflag5.ac)は、flag.xmlを置くディレクトリより1つ下にModelsディレクトリを設けてそこに置いてください(^_^?)。

  追記)表裏別形式のタイプも、実は北爆シナリオ(Vietnam War 2)の中にすでにベトナム国旗として存在します。必要であればそちらもダウンロードしてとりだしてください。



イメージ 1

↑画像を差し替えました。ポールに結わえられた側の旗の端が、縛られていない方と同じくらいに風に動かされるのはおかしいので、手を加えてみました。少しおとなしくなりましたが、より旗らしくなりました。

動かぬ板のような旗よりはまし
  北爆シナリオの画像で、板の様に真っ平らではためいていない旗の画像が気になってしまいました。

  旗のはためくところを再現してみたいと思ったのですが、旗のはためく様子を撮った動画を見ていても、動きがむずかしくてよくわかりません。複雑な動きを模倣できる技量もありませんから、とりあえずそれらしく見えたら良としようと思ったものの…。

  gifアニメをご覧になって、それらしく見えましたでしょうか?
  動きは単調、かつ怪しげな動きは本来ありえない動きをしている違和感かもしれません。しかも、もともとが動かすつもりもなく手抜きな旗とも言いにくいものですが、実物をよく見れば絨毯のような厚いものになってしまっているのに、旗はほとんど垂れ下がっておらず、その重さまでは再現できているとは言えません。

  なお、もとより大げさなことになりますから、風向きまでは反映していません。少しずつずらしたたわみのある、4枚の板状の3Dオブジェクトを、timedを用いて順繰りに表示させることで、旗を模しています。

  動かぬ板よりはましと、了承ください(^_^?)。