シェーダの属性
次に挙げるそれぞれのサンプル画像においては、AOシェーダが発光チャンネルで使用されています。AOシェーダの特殊効果は、ここにおいて最も良く発揮されます。ただしこれは、フォトリアリスティックなレンダリングに対しては適していません。
カラーオプションは、AOを適用するグラデーションの色を定義し、露出とは独立しています。通常はシンプルに黒から白のグラデーションが使われますが、別の色も指定できます。
グラデーションの左端は、最も露出が低いところ(球体の下)で、右端は最も高い露出部分になります。
分かっていることとして、マテリアルチャンネルによっては、グラデーションはグレースケールとして扱われます。
「カラーで定義したグラデーションを、露出されたエリアと露出されていないエリアの間でどのようにレンダリングするか」ということを、レイの最小距離オプションが定義します。 「レイの最小距離の値」が「レイの最大距離の値」により近づくほど、エッジの方向にグラデーションがより押し出されます。これはレイの最大距離によって定義されます。
ですがこの値は実際のところ、へたに変更すべきものではありませんので、デフォルトの設定「0」のままにしておいてください。
サーフェイス同士が、どの程度の距離でお互い面と向き合うのかを、この値で定義します。もしも低い値をここで定義すると、壁が球体を見ることはありません。そしてこの画像が明るくレンダリングされます(上図:左側の画像)。ジオメトリが交わる場所、「床と壁」や「球体と床」のような所では、ほんの小さなレイですが、これがサーフェイス上に落ちますので、これらのエリアを十分に暗くします。
もしも高い値をここで定義すると、もっと長い距離において、オブジェクト同士がお互いを向き合うようになります。これによって、そのエリアがよりソフトに、そしてより均一に暗くなります。
そしてこれはレンダリング時間が長くなる原因になります(計算精度オプションの設定の項目にあるサンプル画像もご参照ください)。
それぞれのAOの計算の間、シーン内の仮想半球の内部において、いくつかのレイ(サンプル)が各ポイントに対して放射されます。レイの最大距離の範囲内にジオメトリが存在するかどうかを、これらのサンプルはチェックします。そして半球のサーフェイス上で、これらのサンプルがどの程度考慮されるのかを、拡散オプションが決定します。0%の値を入力すると、半球の天頂(球体の頂点)だけが使用されます。100%の値を入力すると、半球全体が考慮されます。
では実際の作業にあたっては、この機能をどのように適用すればよいのでしょうか? ここで拡散を「目隠し」だとお考えください。値が低いほど目隠しがもっと閉じて、サンプルエリアがもっと頂点に制限されます。
先に挙げた図では、この特殊効果の結果を見ることができます。一番左側にある画像において、拡散の値0%の結果、各ポイントの直接上にある(各ポイントに対して垂直な)エリアだけが、計算の考慮に入れられています。一番右側にある画像においては、拡散の値100%の結果、半球のサンプルのすべてが考慮に入れられて、リアルな仕上がりになっています。
計算精度、最小サンプル数、最大サンプル数の設定は、AOのクオリティに影響します。「低」クオリティの場合、粒子が目立つ結果を伴います。ただしこれが必ずしも悪い結果とは言えません。実際のところ、そうして偶然に得た結果が非常に審美的な価値を生み出す可能性もありますから、場合によってはこれが望ましい結果となるかもしれません。
ただし、均一でつなぎ目の見えないような処理をご希望の場合は、高いクオリティの設定を選択する必要があります。これはまた、レンダリング時間が長くなることにもなります。
クオリティを向上させるには、先ほど述べた3つの設定(特に計算精度と最大サンプル数)を使ってください。
AOの基本のアルゴリズムは複雑なので、その詳細についてはここでは触れません。ただし、「AOをレンダリングするためにはサンプル数が必要である」ということはご説明しておきます。サンプル数をより多く使うと、レンダリングがより均一に(粗さの程度が低く)なります。そしてこれは、レンダリングにかかる時間がより長くなるという結果にもなります。その一方で、サンプル数が少ないほどレンダリング時間が短くなります。
当然のことですが、シーン全体に対して最大のサンプル数を使って計算することも可能です。ですが非常に、本当に非常に計算時間が長くなります。またこれが全く意味を成さない結果になる可能性もあります。なぜなら、比較的少ないサンプル数で十分なエリアがシーンには多数含まれているからです。
そこで、最小サンプル数と最大サンプル数の設定が、役に立つわけです。シーン内の処理が必要なエリアと、その必要性が低めのエリアの調整を明確に行うには(そしてそれらの補間を設定するには)、これらの設定を使ってください。
可能な限り最良な結果を達成するために、「どの位置に」そして「どの程度」、サンプル数が配置されるべきであるのか、ということを計算精度の設定が決定します。処理が必要なエリアでは、最大サンプル数に入力された数のサンプルが使用されます。
つまり計算精度の設定は、「処理が必要なエリア」に対して最も影響を与える存在です(なぜならこれらのエリアに高い値を適用させると、より多くのサンプル数が使用されるからです)。そして最小サンプル数の値を使用する、「処理の必要性が低めのエリア」に対しては、計算精度の設定が与える影響の割合も低めになります。
例:
次に挙げるシーン(画像)は、この設定にさまざまな値を入力してレンダリングされました:
左側の列:最大サンプル数
中央の列:計算精度
右側の列:レイの最大距離
各画像上には、相対的なレンダリング時間(段ごと)が記載されています。これは、「設定を変更することによってどのようにレンダリング時間が異なるのか」というイメージをつかんでいただくためのものです。
この設定を使って、処理の必要性が低めなエリアに使用するサンプル数を定義してください。
この設定を使って、処理が必要なエリアに使用するサンプル数を定義してください。計算精度の設定に関連して、この数のサンプルがダイナミックに散りばめられます。
AOの特殊効果のコントラストを調整するには、この設定を使ってください。マイナスの値も入力可能です!
もしもAOが拡散マテリアルチャンネルで使用されると、別の光源が必ず使われます(たとえデフォルトライトだけでも)。
また、もしも空オブジェクトが照明として使われている場合は、AOは光源が無くても機能します。もしも空の環境を使うオプションがオンの場合は、反射された空の色が、最終的なAO画像の上に掛け合わされます。これを行うには、環境または発光マテリアルチャンネルにAOを入れる必要があります。
このオプションがオンの場合、透過またはアルファマテリアルチャンネルに基づいて、透過が解析されます。これを行うことによって、透過の程度が考慮されます:ただしこのオプションがオンの状態であっても、半透明の球体はいくらかのAOを引き起こします。
このオプションがオンの場合、別々のオブジェクトはそれぞれお互いを見ることはありません。自分自身を見るだけです。
このオプションが有効である場合、AO(アンビエントオクルージョン)の効果が反転されます。凹んだコーナー(入隅)や穴は確認されませんが、代わりに外に向かっているエッジやコーナー/ピーク(出隅)が見つかります。オブジェクトの周りの球体を想像してください。球体のポイントが多くのサーフェイスを持っているほど、AOはそのポイントをさらにその分だけ暗くレンダリングします(これはデフォルトのビヘイビアです)。
これはどんな有用性を持っているのでしょうか?
例えば、塗装がはげたような露出されたサーフェイスの見かけが残りのサーフェイスの見かけとは異なる必要がある場合、アルファチャンネル内へAOシェーダを置きます。すると、ここのマテリアルには外向きのエッジとコーナー/ピークにのみ効果があります。
上の画像内の左に表面の摩耗が見られます、また右には迅速にレンダリングされた内部鏡面反射の限界がエッジとコーナーに見られます。