-Blenderで海シミュレーションをするときの手順と注意点-

2. 泡の表現

先に述べたように、Generate を用いて海を作成した場合には直接泡の情報を得ることができます。変形などによって海を作成する場合には、一度 Bake して連番画像として変形や泡情報を出力し、それを用いて海を作成します。

■ 頂点カラー

泡情報は頂点カラーに書き込まれるため、頂点カラーを作成しておきます。
ここではFoam(泡)という名前にしました。
Generate Foam (泡を生成)にチェックをして、出力先の頂点カラー名を指定します。
Coverage(カバー量)で、泡の量を増減させることができます。
マテリアルの設定で、頂点カラー:Foam の色を使用するようにします。

Vertex Color で直接指定するか(2.81以降)、Attribute (属性) で頂点カラーの名前を入力して色情報を取り出します。
泡の色情報だけ表示した動画です。


泡付きの海を表現するための簡単なシェーダーの例です。
泡を単色にしても良いのですが、少し凝った感じにするために、ボロノイ模様を利用してみます。
海のための青いシェーダーと、泡のための(Voronoi模様を使って)白の混じったシェーダーを Foam の量に合わせて Mix しています。

泡の表現がちょっと単純すぎるかもしれませんが、
泡付きの海面を表現することができました。

■ ベイク

ベイクによって、変形の度合い、泡(オプション)、法線方向(オプション)が連番のexr画像として保存されます。
泡情報をベイクするときには、泡の消える度合い(Fade)を指定することができます。
(値が1に近いほど長持ちする泡になります)
指定先のフォルダにこのような形で保存されます。 変形と泡、法線の情報が
disp_***.exr, foam_***.exr, normal_***.exr
という画像ファイルとして保存されています。
ベイクした後の連番画像を使って、自力でモディファイアを使って変形、
などはする必要はありません。ベイク後グレーアウトした状態になれば、計算を行わずにベイクした情報を使って生成、もしくは変形をしてくれます。
※)むしろ Displace モディファイアで単純に使えるフォーマットとは違うようで、そのまま利用してもきれいな波の形になりません。

ベイクした泡情報には、徐々に消えていく泡の表現ができるので、よりリアルな感じになるはずです。

泡が長持ちするので、全体的に泡の量が増えます。
生成量は、ベイクしない場合よりも少なめの方がバランスが良いようです。
前節で述べたように、Vertex weight などを利用するためには、Generate(作成)ではなくて Displace 変形を用いて海水面を作成する必要があります。
その際には、Generate の時のように頂点カラーが使えないので、ベイクして連番画像で出力した foam_xxxx.exr を利用する必要が出てきます。
連番画像を読み込むノードを組み込みます。
Vertex weight を使って、一部を盛り上げてみました。海坊主みたいで面白いですが、ちょっと盛り上がった場所のテクスチャが引き伸ばされているので、工夫が甘いようです。

ただ、これで泡の表現と、その他の変形などを同時に扱うことが可能になるので、工夫次第でいろいろと面白いこともできるでしょう。

inserted by FC2 system