CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender2.9】海を簡単にシュミレートできる!:海洋モディファイアー
こんにちは!
Blenderでの3DCG制作を勉強中のUEDAです。
Blenderを勉強して、アウトプットの場としてそれぞれの機能をまとめられればと思っています。参考にもなれば嬉しいです!
今回は〔海洋モディファイアー〕についてまとめていきます。
海を生成するモディファイアーになります。
波や水は他にも、物理演算の〔流体〕や〔波モディファイアー〕なんかがありますね。
海の作り方はYouTubeでも取り上げているので、こちらもチェックしてみてください。
海作成に便利な無料アドオンの紹介・解説もしています!
海洋モディファイアーとは?
海洋モディファイアーとは、海を生成できるモディファイアーです。
動画のようにだいぶ激しい波から、穏やかな波までこのモディファイアーの設定のみで自由自在に作ることができます。
また白い泡の部分も別で設定して調整することができます。
下準備
ディスプレイスモディファイアーや波モディファイアーはオブジェクトの頂点を変化させるので、オブジェクトを細分化するかサブディビジョンを追加する必要がありました。
ですが〔海洋モディファイアー〕は海を生成するモディファイアーなので、元となるオブジェクト(形状は何でもよい)さえあれば使用することができます。
生成した海を詳細にする機能が備わっているので、そちらで表面の具合は調整すればOKです。(後述する〔ビューポートの解像度/レンダー〕で調整可)
基本的には生成する使用方法になるかと思いますが、後述する機能に〔ディスプレイス〕があります。
これを使用する場合はオブジェクトに頂点が必要なので、細分化かサブディビジョンで頂点を増やしてあげてください。
使い方
モディファイアーを設定すると画面内での形状は変化していますが、まだメッシュ自体に形状変化が加えられていない状態になります。
適用を押すことでメッシュに形状変化が加えられ、その後は通常通りにモデリングしていくことになります。
なのでもうこれで決定となった場合に適用するようにして下さい!
モディファイアーの設定はオブジェクトモードと編集モードの両方で行えますが、適用はオブジェクトモードでしか行えません。
設定方法
右側の〔プロパティエディター〕からを選択してモディファイアーの一覧を開きます。
物理演算の列に〔海洋〕とあるので、選択すればオブジェクトに海洋モディファイアーが追加されます。
機能
〔海洋モディファイアー〕のプロパティは以下になります。
ここで様々な設定を行うことができます。
1つずつ見ていきましょう。
ジオメトリ
ジオメトリには〔生成〕と〔ディスプレイス〕の2種類があります。
〔生成〕は、海洋モディファイアーを追加したオブジェクトを完全に書き換えます。
主にコチラを使っていくことになるかと思います。
〔ディスプレイス〕は、生成と違い書き換えずに既存のオブジェクトを変化させます。
UV球の表面が細かく変化しているのが分かります。
リピートX/Y
〔リピートX/Y〕は、生成したオブジェクトをX軸かY軸に並べる回数を設定できます。
これらのUV展開図は、UV展開の外側に並べられていきます。
ビューポートの解像度/レンダー
〔ビューポートの解像度/レンダー〕は、生成したオブジェクトをどの程度詳細にするかを設定できます。
ビューポート時とレンダー時で別の解像度を使用することができます。
数値を大きくすることで、波がより詳細になっていきます。
数値を大きくするとより詳細にはなりますが、その分処理が重たくなるので注意が必要です。
時間
〔時間〕は、指定した時間の海の表面に変化させます。
この値をキーフレームとして打つことで、海の動きをアニメーション化させることができます。
”0フレーム”に”1.00”で、”120フレーム”に”10.00”で設定している。
アニメーションの設定は”30fps”の、全体が”120フレーム”にしている。
キーフレームを打つ場所を変化させることで波の変化速度を調整することができます。
キーフレームについて詳しくはコチラの記事をぜひ読んでみてください。
深度
〔深度〕は、海の深さを設定できます。
海が浅い(値が小さい)と、より詳細に小さな波を生成することになります。
特に”0~2m”が変化が顕著で分かりやすいです。
サイズ
〔サイズ〕は、オブジェクトの大きさを変更できます。
波の高さやその他動作などには影響を及ぼさずに、単純な倍率で変更されます。
空間サイズ
〔空間サイス〕は、作り出した海の表面積を拡大縮小させます
先ほどの〔サイズ〕とは異なり、モディファイアーで追加されている変化も変位しています。
〔空間サイズ〕で海の具合を決めて、〔サイズ〕でオブジェクトの大きさを設定する感じですね。
ランダムシード
〔ランダムシード〕は、現在と異なるシュミレートに変更できます。
デフォルトのシュミレートが”0”で、それ以外の数値で異なるシュミレートになります。
波
先ほどまでは生成されたオブジェクト全体での変更を行うプロパティでした。
〔波〕は特に、波だけに変更を加えることができます。
スケール
〔スケール〕は、波を全体的に拡大縮小します。
Z軸以外にも、XYにも変化を起こし、波に対応する泡沫や法線もスケーリングします。
最小の波
〔最小の波〕は、生成される波の最小の大きさを設定できます。
数値を上げることで詳細な波を排除することができます。
波立ち
〔波立ち〕は、XY軸に変位して波のテッペンを鋭くします。
風速
〔風速〕は、波をより小さな波に変化させます。
デフォルトが”30m/s”で、それより小さくすることで変化が起こります。
配置
〔配置〕は、波を単一の方向に整列させることができます。
〔配置〕の値を”0”以上にすることで、関連する〔方向〕と〔減衰〕が使用できるようになります。
〔方向〕は、〔配置〕で整列された波の方向を設定できます。
〔減衰〕は、〔配置〕で整列された方向以外での波を減衰させることができます。
値は”0~1”で、”0”に近づけると〔配置〕での方向以外にも波を作り出します。
”1”に近づけると、〔配置〕での方向以外の波を減らします。
泡沫
この項目では、海の表面に泡を追加することができます。
コチラの公式マニュアルを参考にして泡を追加していきます。
まず追加するために以下のノードツリーを組んでください。
これではまだオブジェクトに泡は追加されません。
次の項目から説明しつつ、泡を正確に追加していきます。
データレイヤー
〔データレイヤー〕は、〔属性〕のノードとリンクさせるために必要な名称を付ける項目です。
ここで付けた名称と同じものを〔属性〕のノードの名前の欄に入力することで泡をオブジェクトに追加することができます。
では今回は、データレイヤーに”Foam”と入力してください。
次に先ほど組んだノードツリーの〔属性〕の〔名前〕の部分にも”Foam”と入力してください。
これでお互いがリンクして、オブジェクトに白い泡が追加されたかと思います。
それぞれのノードを〔Node Wrangler〕の”Shift + Ctrl + 左クリック”で確認してみましょう。
〔プリンシプルBSDF〕は先ほどまでと同様の海になっています。
〔属性〕を確認すると黒白情報のテクスチャの様になっていて、白い部分が泡として追加されていることが分かります。
〔Node Wrangler〕は超絶便利なアドオンなので、絶対に使いましょう。
カバー量
〔カバー量〕は、オブジェクト全体の内どれだけの範囲を泡が占めるかを設定できます。
通常、範囲は(-1.0〜1.0)です。
飛沫
飛沫に関しても、泡沫と同じように設定してみたのですが上手く動作しなかったので今後も調査していこうと思います。
スペクトル
〔スペクトル〕では、海面の様子を変更することができます。
以下の4種類があります。
荒れた海洋 | 泡のある乱流の海(フィリップス)に使用します。 |
従来の海洋 | 波が平衡点に到達できるように数日間風が吹いて海が何マイルも伸びる、広い領域の確立された海に使用します(Pierson-Moskowitz法)。 |
従来の海洋
(尖ったピーク) | ただし、通常の確立された海と同様に、波は時間とともに成長し続け、より鋭いピークを作成します(JONSWAPおよびPierson-Moskowitz法)。これらのピークのシャープネスを定義するために、追加のパラメータが使用されます。 |
浅水域 | 深さが約10メートル未満の浅瀬に使用すると、強風のない小さな湖や池に最適です(JONSWAPおよびTMA-Texel-Marsen-Arsloeメソッド)。 |
上記の表の説明は以下より引用しています。
〔従来の海洋(尖ったピーク)〕と〔浅水域〕では、以下の2つの項目を設定することができます。
ピークのシャープ化
〔ピークのシャープ化〕は、値を大きくしていくことで波の鋭さを緩く設定できます。
フェッチ
〔フェッチ〕は、値を小さくしていくと波がまとまり鋭く設定できます。
ベイク
〔ベイク〕は、特定のファイルにベイク処理することができる機能です。
高度な詳細を作成する場合などは、ベイクすることで処理を軽くすることができます。
これ以外にもリアルタイムでシュミレートするのではなく、ベイク処理されたファイルから取得することによって様々な恩恵があります。
・保存されたデータを再計算するよりも使用する方が高速です。
・これにより、外部レンダラーで海洋データをレンダリングできます。
・より高度なフォームマップが可能になります。
ベイク処理されたファイルは”.exr”形式なので、対応する外部ソフトで更に変更を加えることもできます。(Adobe Photoshopなど)
ベイクしてみよう
ベイクのプロパティを開くと以下の様になっています。
まずは〔キャッシュパス〕でベイク処理したファイルの保管場所を設定しましょう。
次に作ったアニメーションの内、ベイク処理したい範囲を〔開始フレーム〕と〔処理〕で設定しましょう。
〔泡のフェード〕では、波のぶつかり合いによって発生する泡をどれだけ発生させるかを設定できます。
通常はそのフレームの泡しかアニメーションできませんが、この値を調整することで前のフレームの泡を残しつつ計算して作成できます。
要するに、よりリアルな泡を作成できる機能だと思います。
海を制作するときに便利なアドオン
最後に海を制作するときに便利なアドオンを紹介していきます。
Real Time Ship Simulator – 海の上の物体をシミュレート!
海上の浮遊物をシミュレートするアドオンです。
『「海洋モディファイアー」以外のカスタマイズ可能な海でも機能します。』と一応書かれています。
Alt Tab Ocean & Water – 様々な海を作成可能!
色々な見た目の海を簡単に生成できるアドオンです。
海のプリセットが”8つ”とマテリアルが”9つ”用意されています。
まとめ
リアリティのある海を作りたい場合は〔波モディファイアー〕よりも簡単にできるのではないかと思います。
後は海らしく見えるノードを組むことができれば完璧ですね。
あとベイクまではとりあえず使いこなさなくてもそれなりの海は作れるかと思います。
- 時間をキーフレームとして打つとアニメーションが作成可能
- サイズと空間サイズで主な形状を設定
- スケールで波の主な形状を設定
- 泡沫は〔属性〕のノードとリンク