このチュートリアルでは、ポリゴン プレーンと、Skydome ライトに接続されている HDR イメージのみを使用して海のシーンをレンダリングする方法について説明します。 海のシェーダのディテールは、ベクトル ディスプレイスメント マップから取得します。 ディスプレイスメント マッピングを使用する場合、設定するアトリビュートにはさまざまなものがあります。 ただし、セットアップを行い、適切な設定を使用して納得のいく結果を得ることは非常に簡単です。
海のディスプレイスメント マップは、こちらからダウンロードできます。 |
---|
- 最初に、海のサーフェスとして使用できるポリゴン プレーンを作成します。
海洋マテリアル
- Standard Surface シェーダを作成し、ポリゴン プレーンに割り当てます。 Diffuse を 0 に設定します。Specular Weight を 1 程度に増やします。Transmission Weight を 1 に増やします(これによって水が透明になります)。最後に、水の屈折率を 1.33 に設定します。
ベクトル ディスプレイスメント マップ
使用されるベクトル ディスプレイスメント マップは、32 ビット EXR イメージです。 これはつまり、最高品質のベクトル ディスプレイスメント効果を維持できるということです。 よりリアルな波の効果を作成するには、ベクトル ディスプレイスメント マップを使用して海の波のディスプレイスメントを行います。 これは、1 方向にのみジオメトリをディスプレイスメントする従来のディスプレイスメント マップとは異なり、法線と異なる方向に海のジオメトリをディスプレイスメントします。
波の効果がシャープすぎる場合は、よりスムーズな波を作成するために、ベクトル ディスプレイスメント マップにブラーを適用してみてください。
サブディビジョンの設定
- シーンをレンダリングします。 ディスプレイスメントがありません。 これは、海のプレーンのジオメトリに十分なサブディビジョンがないためです。
- プレーンを選択し、Arnold アトリビュートの下で Subdivision type を Catclark に変更し、反復の数を増やします。3 などの小さな数値から始めます。
Subdivision Type を Catclark に設定、Subdivision Iterations は 3
- 海の見た目に問題はありませんが、さらにディテールが必要です。 Subdivision Iterations を 8 に増やします。 値を 1 段階大きくするたびにメモリ使用量とレンダリング時間が劇的に増えるため、この値を大きくしすぎないようにしてください(反復 1 回につきジオメトリは 4 倍になります)。
Subdivision Iterations は 8。 海の波のディテールが増加している。
暗いまだら部分
海のシェーダは完全に透明なわけではありません。 つまり、入射しないレイは反射せず、その代わりに屈折して水中を進む(実世界と同様)ということです。ただし、シェーダが透明ではないため、レイを終了して黒色にする必要があります。
ジオメトリ法線がレイと同じ方向を向いているのにシェーディング法線がレイとは逆の方向を向いている場合、シェーディング法線で問題が生じることがあります。 この例では、シェーディング(Auto Bump)法線は、水の裏側に当たって下方向に反射しますが、実際はもちろん、レイは水のメッシュの上面に当たります。
実際の水は、グレージング角度でほぼ 100% 光を反射しますが、その場合でも光が波頭の裏の谷から出るまでに数回バウンスします。また、数回のバウンスの後でも、周囲の水が反射するものよりも高い位置の、水平線から入ってくるものを反射する可能性があります。
見た目をよりリアルにするには、水を透明にしてから、海水の色が付いたプレーンを水の下に配置します。 下のイメージ例では、海底の Standard シェーダには Emission Scale 1、および青色/緑色の Emission Color が設定されています。 Subdivision Iterations を増やしたことも、ディスプレイスされた海の波の黒いまだら部分の数を減らすのに役立ちました。
![]() |
![]() |
サブディビジョンの反復 3。一部が黒くなります
|
サブディビジョンの反復を 8 に増やすと問題が減ります
|
波頂の背後にある暗いまだら部分(自己反射)も、Render Settings の Specular Ray Depth を増やすことで改善できます。
![]() |
![]() |
鏡面反射光レイ: 1
|
鏡面反射光レイ: 2
|
透過
海のサーフェスに差し込む光は「屈折」します。水中よりも空気中の方が光の移動速度が速いためです。光が水に到達すると、海のパーティクルによって散乱するか、吸収されます。 海が深くなるほど(密度が濃くなるほど)、通過した光の深度は小さくなります。Standard Surface シェーダの Transmission アトリビュートを使用すれば、この効果を簡単に再現することができます。 海のサーフェスの内側にオブジェクトを配置すると、この効果を確認できます。 光がメッシュ内部を移動する距離が長いほど、青色の Transmission Color の影響を強く受けることが分かります。
![]() |
![]() |
透過カラー: 白
|
透過カラー: 青
|
海のシェーダに適用した場合、閉じたサーフェスの海の内部にある白い円柱に Transmission Color と Depth が及ぼす影響を確認できます。
まとめ
これで、説得力ある海のシーンを作成する方法に関するチュートリアルは終わりです。 正しいディスプレイスメント設定と、高品質の 32 ビット ベクトル ディスプレイスメント、および正しい Standard シェーダ設定を組み合わせれば、リアルな結果が得られるでしょう。 さらに視覚的な魅力をシーンに追加するには、被写界深度を追加したり、魚眼レンズのようなカメラ レンズに変更してみてください。
以下では、通常のジオメトリを使用するのと比較して、ベクトル ディスプレイスメント マップを使用して波の効果を作成するとどれほどのディテールを加えることができるかを確認できます。
![]() |
![]() |
ポリゴン ジオメトリを使用した海の波
|
ベクトル ディスプレイスメント マップは、ジオメトリを使用するよりずっと細部を描くことができます
|
ディスプレイスメント値のアニメーション
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
|
|
|
|
|
その他の例
.ass ファイルはこちらから入手できます。