
↑靄の中のグラン・パレとエッフェル塔
風向に合わせ旗の向きを変える
しつこく旗の話ですが、風向きにより旗のなびく方向を変えるのは、意外と簡単なことでした。
はじめは、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>
航空管制がしっかりとカバーし、ILSが完備しているので、最悪風向風速計が故障などの時のために残してあるだけのおかざりとでもいうのでしょうか?
追記)
失礼しました。思い込みは恐ろしいですね。次は吹流しの番と、とりあえずファイルをチェックしてみたら、なんと吹流しは動くようになっているではありませんか。
方向ばかりか、風力で吹流しがなびく様子も。

