前回は浮き輪が完成しました.今回は水を作っていくことにします.
水面の作成方法も色々あります.水面用のプラグインもありますが,今回は標準機能を使って作成していきます.
水面をつくる
今回使用する機能はディスプレイスメントマップという機能です.前回浮き輪の皺で使った変位デフォーマという機能に似ていますが,ディスプレイスメントマップはレンダリング時にポリゴンを変形させる機能です.
まずはプリミティブオブジェクトの「平面」を作成します.
平面を選択して,
「幅」…「1500㎝」
「高さ」…「1500㎝」
にします.これが水面の形状となります.
プールの底を作る
水面だけだと見栄えがよくないので,プールを想定してボックスで囲っておきます.新規で「立方体」を作成し,
「サイズ.X」…「1500㎝」
「サイズ.Y」…「400㎝」
「サイズ.Z」…「1500㎝」
とし,そのまま「編集可能にする」(C)を実行してポリゴンオブジェクトに変換します.
「ポリゴン」モードに切り替え,「ライブ選択」ツール(厳密には移動,回転,スケールツールの時も選択はできます)で上面ポリゴンを選択し,Shiftキーを押しながY方向に「-130㎝」程度移動させた後,Deleteキーを押してポリゴンを削除します.
さらに,「Ctrl + A」を押してポリゴンをすべて選択し,「メッシュ」→「法線」→「法線を反転」(U~R)を実行してポリゴンの表裏を反転させます.ポリゴンには向き情報があり,選択時にオレンジ色が表,青が裏を表しています.今回の作例では表裏の影響はないのですが,様々な問題を引き起こす要因のひとつでもあります.この辺はまた機会を改めて紹介したいと思います.
水のマテリアル
次は水面のマテリアルを作成していきます.標準マテリアルを新規でひとつ作成します.
「カラー」…「オフ」
「透過」…「オン」
「変位」…「オン」
にして,平面に割り当てます.ひとまずこれで水の質感にはなります.冒頭でディスプレイスメントマップを使うと書きましたが,Cinema 4Dでは「変位」と表記されています.3DCGではディスプレイスメントマップの言葉が標準的に使用されますが,ここからはCinema 4Dに倣い変位と表記していきます.
変位チャンネルを開き,
「最大高さ」…「10㎝」
「テクスチャ」…「ノイズ」
「SPD(サブポリゴン変位)」…「オン」
「形状を丸める」…「オン」
に変更します.ノイズシェーダを割り当てたことでマテリアルプレビューの球体が波打っているのが分かります.変位はバンプや法線マップと違い,ジオメトリそのものを変形させます.「SPD(サブポリゴン変位)」を「オン」にするとレンダリング前にポリゴンをさらに細かく分割してなめらかに変形させることができます.「形状を丸める」を「オン」にすると変形後にスムージング効果が適用され表面がなめらかになります.「分割数」をあげることでより精度の高いディテールを得ることができますが,上げすぎると多くのメモリを使用するため,レンダリング時間の増大につながり,場合によってはメモリが足りずにフリーズ等に繋がるので,注意します.4前後が妥当でしょうか.
ノイズシェーダの設定に入り,
「全体スケール」…「500%」
にします.
実際にレンダリングして確認してみましょう.平面がレンダリング時に細かく分割されて波打っているのが分かります.変位の「最大高さ」を変更して,好みの波の高さにします.
これで大きな波は出来ましたが,小さな波も追加したいと思います.こちらは小さな凹凸なのでバンプチャンネルを使って疑似的な表現にしてみます.
「バンプ」チャンネルを「オン」にしたら,「テクスチャ」に「ノイズ」シェーダを設定します.
ノイズシェーダの設定に入り,
「ノイズの種類」…「Displaced Turbulence」
「全体スケール」…「200%」
にしてレンダリングしてみましょう.小さめの凹凸も加わり,水面のディテールがより出てきたのではないかと思います.
これで水面のマテリアルは完成です.ノイズシェーダは沢山のパラメータがありことからも分かるように,かなり細かな調整もできる優れたシェーダです.もし水面の波のアニメーションをしたいのであれば,「アニメーション速度」を上げることでノイズアニメーションも簡単に作れます.
プールのマテリアルを作成する
プール壁面用に新規標準マテリアルを作成します.こちらは「カラーチャンネル」のカラーに青っぽいカラーを設定するだけにしておきます.できたらプールのオブジェクトに割り当てます.
レンダリングすると次のような画像になります.いろいろ物足りないと感じると思いますが,これから周囲の環境やライティングの設定,屈折現象により発生する集光模様(コースティクス)を追加してよりリッチな絵に仕上げていきましょう.
今回はここまでとなります.