ボリューム ディスプレイスメントへのノイズの正規化のチュートリアル
|
|
![](../../../../../images/ax-normalized-noise-scalar_default_1.0050.jpg) |
![](../../../../../images/ax-normalized-noise-vector1-1-0050-1.jpg) |
noise_mode: scalar (既定) |
noise_mode: vector |
この短いチュートリアルでは、volume_displacement と組み合わせた場合に Arnold noise シェーダを正規化するワークフローについて説明します。この例では、volume_displacement を使用して煙の VDB を細かく描きます。
- まず、Arnold ボリュームを作成します。
- ボリュームで煙の VDB ファイルを開きます。
注:
こちらから、さまざまな VDB ボリュームをダウンロードできます。
Standard Volume
- standard_volume シェーダをボリュームに割り当てます。
![](../../../../../images/ax-normalized-noise-vectormap-2.gif)
Arnold ボリュームでレンダリングされたボリューム VDB
- Arnold noise シェーダを作成し、standard_volume シェーダの displacement パラメータに接続します。
非常に簡単に見えますが、問題があります。ボリュームは片側にオフセットされており、1 方向にのみディスプレイスメントされています。
![](../../../../../images/ax-normalized-noise-1comparison-3.gif)
1 方向にのみディスプレイスメントされた noise
この問題は、noise シェーダが 0 ~ 1 の場合に発生します。煙は体積で測定します。平坦なオブジェクトではありません。そのため、テクスチャを 0~1 から -1~1 にリマップする必要があります。
Range
- range シェーダを作成し、ボリュームの displacement に接続します。noise シェーダを range シェーダの input に接続します。
- range シェーダで output_min を -1 に変更します。 これによって noise シェーダが両方向にオフセットされ、より正確になりました。
![](../../../../../images/ax-normalized-noise-range-4.gif)
range シェーダの使用前、使用後
- ただし、これはすべて 2D エフェクトです。3D 空間でオフセットを作成する必要があります。これには、ベクトル ノイズを使用します。それには、noise シェーダに移動して mode パラメータを scalar から vector に変更し、range を(-1,-1,-1)に変更します。 これで、noise シェーダは 3D 空間で正しくディスプレイスメントをオフセットするようになりました。
VectorMap
- 他の方法として、noise を vector_map シェーダに接続します。vector_map シェーダを standard_volume シェーダの displacement パラメータに接続します。
- vector_map シェーダで、color_to_signed を有効にします。このパラメータは、ベクトル ノイズを 0 ~ 1 から -1 ~ 1 に正規化します。また、tangent_space を無効にします。
重要:
通常、特にボリューム コンテキストでは、別のシェーダを追加しないでください。
![](../../../../../images/ax-normalized-noise-vectormap-5.gif)
noise _ -> _vector_map -> volume_displacement
![](../../../../../images/ax-normalized-noise-image2019-6-14-9-54-17-6.png)
このチュートリアルのサポートについて、Slava Sych 氏に感謝いたします。