- レイトレーシング手法時のアンチエイリアス
- アダプティブサンプリング
レンダリング時に「レイトレーシング」手法を選択している場合、アンチエイリアスの種類を選択できます。
指定できる種類として「ドラフト」「アダプティブサンプリング」「オーバーサンプリング」があります。
この違いについて説明していきます。
アンチエイリアスとは?
「アンチエイリアス」とは、ピクセル間を補間してギザギザ(「ジャギー」と呼ばれます)が見えにくいようにする処理を指します。
レンダリングでの「アンチエイリアス」も同じ意味で、レンダリングに合わせた補間が行われます。
上記画像の赤い矩形内を拡大すると、以下のようになります。
左がアンチエイリアスなし、右がありです。8倍に拡大しました。
Shade3Dのレンダリング設定では「基本設定」タブの「アンチエイリアシング」より指定できます。
「アンチエイリアシング」(Shade3DのUI上の表記では「アンチエリアシング」)は「アンチエイリアスする手法」、のような意味合いになります。
アンチエイリアシングは、内部的には以下のように行われます。
視点からスクリーン上にレイ(視点とスクリーンの1点に向かう方向で指定)を飛ばし、形状との衝突位置での光源も含めた最終的な色を計算します。
これをスクリーンすべてのピクセルに対して走査します。
はじめの走査では、1ピクセルに1レイで進めていきます。
この状態ではジャギーが出たままです。
拡大した以下の画像の場合、赤い矩形部分が4ピクセル分に相当します。
このピクセルはディスプレイの1ピクセルに相当し、これ以上は物理的に細かくできません。
そのため、1ピクセルを内部的に分割し、色の平均を取ることでアンチエイリアスを行うことになります。
隣接するピクセルの色の差分が大きい場合、ピクセルを2×2分割します。
この状態で、分割したピクセルの中心ごとにレイを飛ばしてピクセル色を計算します。
以下のように色が計算されました。
個々の2×2分割したピクセルごとに隣接する色(輝度)の差分を調べ、一定の閾値よりも大きい場合はさらに再帰的に再分割して色計算します。
本来は4ピクセル分になるため、ピクセル内を再分割して計算された色を平均していきます。
これを全ピクセルで繰り返すことでジャギーを目立たなくしていきます。
これがレンダリングでのアンチエイリアシングの基本的な流れになります。
この流れは、Shade3Dでの「オーバーサンプリング」に近い処理になります。
「オーバーサンプリング」では、内部的な「リファインメント閾値」(Professonalのグレードでは調整可能)で
隣り合うピクセルの輝度の差分によりサンプリングをさらに増やすか/打ち切りかを調整しています。
「パストレーシング」手法の場合のアンチエイリアシングの指定は ?
ところで、「パストレーシング」の手法でレンダリングする場合、アンチエイリアシング指定は選択できません。
パストレーシングは、1ピクセルを複数回サンプリングする手法であるため
自動的にアンチエイリアシング効果がかかることになります。
パストレーシングの場合は、「その他」タブの「レイトレーシングの画質」で調整します。
「レイトレーシングの画質」の値を上げることで時間はかかりますが、品質を向上させることができます。
「レイトレーシング」手法の場合のアンチエイリアシングの種類
「レイトレーシング」の手法の場合、複数のアンチエイリアシングの種類を選択できます。
「アンチエイリアシング」チェックボックスをオフにすると、アンチエイリアスはかかりません。
アンチエイリアシングは、「ドラフト」「アダプティブサンプリング」「オーバーサンプリング」から選択できます。
ドラフト
Shade3Dでは以前からあるアンチエイリアスの手法になります。
レンダリングは速いです。
ただし、1ピクセルよりも小さな形状、細かいテクスチャ(髪の毛や草など)がある場合はこの手法では対応しきれない場合があります。
特に、カメラが対象から離れていくとレンダリングでは小さく見えることになるため、ジャギーが目立つことになります。
オーバーサンプリング
1ピクセルを指定の分割数(2×2から8×8)で分割してサンプリングします。
分割数が多いほどレンダリング時間がかかりますが、
一番きれいな結果になりやすいです。
また、Professionalのグレードでは「リファインメント閾値」でサンプリングを行うか/打ち切るかの閾値を調整できます。
アダプティブサンプリング
ドラフトとオーバーサンプリングの中間に位置する手法になります。
サンプリングのためのパラメータを調整することで、品質に対する速度を上げることができます。
このアダプティブサンプリングは、Shade3D ver.16.1で追加されました。
Basic/StandardとProfessionalで指定できるパラメータが異なります。
説明 | Basic/Standard | Professional | |
---|---|---|---|
最小サンプル数 | 全ピクセルに対して行われるサンプリング数 (無し – 64) | O | O |
サンプリング品質 | この値が大きいほどサンプリング品質が向上 (デフォルト 1.0) | O | O |
リファインメント閾値 | 従来は「レイトレーシングの画質」に連動していた内部的な閾値を個別設定 (デフォルト 0.5) | – | O |
「最小サンプル数」で一様なサンプリング数を指定します。
無し/4/7/10/15/25/36/49/64を選択できます。
4を指定した場合、1ピクセルを4回サンプリングすることになります。
この数が大きいほどレンダリング時間がかかります。
「サンプリング品質」で、サンプリングした輝度差が「リファインメント閾値」を超える場合の品質を調整します。
「サンプリング品質」x 50が、パストレーシング手法時の「レイトレーシングの画質」相当になっています。
これにより、閾値を超えた場合にサンプル数が増加することになります。
Basic/Standardのグレードの場合は「リファインメント閾値」は内部的に持つ固定の値になります(0.5固定)。
Professionalのグレードの場合は「リファインメント閾値」を別途指定できます。
この値が小さいほどレンダリング時間がかかることになります。
アダプティブサンプリングで「最小サンプル数」36、「サンプリング品質」1.0(初期設定)、「リファインメント閾値」0.5(初期設定)のレンダリングと、
オーバーサンプリングで「6 x 6」はほぼ同じサンプル数になりますが、
アダプティブサンプリングのほうがレンダリングが速く完了します。
アダプティブサンプリングを最適化する場合、
「最小サンプル数」が小さい状態で「サンプリング品質」を大きくしていき、レンダリング時にジャギーが目立たなくなる「サンプリング品質」の値を探します。
それでもジャギーが目立つ場合は「最小サンプル数」を上げるようにします。
アンチエイリアシングを調整する必要があるシーン
テクスチャが細かい場合
草のような表現の場合、レイトレーシングでアンチエイリアシング「ドラフト」のレンダリングを行うと以下のようになります。
拡大表示(4倍)すると先端側がとぎれとぎれになっている箇所があります。
「オーバーサンプリング」 2×2 (4倍に拡大)
「オーバーサンプリング」 4×4 (4倍に拡大)
オーバーサンプリング2×2の場合はまだ若干途切れている箇所が見えるため、4×4でレンダリングするときれいになりました。
ただ、オーバーサンプリングの場合はサンプリングを上げていくとレンダリング時間がかかることになります。
「アダプティブサンプリング」最小サンプル数 4、サンプリング品質 1.0 (4倍に拡大)
アダプティブサンプリングとオーバーサンプリング4×4を比較すると、品質はさほど変わらない状態になりました。
レンダリング時間はアダプティブサンプリングのほうが速いです。
カメラから見て形状が小さくなる場合
カメラから見たレンダリングで、形状が小さくなる場合(1ピクセル以下のサイズになる場合)、
アンチエイリアシングを調整する必要が出てきます。
これをアンチエイリアシング「ドラフト」でレンダリングすると以下のようになります。
カメラを引いていくと、欠けていきます。
「アダプティブサンプリング」最小サンプル数 4、サンプリング品質 1.0でレンダリングしました。
これで欠けがなくなりました。
面光源の影がある場合
面光源の影の場合、サンプリングが伴うためノイズが出やすいです。
以下は、アンチエイリアシング「ドラフト」でレンダリングしました。
影部分にノイズが見えます。
これを緩和するにはレンダリング設定の「レイトレーシングの画質」の値を上げて調整します。
上の画像が「レイトレーシングの画質」50、下の画像が200の比較です。
「レイトレーシングの画質」を上げたほうがより滑らかな影になっています。
「レイトレーシングの画質」を50に戻し、「アダプティブサンプリング」最小サンプル数 4、サンプリング品質 1.0でレンダリングすると、
以下のようになりました。
単純なシーンの場合は、面光源の影については「アダプティブサンプリング」のほうが品質がいいです。
アダプティブサンプリングが苦手なシーン
複雑な形状があるシーンや、複数の面光源があるシーンなど、
この場合はアダプティブサンプリングを使用するとレンダリング時間がかかってしまう場合があります。
その場合は「パストレーシング」手法を使用したほうがより単純なサンプリングのためレンダリング時間を短縮できます。
以下は、電話のあるシーンで面光源を3つ配置しています。
レイトレーシング + アンチエイリアシング「ドラフト」でレンダリングした場合は以下になり、13秒かかりました。
電話本体の下部の隙間のハイライトで途切れている部分が見えます。
これをレイトレーシング + アンチエイリアシング「アダプティブサンプリング」最小サンプル数 4、サンプリング品質 1.0でレンダリングした場合は以下のようになり、
61秒かかりました。
きれいにはなりましたが、レンダリング時間が増大しています。
手法をパストレーシングにしてレンダリングすると(アンチエイリアシング指定は不要)、16秒かかりました。
こちらのほうがレンダリング時間と品質のバランスが取れています。
この場合は、受話器の下部のハイライトや液晶パネル右上のハイライトのノイズが気になります。
加えて「レイトレーシングの画質」を50から70にしてレンダリングすると、31秒かかりました。
ハイライトのノイズも緩和されました。かつ、アダプティブサンプリングよりも時間は短縮できています。
このように、用途用途に合わせてアンチエイリアシングの種類で何を選択するか、
もしくはパストレーシングにするかで品質と時間のバランスを調整します。
経験による部分もあるため、シーンに合わせて試行錯誤はいりそうです。
今回はここまでです。
レンダリングについてはこれで一通り説明し終わりました。
また何かTipsなどがあれば追記するようにします。