[blender]ディスプレイスで平面から海や湖の波を作る方法(おまけ有り)[3DCG]

blender2.82a仕様
blender2.8で波や水面を作る場合、流体シミュレーションや海洋モディファイアなども有りますが、今回は比較的どの3DCGソフトでも使える古典的なディスプレイスを使った水面の作り方を紹介します。
実は[blender]海や湖の濁りを表現する方法と、3Dフォグとコンポジットの合わせ技で空気感を出す方法の記事の最後でこっそり使っていました。
ディスプレイスなのでシミュレーション系に比べて処理が軽いのがメリットです。それにシミュレーション特有のバグりも有りませんし。

それとディスプレイスを使ったアニメ特有の表現もおまけで紹介します。




ディスプレイスをかけるために平面を分割する
まずはディスプレイスモディファイアですから変形する頂点がなければいけません。
今回は平面を追加し、サブディビジョンサーフェスモディファイアを使いましょう。

モディファイアを理解する意味でも今回は敢えてモディファイアを適用したり編集モードで細分化したりしません。

まず平面を追加し、サブディビジョンサーフェスモディファイアをかけます。四角のままが良いのでカトマルクラークではなくシンプルを選びましょう。
平面なので細分化は強めに最大の6までかけましょう。









これでサブディビジョンで変形できる頂点は出来ました。
続いてディスプレイスモディファイアをかけます。

新規を押してテクスチャを作りテクスチャタブに移動します。
テクスチャタブの上部がDisplaceになっている事、そしてさっき作成したTextureであることを確認しタイプを画像からクラウドなどのランダムな模様に変更します。
そしてテクスチャのサイズなどや模様などを調整します。

モディファイアタブに戻って、ディスプレイスの強さを調整します。
静止画ならこれだけでも良いかも知れませんが、アニメーションに使うためにテクスチャ座標をオブジェクトにします。
そして何でも良いのですがエンプティが最適でしょう。エンプティを追加して先ほどのオブジェクトに指定します。
これでエンプティでテクスチャを制御できます。


エンプティでディスプレイスを制御できるようになったのでエンプティに移動アニメーションをつけましょう。
直線状に動かすのが良いでしょう。
凹凸が動くようになりましたがこれだけではアニメーションとして微妙です。
そこでディスプレイスを一つだけではなく、2、3種類追加しサイズや強さアニメーション方向を変えます。
ディスプレイスを追加し、新規テクスチャを作成しテクスチャタブに移動します。
そして上のDisplaceのところをクリックし、Displace.001-Texture.001を選択します。
そして同様にサイズなどを調整します。そしてディスプレイスでオブジェクト座標を選び新規に作ったエンプティを選び、そのエンプティをアニメーションさせます。
これを繰り返して、サイズや強さアニメーション量を変えたディスプレイスを複数組み合わせると波のような水面が出来上がります。

あとはスムーズシェーダーにしたり滑らかさが足りなかったら再度サブディビジョンを追加すると良いでしょう。このサブディビジョンはディスプレイスで変形した曲面を滑らかにするものです。同じサブディビジョンでもかける順番によって意味が変わってくるのです。

これで完成です。
マテリアルを設定して完成したのが記事冒頭の動画です。
波もそうなんですがこれの意味の大きいところは、実態は頂点が4つの平面ということなのです。モディファイア次第で単純な平面もここまで出来るいうのが大事なところです。もちろん頂点が4つしかないので編集も楽です。

おまけ:CGアニメ製作の現場で使っていた手法


これはクロスではありません。ディスプレイスを使ったフェイク表現ですがアニメの現場でよく使っていました。

スカイダイビングやバイクに乗っている時の服の強いなびきなどはクロスを使うよりディスプレイスの方が上手くいきます。クロスで強風を設定するとバグることが有りますがディズプレイスならそういう事はありませんし、リアルタイムで確認できます。









ディスプレイスとアーマチュアによるアニメーションを組み合わせることもできますので大きななびきはボーンで激しいなびきはディスプレイスで、ということもやりました。

blender2.82aでの作業画面はこんな感じです。
頂点グループによるウェイトでディスプレイスのかかり具合を調整しています。