On this page | |
Since | 11.0 |
このプロシージャルは、CVEXシェーダを使って、ボリュームレンダリング用の空間における3Dフィールドのセットを定義します。 CVEXシェーダ上のエクスポートパラメータは、レンダリング中に評価され、同じ名前のサーフェスシェーダパラメータへバインドされます。 もしアイソサーフェスをレンダリングするなら、Mantraはアイソサーフェスのルート検索用のこのフィールドに依存するので、 シェーダから“density”エクスポートを定義しなければなりません。
以下の入力パラメータは、VEX Volume Proceduralが使うCVEXコンテキスト内で使用することができます。
P
オブジェクト空間内で評価する位置。
Time
サーフェスシェーダへ渡されるTimeグローバル変数と同義で、評価用のモーションブラーインターフレーム時間を表示します。時間は、0から1の間の値です。
このプロシージャルを使っているとき、常に明示的境界ボックスを指定しなければなりません。
境界ボックスを指定しなかった場合、機能の一部がレンダー内でクリップされることがあります。
VEX Volume Procedurals用のデフォルトのレンダリング品質は境界ボックスのサイズを基準に設定されるので、
境界ボックスが大きいと、Ray Marchのステップのサイズも大きくなります。
vm_volumesteprate
を使えば、デフォルトの品質を調節することができます。
パラメータ ¶
Main ¶
Shader
ボリューム内でフィールドを定義するCVEXシェーダを指定します。
Octree Divisions
ボリューム用の加速度データ構造の構築で使用する区画の数を指定します。 デフォルトである1区画では、レンダラーがボリュームに対して境界ボックス全体の内部にサンプルを生成するようになります。 より大きな値ほど、レンダリング前に、均一なグリッドに対してVEX関数を評価する前処理フェースがトリガーになって、ボリュームの重要な部分を見つけ出そうとするので、 空っぽの画像の部分がより高速にレンダリングします。
Note
あなたのボリュームに対する形状サイズが区画サイズより大きい場合、1より大きい値は、正しい結果を生成するだけです。 そうでない場合、前処理フェーズは、後にレンダー内で姿がなくなるようなボリューム内の小さいディテールを失うので、 Octree Divisions の値を上げることはお勧めしません。
IFD Bounds ¶
Bounding Box
境界ボックスコントロールでは、参照ジオメトリ用の境界ボックスを指定することができます。 この境界ボックスが“on screen”の場合のみ、Mantraは参照ジオメトリを読み込みます。 Bounding Box を No bounding box required に設定することができ、その場合Mantraは常に気にすることなく参照ジオメトリを読み込みます。 また、 SOP Bounds パラメータのSOPの境界ボックスを参照することで、境界ボックスを指定することもできます。
SOP Bounds
参照したい境界ボックスのジオメトリ。
Min Bounds
Explicit Boundsに設定した時の最小境界ボックスの寸法。
Max Bounds
Explicit Boundsに設定した時の最大境界ボックスの寸法。
Examples ¶
VolumeNoiseIso Example for Mantra: VEX Volume Procedural shader node
このサンプルでは、Mantraのボリュームレンダリング機能を使って、CVEXシェーダで定義したアイソサーフェスをレンダリングする方法を説明しています。 noiseフィールドをCVEXシェーダで生成し、それをVEX Volume Proceduralに接続しています。 密度が0のサーフェスを見つけて、法線を表示するSimple Surfaceシェーダを使ってシェーディングすることで、ボリュームをシェーディングします。