blenderで海

blenderでの海の作り方です。アニメーション用。oceanを使ったシンプルなやり方なので特に目新しい手法はないんですが、やってみるとけっこうサクっとできて軽めの海が欲しいなっていう時に便利そうなので記録ついでに。(*blenderのバージョンは2.66を使用しています。)

海のメッシュ作成

  1. なんでもよいのでメッシュをシーンに置く
    ocean_ss00
  2. 置いたメッシュにObjectModifierの中から”Ocean”を追加するとポンとOcean専用の平面が現れる。
    ocean_ss01
  3. まずは波を動かすためにTimeのパラメータにキーフレームを打つ。値はフレーム数/フレームレートくらいでゆったりめの波。
    ocean_ss02
  4. 波が動くようになったら細かいパラメータの調整に入る。各パラメータが相互に作用する感じなので狙った波にするのはちょっとむずかしい。
    コツというよりは基本的な事なんだろうけど自分は以下のことだけ気にしながら調整しました。
    Resolutionは最初に決めてしまう・・・この値は解像度(ポリゴンの密度)を上げ下げするんだけどディテールが細かくなるだけでなくて波の形状自体もけっこう変化する。ので最初軽めの解像度で作業して最後にぐっと解像度を上げようとしたら波の感じがずいぶん違ってしまってパラメータもつけなおしになってしまった。なので最初に決めておきたい。
    その他のパラメータについては”Waves”の中にあるパラメータを少しずついじることになる。以下、雰囲気だけなので正確かはわからないけど主要なパラメータの役割
    Choppines・・・波の鋭角さ。値上げると波のエッジが鋭角になっていく。
    Alignment・・・波の方向性を整える。値を上げると特定方向から波が発生するようになる。
    Scale ・・・波の大きさ(高さ)が大きく変わる。要微調整。
    SmallestWav・・波の最小単位の大きさ。値あげるとまろやか波になる。
    Direction・・・波の進む方向。Alignmentに値が入ってると関係してくる。
    Damping ・・・Alignmentと関連して波の減衰率みたいなことと思われる。
    WindVelo ・・・風の影響。波表面の動きに変化がつくっぽい。
    使いたい用途が海のどまんなかでOKであればAlignmentやDampingなどはあまり気にしないほうが海原っぽくなると思います。逆に浜辺など表現するときはここらへんのパラメータが肝になるのかなと想像。

環境

今回はマテリアルにリフレクションをつけるのでマテリアル設定の前に環境を作っておく。シリンダーに空のテクスチャを貼ったものを海を囲う形で配置。
ocean_ss04

海のマテリアル設定

oceanモディファイヤが適用されたオブジェクトにマテリアルをひとつつける。デュフューズカラーは透明色ということでほとんど黒に。スペキュラは明るめの青をいれ、リフレクション(mirror)の値を強めに。レンダリング時は先に用意した空の色がリフレクションで映りこむことになる。
ocean_ss_par01

飛沫の表現

  1. いったんoceanモディファイヤのパラメータに戻り”Generate Foam”にチェックを入れる。 すぐ下のCoverageの値で飛沫量が変化。
  2. テクスチャを新規で足しTypeを”Ocean”に。
  3. “ModifierObject”の項目でOceanが適用されたオブジェクトを選択後、その下のOutputを”Foam”に。
  4. Mappingのとこは”UV”にしてやると波の形状と一致するっぽい。(この辺いまいちわからず)
  5. InfluenceはデフォルトでColorにチェックが入ってるけどEmitあたりにもチェックしないと弱い感じだった。

ocean_ss_par02

レンダリング

あとは普通にレンダリングすれば海のできあがり。
サンプルでレンダリングしたムービーはBlenderのコンポジットで被写界深度を入れたり飛沫を少し上乗せしたりしてますがレンダリング自体はかなり軽かったです。 海とは関係ないけどBlender内でコンポジット作業が手軽にできるのはすばらしいなと思いました。


4件のコメント

  1. 海をゲームエンジン内で動かしたいのですが、どんな方法があるかわからないでしょうか?
    細分化されたポリゴンをリアルタイムで動かすのはきついと思うので、ノーマルマップかけたテクスチャを動かすのだと思いますが、具体的な方法ってわかりませんか?
    海外のチュートリアルなどを調べているのですが、情報が古かったりで使えないんです、、、(´・ω・`)

    1. blenderのゲームエンジンはまったく使ったことないのでなんとも言えないんですが、
      こんな感じでかなりきれいにシェーダー作ってる人達もいるようですね。
      http://blenderartists.org/forum/showthread.php?242940-unlimited-planar-reflections-amp-refraction-(update)
      blendファイルも配布してるようだし一度中身を見てみてはどうでしょうか?
      作り方はレンダー用とリアルタイム用ではやはり全然違ってくるはずです。
      昔はタイルテクスチャをスクロールしたりしてましたが今だとやはりシェーダーになるんじゃないかと。

  2. すいません、シリンダーの内側に上手く画像が貼れないのですが、
    そこはどのようにやっていらっしゃるのでしょうか?
    詳しく教えていただけると幸いです。

    1. 筒を作成→エディットモードでuを押して筒状に展開→UVマップエディタで調整→筒のオブジェクトに新規マテリアル→ノードエディタでカラーマップに空の画像を指定
      みたいな流れですが…
      特に変わったことはしてないので具体的にはこの辺の動画が参考になるかもです。

コメントする

メールアドレスが公開されることはありません。