密度 | カラー | シェーディング | マーチング | ルックアップ テーブル | プレビュー | Framebuffer | ファイナル ギャザリング | シャドウ | Render Tree の使い方 | [Particle Volume Cloud]シェーダを使用する場合の基本的なワークフロー
パーティクル ボリューム クラウド シェーダは一種のボリューム シェーダで、ポイント クラウドのバウンディング ボックスをボリュームとしてレンダリングします。このシェーダを使用すると、クラウド、ダスト、スモーク、フォグなど、低密度のパーティクル ボリュームを作成できます。
ボリュームやレイトレース シャドウのレンダリングには時間がかかる場合があるため、このシェーダではルックアップ テーブルを使用して、隣接するボクセルのシャドウやその他のボリューム データを保存します(ボクセルとは、3D 空間内のポイントおよびエリアです)。
パーティクル レンダラまたはパーティクル シェイパー シェーダ コンパウンドを使用すると、パーティクル ボリュームを簡単に操作できます。両シェーダ コンパウンドには、パーティクル ボリューム クラウド シェーダ、パーティクル密度シェーダ、およびその他の、基本的なボリューム エフェクトを設定するのに役立つシェーダが含まれています。また、これらのシェーダには公開されるパラメータは少ないので、簡単に使用できます。
「Particle Renderer Compound(パーティクル レンダラ コンパウンド)」を参照してください。
ここでは、パーティクル ボリューム エフェクトにライティングをセットアップするための一般的なヒントを紹介します。
すべてのレンダリングにおける経験則は、「常に最初にライティングを設定してパーティクルに適切な外観を作成し、それからカラーを設定すること」です。
[シェーディング](Shading)タブで、レンダリングに使用するシーン内の特定のライトを選択できます。既定では、シーン内のすべてのライトが使用されます。
[カラー](Color)タブのライトの[スキャッター](Scatter)オプションを使用している場合は、ライト(ポイント ライトなど)の[ライトの減衰](Light Attenuation)の値を設定して、距離に応じてライトの強度がどのように減衰し、ライトの散乱に影響を与えるかを決定することができます。
カラー値の設定に関するヒントについては、「Particle Volume Cloud(パーティクル ボリューム クラウド)」を参照してください。
カラー吸収(Color Absorption) |
カラーを吸収する水の挙動をシミュレートします。水は赤を最初に吸収し、次に緑を吸収します。レンダリングするボリュームに水の外観を与える場合は、このオプションを選択します。 [密度]タブの[レイ毎タイプ > 吸収](Per Ray Type - Absorption)オプションで、ボリュームに使用される吸収の全体的な量を設定します。 |
アンビエント オクルージョンは、シャドウに適切なディテールを与える間接イルミネーションや、フラクタル スカラ シェーダによって作成されるようなフラクタルなノイズ パターンをシミュレートします。
アンビエント オクルージョンを実行すると、オブジェクト サーフェイス上の指定ポイントの上にある事前定義された半球状の領域にサンプル レイがキャストされ、他のジオメトリによってポイントがブロックされる範囲(オクルージョンが実行される範囲、すなわち、遮られる範囲)が決定されます。
遮られる量が決定したら、遮られるポイントと遮られないポイントに、それぞれ明色と暗色が戻されます。オブジェクトが部分的に隠れる場合は、遮られる(隠れる)量に応じて明色と暗色がミックスされます。
以下のグラフは、ライト対カメラ(それぞれ、ライト対法線)の角度に応じた、オブジェクトの輝度を示しています。各シェーディング モデルで、異なる強さの値が使用されています。
以下の図は、ある球状ボリュームのレンダリングをさまざまなカメラ方向から示したものです。
法線シェーディングのないシェーディングはこの例ではコンスタントに見えますが、もちろんシャドウがあります。これらもシェーディングの役割を果たしており、ライトから離れたボリューム エリアを暗くしています。
マーチングは、カメラ レイでボリュームがサンプリングされる頻度を定義します。
ルックアップ テーブルは、パーティクル ボリュームの解像度が非常に低くなったものです。高速ルックアップを行うために、カラーとシャドウの情報を保存します。シェーダがこの低解像度ボリュームのすべてのシャドウを計算し、最終的なボリュームに適用します。作成した最終的なルックアップ テーブルはパーティクル ボリュームの平均的なシェイプをカバーしている必要がありますが、ディテールは必要ありません。ディテールは、入力テクスチャ シェーダによって追加されます。
ルックアップ テーブルの設定方法については、「ルックアップ テーブルを設定する」を参照してください。
一般的に、このシェーダではボクセルを使用してパーティクルごとのボリュームを作成します。ボクセルのサイズを定義するには、ルックアップ テーブルのセルのサイズを設定します。セルのサイズを小さくすると見栄えがよくなり、シャドウも美しくなりますが、時間とメモリが多く必要です。セルのサイズを大きくすると時間もメモリも少なくて済みますが、補間はほとんど行われず、外観やディテールが劣ります。レンダリングのすべての面において同じことが言えますが、時間とメモリを重視するか、美しい見栄えを重視するか、難しいところです。
ボリュームのディテールが多くなるほど、シャドウに必要なセルも多くなります。セルが少ないままだと、シャドウでちらつきが発生します。ボリューム内のディテールが多く、シャドウをスムーズにするために大きなセルを使用する場合は、セルごとの入力サンプルの数を増やすと、優れたボリュームになります。
ボクセルのサイズを定義するには、ルックアップ テーブルのセルのサイズを設定します。このサイズは、パーティクルのサイズに適したサイズに設定するようにしてください。
たとえば、パーティクルのサイズが 0.5 単位の場合で、パーティクルが空間で分離するときは、[セルサイズ]をあまり大きな値に設定しないでください。セル サイズを大きくすると、ルックアップ テーブルでディテール(空間内の単一のパーティクル)が見逃された場合、ブロックがレンダリングされないことがあります。
ただし、設定値が小さすぎてもいけません。パーティクルのサイズが 10 の場合、セルサイズを 0.5 に設定しないでください。セル サイズが小さいと、レンダリング時間が長くなります。これは値のテストの際には好ましくありません。
最大メモリ: クラッシュを避ける為(Max Memory to Prevent Crash) |
シェーダの調整中、メモリ上限に達してしまうことがよくあります。このパラメータはこうした状況に対応し、mental ray でレンダリングが停止してしまうのを回避します。ボリュームは低い設定でレンダリングされるようになり、赤色での表示によって、ユーザにメモリ上限に近づいていることを警告します。 メモリの使用量を減らす方法のヒントについては、「メモリ上限」を参照してください。 |
このページのオプションのみを使用して、このシェーダのエフェクトをプレビューできます。これによって、トラブルシューティングを行うときに、さまざまなオプションを切り離して最適化することができるので便利です。ただし、最終的なレンダリングでは、他のプロパティ ページの「実際の」設定が使用されます。
スライス パラメータの設定に関するヒントについては、「Particle Volume Cloud(パーティクル ボリューム クラウド)」を参照してください。
このシェーダの一部のカラー チャンネルをフレームバッファにレンダリングすることができます。フレームバッファはレンダリングしたピクセル データの格納に使用され、次にバッファの内容がイメージ ファイルに出力され、プログラムの合成で使用することができます。フレームバッファ全般の詳細については、「レンダ チャンネルとフレームバッファ」を参照してください。
これらのオプションのいずれかで[メインバッファ内無し](Not in Main Buffer)を選択すると、そのチャンネルはフレーム バッファ内のみでレンダリングされ、メインのイメージ内ではレンダリングされません。
アンビエント(Ambient) |
「カラー」を参照してください。 |
イルミネーション(Illumination) |
「イルミネーション」を参照してください。 |
スペキュラ(Specular) |
「イルミネーション」を参照してください。 |
散乱(Scattering) |
「イルミネーション」を参照してください。 |
ファイナル ギャザリング(Final Gathering) |
「ファイナル ギャザリング」を参照してください。 |
距離(Distance) |
カメラからの最短距離と最長距離。 |
モーション(Motion) |
シーンピクセルで表した最大モーション。このフレームバッファを使用して、プログラムの合成時にモーション ブラーで使用できるモーション ベクトル データを出力します。 |
アンビエント オクルージョン(Ambient Occlusion) |
「アンビエント オクルージョン」を参照してください。 |
アンビエント2(Ambient2) |
2 つ目のカラーをレンダリングする場合に、これが 2 つ目のアンビエント入力になります。そのカラーをここで設定できます。 |
法線(Normal) |
[法線シェーディング]を使用する場合は、法線をフレーム バッファにレンダリングして、ポストライティングを行うこともできます。 「法線シェーディング」を参照してください。 |
ファイナル ギャザリングは、フォトン エネルギーを使用せずに間接イルミネーションを計算する手段です。ライトのレイ キャストを使ってイルミネーションを計算する代わりに、ファイナル ギャザリングではオブジェクト サーフェイス上の各発光ポイントから発せられるレイ キャストを使用します。このレイを各ポイントの上の半球のサンプリングに使用し、レイが当たる対象物に応じてイルミネーションを直接的および間接的に計算します。
ファイナル ギャザリング レイのマーチング ステップ サイズを設定します。
パーティクル ボリューム クラウド シェーダはパーティクル ボリューム エフェクトを作成するためのベースとなるシェーダです。ただし、ボリューム内で各パーティクルにシェイプを与えるために、これとともにパーティクル密度シェーダを使用する必要があります。
[Particle Volume Cloud]シェーダのプロパティ エディタを開き、次のガイドラインに従ってセットアップを行います。
最初に、[密度入力]を指定します(「密度」を参照)。[Particle Density]シェーダを[Particle Volume Cloud]シェーダの[Density]ポートに接続します。
また、[Fractal Scalar]シェーダを[Particle Density]シェーダに接続して、密度にノイズを追加することもできます。
この時点ではカラーについては気にしなくて構いませんが、[アンビエンス]を白にしておきます(「カラー」を参照)。
ルックアップ テーブルをパーティクルのサイズに適切な値に設定する必要があります(「ルックアップ テーブル」を参照)。
たとえば、パーティクルのサイズが 0.5 単位の場合で、パーティクルが空間で分離するときは、[セルサイズ]をあまり大きな値に設定しないでください。セル サイズを大きくすると、ルックアップ テーブルでディテール(空間内の単一のパーティクル)が見逃された場合、ブロックがレンダリングされないことがあります。
ただし、設定値が小さすぎてもいけません。パーティクルのサイズが 10 の場合、セルサイズを 0.5 に設定しないでください。セルのサイズを小さくすると、レンダリング時間が長くなります。最初はこれを回避するようにします。
[Particle Volume Cloud]シェーダに慣れたら、ルックアップ テーブルの開始値として適当な値が分かるようになるでしょう。
ルックアップ テーブルに当てはまるルールは、マーチング ステップのサイズ(「マーチング」を参照)にも当てはまります。
既定値を使用する場合は[シンプルモード]オプションを選択したままにできますが、調整を行う場合は[シンプルモード]オプションの選択を解除します。
[最大適用サブディビジョン]については、多少のノイズを作成する値を使用します。値が大きすぎると、エフェクトに十分なディテールが適用されません。ただし、値が小さすぎると、レンダリング時間が長くなり過ぎます。
密度入力に戻ります。ここでボリュームを確認すると分かるように、一部の入力シェーダ/パーティクル属性および密度スライダが変更されています。
[イルミネーション](「カラー」を参照): ボリュームの大まかなシェイプを確認し、白のアンビエント ライトでレンダリングしたら、イルミネーションを有効にして、シェーディング対象クラウドのワークフローをより快適にすることができます。
[イルミネーションライト]リスト(「シェーディング」を参照)にライトを追加します。上からの単純なディレクショナル ライトがよいでしょう。
特にクラウドのシェイプを調整しようとしている場合、[スライス]モード(「プレビュー」を参照)を使用すると便利なことがあります。次の画像をヒントに、さまざまな[スライス]モードを試してみてください。
次の例は、パーティクルを通るスライスです。パーティクルの密度入力シェイプにはフラクタルが使用されています。フラクタルの最初の値は 1 のままで、2 番目の値が次の画像に示すように調整されています。
このセクションに示されているようにルックアップ テーブルをセットアップします。
ルックアップ テーブルのパラメータの詳細については、「ルックアップ テーブル」を参照してください。
ルックアップ テーブルは、ボリューム オブジェクトの解像度が低くなったものです。オブジェクトのシェイプ全体を対象とする必要がありますが、ディテールは必要ありません。ディテールは入力テクスチャによって追加されます。
シェイプ全体を対象としない場合、ボリュームの一部が無視されない可能性があります。
[プレビューモード](「プレビュー」を参照)を有効にし、[ルックアップテーブル]の[削減]の値を[---]に設定して、[ルックアップテーブルのレンダ]オプションを選択します。
[セルの補間](「ルックアップ テーブル」を参照)を[補間無し]に設定します。これにより、セルのサイズをはっきりと確認できます。
ルックアップ テーブルには、クラウド全体のイルミネーション/シャドウ情報が保持されています。ボリュームにシャドウを落とす他の薄いオブジェクトまたはボリューム自体の小さなディテールから発生した小さなシャドウがある場合は、イルミネーションがちらつくことがあります。
ここで上の画像を見てみましょう。画像 C はシェイプに関しては適切でしたが、シャドウに関しては非常にハードで、ボリュームのエッジはくっきりしており、小さなディテールは既にシャドウを落としています。
右上の離れた小さなパーティクルはメインのパーティクル クラスタにシャドウを落としていますが、画像 C ではシャドウはほとんど消えており、大きなブラーがかかっています。これは間違いなくちらつきを発生させます。この場合、最終レンダのセル サイズは画像 C と D の間にする必要があります。
テーブルの線が表示されている限り(テーブルのみをレンダリングする場合)、恐らくアニメーションでちらつきが発生するでしょう。キュービック補間を使用し、セル サイズを小さくするか、イルミネーションのセルごとに複数のサンプルを使用してみてください。
密度が中程度のパーティクルの場合、すべてのシャドウ ディテールを捕らえるのに十分な解像度がルックアップ テーブルにあるにも関わらず、ルックアップ テーブルの線が見えることがあります。
次の画像を見てください。ボリュームの中に入り込む青い線をたどっていくと、クラウドのイルミネーションの内側にも線が見えるでしょう。
通常、密度、カラー、イルミネーションでセルを満たすために使用されるのは、1 つのサンプルです。しかし、非常に薄い密度テクスチャの場合、このサンプルがテクスチャを逃す可能性があります。その結果、3 次元の(キュービックな)穴が開くことがあります(次の画像を参照)。
非常に小さくハードなコントラストを持つ密度テクスチャの場合、この領域の平均カラーがグレーであっても、サンプルがテクスチャ上の小さな白いポイントをヒットする可能性があります。その結果、ルックアップ テーブルのアルファでちらつきが発生します。
この問題を解消するには、セルごとに複数のサンプルを使用します([マーチング]ページで[シンプルモード](Simple Mode)オプションの選択を解除し、必要なパラメータを表示します。「マーチング」を参照)。
シェーダには、ルックアップ テーブルの[メモリ上限]設定があります(「ルックアップ テーブル」を参照)。この上限がないと、あっという間にこのシェーダが少数の GB のメモリを占有することになります。その結果、レンダで mental ray を使用できなくなってしまいます。
シーケンスの動作が不適切になるので(フレーム間でちらつくルックアップ テーブルなど)、ルックアップ テーブルの自動縮小は不可能です。
メモリ上限に達すると、シェーダからログ ファイルに、テーブルが何 MB のメモリを占有しているかを通知する警告メッセージが発行されます。
レンダリングするたびにログを確認することは恐らくないでしょうし、ファーム レンダリングされたシーケンスでは単一のフレームなのでログを確認できないため、シェーダはルックアップ テーブルを 20 x 20 x 20 に縮小し、ボリュームを赤色に変えます。赤色のボリュームは基本的に、シェーダを現在の設定のままにするとメモリをすべて消費してしまうという警告です。
ここで、使用されるメモリを小さくするための手順を説明します。
すべての方向でセル サイズを小さくできない場合は、1 つの軸だけで小さくしてみてください。たとえば、ライトが上から照射される場合は、上から下の方向により多くのシャドウ ディテールが必要です。
セル サイズのアニメート: クローズアップしてみたところ、質の高いシャドウが必要だけれど、別のフレームに合計ボリュームが表示される、ということはないでしょうか。[セルサイズ]の値をアニメートしてみてください。
機能の無効化: ルックアップ テーブルでは、有効にしている機能に応じて占有するメモリの量が異なります。
パーティクル ボリューム サイズの縮小: パーティクルの一部をレンダリングしているだけの場合でも、放出したパーティクルが消滅するまでシーン全体を飛び回っていることがよくあります。パーティクルがカメラの前を通り過ぎた後にこれらのパーティクルを消滅させる障害物を使用すれば、多くのメモリを節約できます(ビュー エリアの外からくるシャドウや反射を検討してください)。
自動バウンディング ボックスとマニュアル バウンディング ボックスの組み合わせ: 多くのパーティクルが見えない場合(自分がカメラの後ろにいる場合など)、レンダリングにパーティクル オブジェクト全体を含める必要はありません。マニュアル バウンディング ボックスを使用すると、パーティクル オブジェクトの自動バウンディング ボックスを制限できます。たとえば、[マニュアルバウンディングボックス]オプションと[カメラ座標を使用]オプションを選択し、最小と最大のバウンディング ボックス サイズを負の Z 方向(カメラの後ろ)に制限します。
軸に並列したボリューム: ルックアップ テーブルは軸に並列しています。パーティクル ストリームが斜めに動く場合、空の領域で多くのセルを無駄にすることがあります。そのような場合は、シーンのワールド(カメラ、ライト、エミッタ、フォース)を回転させるか、パーティクル オブジェクトを回転させます。