ソフトを開発しようと思った動機、背景
以前から水の波紋を使ったセーバを作ろうと思っていましたが、さすがに画面いっぱいに広がる波紋をシミュレーションするにはコンピュータの処理が追いつかず、お蔵入りになっていました。最近になって、パソコンの性能も上がり、DirectXを使うことで使用に耐えると判断し、作成を開始しました。開発中に苦労した点
小さな苦労の連続でしたね。で、苦労というか、薀蓄を少々ご紹介します。波動のアルゴリズムはWeb上に公開してあったJavaのソースを参考にしました。原理は波動の微分方程式を元にしているようで、サンプリング密度を上げればかなりリアルになるようです。ただ、このままではフィールドの端で波が反射してしまうので、自分なりに修正しました。このへんは原理がわかっていないので、今でも謎です。
水面に水底のテクスチャを貼っただけでは、旗がはためいているようにしか見えません。そこで、光の屈折を計算してテクセル(テクスチャ上の座標)を変化させ、テクスチャに“歪み”を与えています。このへんはきれいに行ったので、おもしろかったです。
作っているうちに欲が出て、魚なんぞを入れたくなってきました。これはどのようにしているかというと、水底のテクスチャに3Dで描いた魚のポリゴンを貼り付けています。DirextXの機能で似たものがあるようですが、勉強不足で使えません……。魚の動きは、それっぽくなってると思います。波打ち際でターンする動きにもご注目を。水面で揺らめく効果は、下手なアクアリウムソフトよりおもしろいんじゃないかと自画自賛しています(^^;。
ユーザにお勧めする使い方
このソフトはパソコンにとって高負荷になるため、発熱対策に自信のない機種では魚エフェクトなどの効果を外してください。
今後のバージョンアップ予定
このソフトの課題はなんといっても高速化でしょう。DirectX 8の適用を検討中です。
最後になりますが、特殊な描画方法を使っているため、機種によってはうまく表示されないことがあります。異常が生じた場合は使用を控えてください。
(yutaka)