Archive for the ‘開発ドラクロワ’ Category

うまくいかないフォグ

遠くの景色ばぼやーっとぼけていること表現するLingo上の「fog」というstatementがあります。これがうまくいきません。

設定して、再生すると、天球にちらちらとFlicker現象が出て、見るのが億劫になります。

しかたないので、EZ Flightでは以下のようにしました。

カメラの視点を基準点とする一定の半径の円筒をつくり、そのカメラと水平な部分を一番濃く、上下に離れた部分を薄く塗ったスクリーンをつくりました。カメラが移動するたびにその円筒形のモデルを上下左右にカメラに合わせて移動することにより、遠景のぼやーっとぼやけた感じを出すことにしました。

よく画面を見ると海面上に白い大きな輪のようなものが動くのが見えると思います。それがこの円筒のへりの部分です。

オートパイロット(昔の名前で出ています。)

SKYWAVE(EZ FLIGHTの旧名)の開発を始めたのは2004年。もう8年前の話です。開発環境はMacromedia Directorと3dsmax。ところが、いくらやってもオートパイロットができませんでした。実はこれはDirectorのバグではないかと思っています。エラーをエラーとして表示しないバグ・・・

オートパイロットの仕組みは簡単です。標準機(4番機)の上下、左右に参照ポイントを作っておきます。これは目には見えません。そして、前方の空間の1点を設定点として定め(Program では Nav Point と呼んでいます。)、この点に向かって編隊が進むように編隊の上下動(Pitch)、左右旋回動(Yaw)、左右の傾き(Roll)をコントロールしてやります。前方の目標点(Nav Point)と基準機上の各4点の間の距離差を計算し、Nav Point に機が向かうように徐々に移動させます。そして、Nav Point と編隊が一定の距離まで近づいたら次のNav Point を探してやります。この繰り返しで、編隊はずーっと飛行を続けています。左右の参照ポイントは機を水平に保つためにも使われます。

最初、4番機のモデルの名前はairship_copy3というモデル名でした。その機の各4つの設定点とNav Point との間の距離の計算で編隊全体をオートパイロットで動かそうとしました。ところが、後でそのairship_copy3というモデル名をairshipGp4という名前に都合があり、変更しました。airship_copy3というモデルはもはやプログラム上にはないので、そのまま飛ばそうとすればエラーメッセージが出るはずです。

ところがDirectorのバグなのか、消えたはずのairship_copy3というモデル名をいつまでも覚えていて、その「まぼろし」の機と前方のNav Pointの間で計算をするようになり、編隊は飛行を続けました。そして、私はいつしかairship_copy3をairshipGp4という名前に変更したことを忘れてしまいました。

スタートボタンを押します。すぐにオートパイロットに入ります。ある程度まではうまくいくのですが、次のNav Point を決める段階で編隊が暴れだしました。原因は8年間わかりませんでした。

ところが昨年、見直したとき、オートパイロットの計算では確かにairship_copy3という名前が参照されているにもかかわらず、プログラムのどこにもその定義が書いてないことがわかりました。普通ならばエラーメッセージを出して終了するところなのですが、8年間、エラーメッセージを出すことなく、Directorは動いたのでした。

Directorに欺かれた感じです。それがわかったのは昨年の夏。8年ぶりに長いプログラムを読み返し、発見しました。モデル名を変えても、いまだに昔の名前でプログラムは計算をしていたのです。しかし、次のNav Point あたりではそれができなくなり、編隊があばれはじめていたのです。

私は8年間、頭をかかえていました。

オーシャンランド(概要)

オーシャンランド(概要)

オーシャンランド(免災)

オーシャンランド(免災)

Seasteading
清水建設 GREEN FLOAT

清水建設 GREEN FLOAT

海面上昇

海面上昇