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

1. 導入から海の作成、もしくは板からの変形

Blenderでは海のシミュレーションがデフォルトで用意されています。波打ち際のような浜辺との相互作用があるような海はできませんが、海洋の波の形状や、泡だった白波をある程度の品質で再現できます。
海シミュレーションは、ほかの物理シミュレーションのようにシミュレーションの項目に分類されておらず、モディファイアの一種として実装されています。



■ 作成と変形

モディファイアを追加すると、海が生成されます。基本のサイズは -25 から 25 までの大きさ50の正方形です
基本モードには、Generate(生成) と Displace(ディスプレイス) の2つがあります。
Generate だと元のメッシュの形状とは無関係に海の形状が作成され、 Displace の場合は元のメッシュ形状を変形します。
同じサイズ、同じResolution(解像度)で分割された板を元にDisplace すれば、Generateと同じ形状が得られます。

2つのモードの違いを見てみます。Generateで直接作成した海と、形状を合わせて板から変形してつくる海、どちらも形は一緒ですが、いくつかの違いがあります。
Generate 速度は速い
泡情報が得られる
元のメッシュにある Vertex weight などの追加情報を利用できない。
Displace 間に変形の手間がある分遅い
泡情報を直接は得られない(ベイクして利用することはできます)
元のメッシュにある Vertex weight などの追加情報を利用できる。

Displaceの利点としては、たとえば vertex weight を使って追加のモディファイアで変形、といった操作が可能な点にあります。


上記のように、「できる機能できない機能」がそれぞれに存在するため、どちらの機能も同時に利用したい、という場合には、一旦 Bake 機能を使って海の情報を連番画像として保存して、テクスチャとして利用することになります。

また、Generateで生成する泡情報に関しては、そのフレームに発生する泡のみが反映されるため、発生した後に徐々に消えていく泡は表現できません。
Bake機能を使って泡情報を出力するときは、ゆっくり消えていく泡の効果(Foam Fade)を含んだ出力が可能になっているため、より良い表現が可能になっています。


■ 時間進化

波を動かすには、時間(Time)を変化させます。
このとき、単純にキーを打ってしまうと、スーッと動き始めてスーッと止まる不自然な海になってしまいます。
ちゃんと補間のタイプを指定して(ショートカット T)直線的に時間を変化させることを忘れずに…
単純な海の表現です。
Array (配列) モディファイアで複製を奥に配置しています。
ちゃんとつながるパターンになっていて、超巨大なシミュレーションをしなくても、繰り返しで広い海の表現ができるようになっています。
(とはいえ、繰り返し感を減らすにはある広い範囲のシミュレーションが必要になるでしょうけれども…)

inserted by FC2 system