WaterSurfaceの概要
WaterSurfaceは、ゲーム向けの流体表現を行うシミュレーション・レンダリングシステムです。物体が水面に落ちたり、水上を物体が移動したりする際の、物体と水面の振る舞いを、流体力学に基づいてリアルタイムに計算します。既存の簡易的な水面シミュレーションと違い、水位が大きく変化するような、よりダイナミックな水面の変化を扱う事ができます。
さらに、物体やキャラクターからの外力によって、水面の動きを変化させることも可能です。 水面が特に激しく波立つ部分では、水しぶきや水煙・泡が発生します。これらの要素も物理シミュレーションで動きを計算するため、一般的なパーティクルシステムに比べて、より水面の動きと調和した自然な水しぶきが表現できます。
WaterSurfaceの特徴
水位
水の質量移動を考慮した計算により、従来の水面シミュレーション手法と比べ、より大きな水位の変動を扱うことができます。また、「水がない」状態もそのまま扱うことができます。格子点に対して自由に水位(質量)を増減できるので、今までにない水の動きの表現が可能です。



外力
水の任意の部分に力を加えて、水の挙動に影響を与えることができます。力の加わった格子点に運動量が加算され、シミュレーションの結果として波が発生するため、アーティストによる決め打ちではない、キャラクターや物体の動きにあった自然な水面の変化を実現できます。
水しぶき
水の動きが激しいときに、水しぶきを発生させることができます。発生条件はその瞬間の水面の形状と速度に基づいて調整することができます。発生した水しぶきは、軌跡が計算され、着水して消滅します。水しぶきは個々に質量をもっており、着水と同時にその質量は水場に戻されます。大きな水しぶきが、着水と同時に小さな波を起こすこともできます。
今後のバージョンで追加される機能
WaterSurface の今後のバージョンでは、以下のような新機能を予定しています。
凹凸のある地形と水の相互作用
凹凸のある地形に、水を流したり、水を貯めることができます。地形の形状をインタラクティブに編集できます。水は地形変化に応じて流れを変え、移動していきます。たとえば、山の中に谷を掘り、水を流し込んで池を作ったり、池の岸を崩して、川に変化させる、といったよりダイナミックな流体表現が可能です。
ハイトマップに変換できるものなら、どのようなゲーム用地形データでも利用可能です。
(画像は現在開発中のものです)
以下の画像は、水を囲む地形(境界条件)を変化させた事によって生じた水の流速の変化を、ライン表示で可視化したものです。(画像は現在開発中のものです)
水中に浮く物体の動きを表現
流速場と浮力から、水中の物体の軌道を計算することができます。 たとえば、水中に沈んだ物体や、水面に浮いた漂流物が水の流速にのって流れていくような表現ができます。