お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[GDC2008#48]ハイトフィールドを使った実用的な流体表現
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2008/02/26 20:53

イベント

[GDC2008#48]ハイトフィールドを使った実用的な流体表現

画像集#002のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現
 流体モノの第2弾だ。AGEIAはハイトフィールド(Height Field)を使った水の表現についてのセッションをGDC08で行っていた。
 ハイトフィールドとは,水面の高さを示すバッファを操作して液体表現を行うもの。2.5次元(つまり,モノは3次元なのだがデータ構造が2次元ですみ,簡単に扱える)形状の波しか描画できないという制限はあるものの(逆巻く波は無理),その範囲でなら十分にそれっぽい液体を高速に表現できる手法だ。
 まず最初に,動画から見てもらったほうがいいかもしれない。


画像集#003のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現
画像集#006のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現
 これがハイトフィールドの簡単な例だ。最初に1次元での波の動き,そしてそれを2次元に拡張した動きを示している。いずれもそれぞれの地点の水位の高さだけを操作して実現された波である。

 講演を行ったMatthias Muller-Fischer氏は,液体表現でもっとも基礎となるコードを挙げ,これはC言語における“Hello World”と同じものだとした。uとvの二つの配列をループ内で処理していく簡単なコードだ。

 また,ハイトフィールド以外の波の作り方をいくつか挙げていたが,とくにオフラインで計算する手法では512×512×512という大容量のボクセルを使い,1フレームあたり10〜50秒もかけてレンダリングが行われる。さすがに画像は綺麗で水の挙動も問題ないのだろうが,ゲームで使うには,もっとローコストでなければならないのはいうまでもない。

画像集#004のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現 画像集#005のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現

画像集#007のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現
 そのためには,まず解像度を下げること,3次元から2次元にすること,見えている部分だけ処理すること,遠くにいくほど手を抜くこと(LoD)などを駆使していく必要があるという。物理演算の解像度は下げつつも,シェーダを使って見た目は高解像度でレンダリングする手法などを紹介していた。いくつかある波の表現方法で,ハイトフィールドはかなり負荷が軽いことも,当然ながらゲーム向きな手法といえる。

 最初に示した式のように,ループ内でデータを加算していると,値が大きくなりすぎるなど,発散して破綻してしまうことがある。この場合,いくつか対処法があるのだが,結局のところ,物理的に正しい処理を行うとコストがかかったり,うまく丸め込める保証をすることが難しくなる。範囲外になったら切り捨てるような処理は物理的には正しくない。しかしそういった割り切りもリアルタイム処理では必要になるようだ。

画像集#008のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現 画像集#009のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現

 波頭が立つような大きな波はハイトフィールドでは実現できないわけだが,そういう状態になる部分から別途パーティクルを生成することで波頭を実現することもできる。そういったハイブリッドな液体表現の研究も行われているという。

画像集#011のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現 画像集#012のサムネイル/[GDC2008#48]ハイトフィールドを使った実用的な流体表現

 別の記事で述べたように,コストを十分にかければパーティクルによる液体表現は自由度が高く,今後検討するに値する技術である。しかし,液体を扱う多くの場合においてハイトフィールドでまかなえることも事実であり,あくまで現状で“使える”技術としての意義は失われるものではない。PhysXでは,登場当時からの車に水がかかるデモなどで見られるように,パーティクルによる液体の表現が追求されている(粗くていま一つ自然ではないが)。PhysX用のSDKでは,近くハイトフィールド用のライブラリが追加され,簡単なコードで実装できるようになるとのことで,より実用的な液体表現が加わることになる。
 NVIDIAに吸収され,どうなることかと思われたAGEIAだが,今後はCUDAなどにも技術が移され,より広い形でゲームに反映されていくと思われる。PhysX PPUなしでも物理エフェクト全開のゲームが多く登場することを期待したい。
  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月07日〜11月08日