このチュートリアルでは、HtoA を使用して惑星の大気をレンダリングする方法について説明します。ただし、この方法は他の Arnold プラグインにも適用できます。このガイドの例は、ACES を使用して作成されています。ACES を使用する場合は、OpenColorIO (OCIO)設定パッケージをダウンロードし、基本設定の Houdini.env で OCIO 変数を作成する必要があります。たとえば、OCIO = C:\OCIO\aces_1.0.3\config.ocio のようにします。このチュートリアルについて、Slava Sych 氏に感謝いたします。
シーン ファイルは、こちらにあります。 |
---|
![]() |
![]() |
|
|
地球
球面ジオメトリ
雲
大気
開始
- 最初に、HoudiniFX を起動して、新しいシーンを作成します。
- shop コンテキストに移動し、3 つの Arnold Shader Network を作成します。
- 名前を earth、cloud、atmosphere に変更します。
ジオメトリを準備する
- OBJ コンテキストで file ノードを作成し、名前を「Planet」に変更して開きます。この内部で Box プリミティブを作成します。 カメラで惑星の一部を作成するため、Box を使用します。この例の最後に、完全な球面の惑星に対するジオメトリの準備方法を示します。
- Box ノードを Transform に接続します。Box -> Transform
Transform ノード
- Scale Y パラメータを 0.5 に設定します。
- Uniform Scale を 5 に設定します。
- Transform を Subdivide ノードに接続します。 Transform -> Subdivide
Subdivide
- Depth を 4 に設定します。
- Subdivide を Blast ノードに接続します。Subdivide -> Blast
Blast
- Group で 0-1279 プリミティブを選択します。
- Blast を uvtexture ノードに、uvtexture を Subdivide に接続します。 Blast -> UVTexture -> Subdivide
Subdivide
- Depth を 3 に設定します。
これで、地球のベース シェイプができました。
- ここで、最後の Subdivide ノードから 3 つの異なるブランチを作成します。
- 3 つの Null ノードを作成し、名前を atmo、earth、cloud に変更します。
地球
Null -> Material -> Null
Earth マテリアル
Material パラメータのパスを、shop コンテキストの earth マテリアルに設定します。
球面ジオメトリ
UVTexture
Sphere
Transform
Subdivide
Depth を 4 に設定します。
Cloud_transform
Uniform Scale を 1.002 に設定します。
Atmo_transform
Uniform Scale を 1.003 に設定します。
シーンの準備
- OBJ コンテキストに移動します。
- 次に、カメラを作成し、次のトランスフォームを設定します。
Translate: -0.790778 1.13185 3.00743
Rotate: -1.66924 -13.6321 5.43062e-09
- View に移動し、Resolution を 1920x1080 に設定します。
- Arnold Light を作成し、次のトランスフォームを設定します。
Translate: -0.0490026 0.686259 0.158599
Rotate: -150.418 16.6297 16.5069
- light_type を distant に変更します。
- Color を 1 1 0.811 に設定します。
- exposure を 3.3 に変更します。
- angle を 60 に変更します。これにより、ライトのシャドウがソフトになります。
レンダリング設定
- out コンテキストに移動します。
- Arnold ノードを作成し、次のパラメータを設定します。
サンプリング
- AA: 8 ~ 16
- SSS: 5
- volume_indirect: 3
- Autobump_for_SSS を有効にします。
レイ深度
- volume: 1
Earth
- OBJ コンテキストの Planet 停止地点に戻り、null (earth_out)を選択します。ジオメトリのこの部分のシェーディングを開始します。
- shop コンテキストに移動し、Arnold Shader Network (earth)を開きます。
- standard_surface シェーダを作成し、OUT_material サーフェスに接続します。
ここで、3 つの Image ノードを作成し、diff、water_mask、bump という名前を付けます。
$HIP 変数を使用してテクスチャをロードします。
例:
- diff: $HIP/tex/earth_diff_01.jpg
- water_mask: $HIP/tex/earth_water_mask.png
- bump: $HIP/tex/earth_bump.png
Diffuse
Image(diff) -> ColorCorrect -> SurfaceShader
Image (diff) rgbaを ColorCorrect の入力に接続し、ColorCorrect rgba を Surface Shader の base_color に接続します。
ColorCorrect
- Gamma: 0.8
- Hue Shift: -0.048
- Saturation: 0.7
Specular
Image (water_mask) -> Range -> SurfaceShader
- Image (water_mask) rgba を Range input に接続し、Range r を Standard Surface specular に接続します。
Range
- Output Min: 0.2
- Output Max: 0.1
- smoothstep を有効にします。
Bump
Image (bump) -> bump2d -> standard_surface
(bump) rgba を bump_map に、bump2d vector を standard_surface.normal に接続します。
Bump2d
- bump_height: 0.01.
standand_surface を選択し、次のパラメータ値を設定します。
Base
- base: 1
- diffuse_roughness: 0.3
Specular
- roughness: 0.45
- IOR: 1.2
Render ビューに移動し、Arnold Rop を選択して、レンダリングを開始します。
次のような結果になります。
雲
Cloud
Null -> Transform -> Material -> Null
Transform
- Translate Y を 0.003 に設定します。
Cloud マテリアル
Material パラメータのパスを、shop コンテキストの cloud マテリアルに設定します。
- Planet 停止地点に戻り、null (cloud_out)を選択します。
- shop コンテキストに戻り、Arnold Shader Network (clouds) を開きます。
- standand_surface シェーダを作成し、shader を OUT_material surface ノードに接続します。
- Image シェーダを作成し、cloud テクスチャをロードします。
Image->bump2d->standand_surface
- Image rgba を Bump2d bump_map に、bump2d vector を standand_surface に接続します。normal に接続します。
Bump2d
- bump_height: 0.1
facing_ratio -> range
facing_ratio および range ノードを作成します。facing_ratio.float を range.input に接続します。
Facing Ratio
- bias: 0.91
- gain: 0.466
- linear を有効にします。
Range
- input_min: 0.205
- input_max: 0.344
- smoothstep を有効にします。
Range -> layer_rgba
Image -> layer_rgba
- layer_rgba を作成します。image.rgba を layer_rgba input1 に、range.rgb を layer_rgba input2 に接続します。
LayerRGBA
- layer_2 operation を multiply に設定します。
layer_rgba -> range -> standard_surface
layer_rgba -> standard_surface
- layer_rgba.rgba を range.input に、range.rgb を standard_surface.emission に接続します。
Range
- input_min: 0.1
- output_max: 0.43
- layer_rgba.rgba を Standard Surface opacity に接続します。
- standard_surface を選択し、次のパラメータを設定します。
Base
- base: 1
Specular
- roughness: 0.7
- IOR: 1.2
Subsurface
- Type: randomwalk2
- subsurface: 1
- radius: 1 0.6955 0.391
- レンダリングを開始すると、次のようになります。
大気
Atmo
Null -> Transform -> PolyExtrude -> Group -> Transform -> PolyFill -> Material -> Null
Transform (pos)
- Translate Y を -0.001 に設定します。
PolyExtrude
- Distance を 0.02 に設定します。
Group
- Group Name で、名前に edge_grp を設定します。
- Group Type がエッジ(Edges)に変更されます。
- Keep by Normals を有効にして、Direction Y を -1、Z を 0 に設定します。
- プロシージャル エッジ選択のため、Spread Angle を 68 に設定します。
Transform (border_flatten)
- Group パラメータで edge_grp を選択します。
- Translate Y を 0.610 に設定します。
PolyFill
ボリュームを使用する場合、穴のないソリッド ジオメトリがいくつか必要になります。
- Fill Mode を Quadrilateral Grid に変更します。
- Deform Patch を無効にします。
Atmosphere マテリアル
- shop コンテキストで、パスを atmosphere シェーダに設定します。
- merge を作成し、ブランチを 1 つにマージします。merge を null に接続して、「OUT」という名前を付けます。
- Planet 停止地点に戻り、ノード グラフ(OUT)で最後の null を選択します。
- shop コンテキストに移動し、Arnold Shader Network (atmosphere)を開きます。
- standard_surface シェーダを作成します。shaderを OUT_material サーフェスに接続します。
- 大気を作成する場合、ボリュームではなくサーフェス シェーダを使用できます。これにより、芸術的観点によるコントロールが可能になります。透過率の深度もボリュームであるため使用できます。これはボリューム レイ深度とともに機能します。これにより、多くのボクセルやボリューム アーティファクトを含めずにボリューム VDB にサーフェス変換を使用した場合よりも、柔軟性の高い設定、レンダリングの高速化、およびノイズの削減が可能になります。ただし、このテクニックは大気を見る場合に適している点に注意してください。大気を通過するカメラの場合は、ボリューム VDB を使用する必要があります。 それでは始めましょう。
FacingRatio -> Range -> SurfaceShader
- facing_ratio および range シェーダを作成します。facing_ratio.float を range.input に、range.rgb を standard_surface.transmission_depth に接続します
Facing Ratio
- bias: 0.646
- gain: 0.267
- linear を有効にします。
Range
- output_min: 0.2
facing_ratio -> range -> color_correct -> standard_surface
- facing_ratio.float を range.input に、range_rgb を color_correct.input に、color_correct.rgba を standard_surface.opacity に接続します。
Facing Ratio
- bias: 0.948
- gain: 0.202
- linear を有効にします。
Range
- output_max: 6
- smoothstep を有効にします。
- bias: 0.173
- gain: 0.7
ColorCorrect
- gamma: 0.9
standard_surface シェーディング ネットワーク
standard_surface を選択し、次のパラメータを設定します。
- specular: 0
- roughness: 0
- IOR: 1
- transmission: 1
- scatter: 0.358878 0.497024 1.07771
- scatter_anisotropy: 0.7
これで、最終的な惑星の大気をレンダリングできます。
惑星の暗い側の雲の放出強度を弱めたり、惑星の暗い側のテクスチャのマスクを取得するには、shade_mode を lambert に設定した utility シェーダを使用できます。放出テクスチャにシェーダを乗算します。