ウォーター ボトルのチュートリアル

このページでは、プラスチック ボトル内の液体をレンダリングする際の高度なヒントについて説明します。リアルな結果を得るために必要なさまざまなシェーディング要素を確認します。また、特定のレイの計算を最小限に抑えるために、rayswitch_shader シェーダの使用方法についても確認します。この方法でレンダリングすると、レンダリング品質を損なうことなく時間が短縮できます。

液体と容器のサーフェスを処理する場合には、考慮すべきさまざまなシェーディング要素があります。物理的な精度を優先する場合は、既定の standard_surface シェーダの設定で十分です。

レンダリング時間を優先する場合は、いくつかのアトリビュート(internal_reflections および caustics)の無効化を検討する必要があるかもしれません。レンダリング時間をさらに短縮するには、二次レイの transmission_roughness など、時間のかかるレンダリング アトリビュートを無効にした rayswitch_shader を使用してみる必要があります。

このページの内容を確認する前に、ガラスと液体のサーフェスのレンダリングに関するモデリング要件を詳しく理解するために、「Arnold を使用してガラス サーフェスをレンダリングする」のチュートリアルを最初に確認することをお勧めします。

シーンのセットアップ

プラスチック ボトルと液体サーフェスの両方を十分なレイが通過できるように、transmission_ray_depth を 7 に上げています。シーンの照明には area_light を使用し、light_shapecylinder に設定しています。また、このシーンにはもあります。

ボトルをシェーディングする

次の例では、プラスチック ボトルのシェーダとして使用される standard_surface シェーダのさまざまなアトリビュートを変更して得られる効果を示します。

内部反射を有効にする

内部反射をオフにすると、二次バウンスにおける間接鏡面反射光と完全なミラー反射の計算が無効になります。

「Enable Internal Reflections」を無効にしてレンダリング時間を大幅に短縮しても、プラスチックの外観に影響を与えてしまいます。そのため、この機能を使用する前に、品質の精度と時間のどちらが重要かを確認する必要があります。

internal_reflections: オン internal_reflections: オフ(レンダーが大幅に高速になる)

水をシェーディングする

液体のメニスカス

液体の上部はメニスカスで正確にモデリングされています。メニスカスは、表面張力によって容器のサーフェスまたは他のオブジェクトに近付くように引っ張られた液体の上面のカーブです。

液体のメニスカスをモデリングします。サーフェスの上部を下方に引っ張るだけの十分なエッジ ループがあることを確認してください。

プラスチック シェーダは、プラスチックを通過する光線と液体内部に影響を与えることに注意してください。そのため、レイがプラスチックと液体の両方のサーフェスを通過できるように、transmission_ray_depth の値を高く設定する必要があります。specular_ior は水の値(1.33)に変更されました。base_weight は 0.9 に下げられています。

次の例では、水シェーダのさまざまな standard_surface アトリビュートを変更して得られる効果を示します。

ベース ウェイト

既定では水は暗く見えます。Diffuse の値を少し上げると、水の見た目が「明るく」なります(これは物理的に正確な手法ではありません)。

base_weight: 0 base_weight: 0.2

鏡面反射光

水がボトル内部で鏡面反射光しないようにするため、specular_weight は 0 のままです。

specular: 0 (水は正しく表示されています)。 specular: 1 (水は正しく表示されていません)。

内部反射を有効にする

次のイメージでは、enable_internal_reflections の使用時と未使用時における水面のレンダリングの違いを示します。違いはわずかですが、主にボトルの底で確認できます。

internal_reflections: オン internal_reflections: オフ

コースティクス

caustics メニューは standard_surface シェーダ内にあります。standard_surface シェーダ内のこのスイッチは、間接拡散反射光レイとして鏡面反射光レイと透過レイを「表示」できるかを指定します(既定では、standard_surface シェーダの直接拡散反射光ライトと間接拡散反射光ライトのみが拡散反射光レイとして計算されます)。

次のイメージでは、Caustics の使用時と未使用時におけるボトルと液体のレンダリングの違いを示します。

caustics: 無効 caustics: 有効

不透明な水

水を不透明にするために、transmission_roughness を 0.4 に上げています。この値を上げると、レンダリングの時間が長くなります。rayswitch シェーダを使用して、レンダリング時間を最小限に抑えています。

Rayswitch

rayswitch シェーダはシーン内で計算されるレイの数の削減に役立ち、品質を低下させずにレンダリング時間を改善できます。

液体の見た目を不透明にするのに必要な不透明の粗さを得るには、一次レイを屈折させる必要があります。それに対して、光沢、シャドウ、拡散反射光の二次レイは、鏡面反射と透過の粗さが指定されていない(レンダリング時間が短縮される) 2 つ目のシェーダ(Water_Secondary_Rays)を使用しています。

次のイメージで確認できるように、レンダリングの品質の違いはわずかですが、時間は大幅に削減されています。

no rayswitch_shader rayswitch_shader (レンダーが高速になる)