NEWS

第3回のテーマは、
「水面のインタラクティブシミュレーション」を解説したいと思います。

鬼武者3では、フォトリアルスティックなゲームを作るためさまざまな手法を用いていますが、そのひとつに水面処理があります。

今回は、私たちの身近にある水をどのような効果を与え、鬼武者3のゲーム上で表現しているのか? を解説したいと思います。

もともと、リアルな水面を作るきっかけとなったのは、ゲームキューブ版、バイオハザードのフォトリアルな水処理を見たときで、これを鬼武者3でも使えないのか? が、きっかけでした。
これを “PS2の描画性能でやれば一体どうなるか”というある意味挑戦意欲で実装が始まりました。

水面のテクスチャがない映像
水面のテクスチャなし映像
▲クリックすると映像が再生されます

この上の映像は、PS2のCPUパワーを使い 水面を表現した場合です。この場合、CPUパワーを多く消費しますし、なおかつ見た目が良くありません。ちなみにCPUとは人間でいう“考えて実行する”脳のようなものです。
PS2では、EmotionEngineの中に含まれます。

鬼武者3の水面では、この計算に加えて、流体動きの計算をシミュレーションできるようにしています。波の立ち方、液体の粘性、波紋の広がり、障害物にあたって波が反射する様子を計算して動かしています。水面の計算は膨大ですが、EmotionEngineを最大限の性能まで引き出すと、CPUだけでやるよりも10倍以上速い演算性能を発揮できます。

これによって流体の挙動シミュレーションを非常に高速に計算することが可能になりました。この性能はPS2ならではのもので、ずば抜けた演算性能で実現が可能になりました。

蜂蜜状態の水から通常の水になるまでのリアルタイム映像
蜂蜜状態の水から通常の水になるまでのリアルタイム映像
▲クリックすると映像が再生されます

また、粘性流体を持つことによって、水面の弾性のある表現が可能となっています。ポリゴンの分割数を多くすればするほど、より細かな表現ができます。この水面には見ての通り、まだ水らしさが欠けています。

さらに、水の質感を上げるため透明度を持たせ光の屈折を入れます。PS2のグラフィックエンジンであるGraphicSynthesyzerの機能を使用します。GraphicSynthesyzerとは名前の通りグラフィック部分を担当する機能です。画面に表示されているポリゴンは全てGraphicSynthesyzer が表示しています。
あらかじめGraphicSynthesyzerに水面下の情報を与えておき、EmotionEngine で波紋のシミュレーションをする一方、屈折の計算と照明計算を行ないます。その後にGraphicSynthesyzerが実際に画面上に屈折の入った水面を表示します。

さらに透明・屈折を追加
さらに、透明・屈折を追加
▲クリックすると映像が再生されます

透明度・屈折を持たせることにより見た目が水に近づきます。
これで随分水らしくなりました。

鬼武者3では上記のように、EmotionEngineとGraphisSynthesyzerのもつ性能を最大限に引き出すためにそれぞれのユニットに作業を分業させフル稼働させて描画しています。まるでバケツリレーのような忙しい作業がPS2のなかで繰り広げられていることになります。

これでも十分に綺麗かもしれませんが、鬼武者3では妥協せず、さらに追加して映像効果を実装しています。
最後に水面にスペキュラーを入れます。
スペキュラーとは、光沢のある物体に光を当てたとき、視点と物体の角度によって光源自身が映り込んでできるハイライト部分です(明るい部分)。表面の滑らかさにより弱く広がって見えたり小さく点状の強い輝きになったりします。CGにおいて、スペキュラーを適切に設定すれば表現がよりリアルになります。

最後にスペキュラーを追加
最後にスペキュラを追加
▲クリックすると映像が再生されます

このシーンでは空の光の照り返しや森の木々の枝や葉が水面に映りこんでいます。

ただ、鬼武者3では1ステージだけ水面処理の光の屈折を入れていないところがあります。このステージは水面の面積が大きく、また敵(幻魔)がたくさん出ることから屈折を省いて処理を軽減しています。

今回は、第3回なので、かなり鬼武者3の核心に迫った記事にまとめました。
今までの“シリーズ『鬼武者の技術』”の内容で最も難しい内容になりましたが、理解はできたでしょうか!?


次回の第4回で、最終ですが楽しみに待っていてください。
・・・次回へ続く。


FOOTER

CLOSECLOSE