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

2. 泡の表現

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

■ 頂点カラー

泡情報は頂点カラーに書き込まれるため、頂点カラーを作成しておきます。
Generate Foam にチェックをして、出力先の頂点カラー名を指定します。
たとえばこのように、海のマテリアルと泡のマテリアルを用意して、頂点カラーにしたがって混ぜるようなマテリアルを設定すれば、泡の表現のある海をレンダリングできます。
Cycles の場合は、頂点カラー情報を得るには、Attribute ノードを使って直接名前を指定します。
選択肢で選ぶ、といったことができないので、ここは微妙に作りかけ感のある仕様になっています…
泡の表現をいれた海です。

■ ベイク

ベイクによって、変形の度合い、泡(オプション)、法線方向(オプション)が連番のexr画像として保存されます。
指定先のフォルダにこのような形で保存されます。
ベイクした後の連番画像を使って、自力でモディファイアを使って変形、などはする必要はありません。ベイク後グレーアウトした状態になれば、計算を行わずにベイクした情報を使って生成、もしくは変形をしてくれます。

※)むしろ Displace モディファイアで単純に使えるフォーマットとは違うようで、そのまま利用してもきれいな波の形になりません。

ベイクした泡情報には、徐々に消えていく泡の表現を含ませることができます。白い部分の面積が増えたので、ボロノイ模様を使ったより凝った泡の表現にしています。
前節で述べたように、Vertex weight などを利用するためには、作成ではなくて変形を用いて海水面を作成する必要があります。
その際には頂点カラーが使えないので、ここで連番画像で出力した foam_xxxx.exr を利用する必要が出てきます。
連番画像を読み込むテクスチャ(Ocean.Foam)を作成してノードに組み込みました。
Vertex weight を使って、一部を盛り上げてみました。海坊主みたいで面白いですが、ちょっと盛り上がった場所のテクスチャが引き伸ばされているので、工夫が甘いようです。

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

inserted by FC2 system