流体表現をやる前のことはじめとしてボクセルを実装してみました。
手前の白いワイヤーの形状がボクセルで表現しています。とりあえず形だけは
できましたが、まだ法線計算もできていないし、UVも計算できていないです。。
ボクセルが出来たところで、ちょっとリアルタイム流体表現の話でもしてみます。
昨今のリアルタイム流体表現は、自分が知る限り大きく2つの表現に分かれるかと
思います。ボクセル表現とスクリーンスペース表現です。
・ボクセル
等間隔グリッドごとの情報を元にサーフェイスを生成。
利点:分割数次第でスクリーンスペースと比べて滑らかになる。
欠点:分割数が多いほど頂点計算やロック処理が重い。
・スクリーンスペース
ハイト情報のパーティクルを一時バッファに描画し、バッファをブラーした後、
バッファのハイトを元に法線を計算してレンダーバッファを描画。
利点:サーフェイス生成を行わないので効率が良い。
欠点:複数回描画なのでピクセルシェーダ負荷が大きい。
こんなところでしょうか。自分が思う限り、ボクセルはサーフェイス生成が面倒な上に
半透明の形状は不得意な印象なのでスクリーンスペースの方が実装が楽かな
という気がします。はい、「なぜボクセルにした!」という話になりますね笑。
リアルタイムのサーフェイス生成は近年のGPUでようやくそれなりにできるように
なったかなという感じですが、今後よりこの動きが加速するんじゃないかというのを
見越しての実装です。何より、動的にオブジェクトを生成できるっていうのは楽しい
ことだと思うんですよね。昔のゲームでも、例えばアイテムを合成したり町づくりが
できたりといった要素が入っているものは楽しかった印象があります。
実は3Dになってから逆にサーフェイスやオブジェクトが少し静的になった部分が
あるなと以前から思っていましたが、嬉しいことにようやくそれを乗り越えられるような
いい時代がやって来たのかもしれません。…て、一体何をいっているのやら笑。