
アンチエイリアシングの設定をどうすればいいのか分からない?
そんなの簡単だよ。こうやってこうやってこうすりゃいいじゃん。
なるほどね。こういうふうに設定すればいいのか。
でも、設定した値の意味は、分からないまま。
現状では、分かっている人が、分かっていない人に仕様書を渡せば良かったのです。
それでほとんどエラーなく、すんなりレンダリングが出来たはずでした。
だけど、近年、データの巨大化が進む中、同じ設定では、レンダリングが出来る出来ないが顕著になってきました。
Hair、FG、SSSなどなどなど・・・。管理職泣かせの技術たち。
そこで、エラーで止まってしまうフレームが出てきた場合どのようにしてレンダリングをかけられるようになるのかを結構はしょりで説明したいと思います。
今回は、エイリアシングの設定から。
Aliasing ( Raytracing & Scanline Only )とSampling Contrastには、常に密接な関係があります。
まず、Sampling Contrastから説明することにしましょう。
この設定の値はカラーです。RGBAの4つの値から成っています。
この値は、レンダリングされる絵のピクセルとピクセルの差を見ています。
■□
↑ピクセルのつもり
例えば、上記のようにピクセルが、RGBAが0(つまり真っ黒)と1(真っ白)の様な絵があったとしましょう。2ピクセルの絵と考えてください。
その場合、ピクセルとピクセルの色の差は、1-0の1になるわけです。
現在のSampling Contrastの設定は、全て0.2ですので、Aliasing ( Raytracing & Scanline Only )のMax Levelでアンチエイリアシングがかかります。
この場合、Max Levelの1が適用されます。
■■
次の例は、真っ黒なピクセルが隣り合った場合です。
この場合は、ピクセルとピクセルの色の差は、0-0の0です。
Sampling Contrastと比較して差が許容範囲なので、Aliasing ( Raytracing & Scanline Only )のMin Levelでアンチエイリアシングがかかります。
この場合は、Min Levelの-1が適用される訳です。(ほんとは、もうちょっと複雑な判定をします)
画像でコントラストの差を視覚的に見てみましょう。

ま、だいたい、0.05だと人間視覚的に限界なんじゃね?ということが分かります。
ということは、最終レンダレベルだと、Sampling Contrastは0.05くらいで良さそうですね。
プレビューなら、0.2とかにして、Min Levelの面積を大きくしてあげれば、プレビュー時間を短くすることが出来ます。
これで、色の差のコントラストが少ないときにはレベルを下げて、色の差が大きい場合はレベルを上げてレンダリング時間を効率よく使う事が出来ます。
例えば、真っ黒な部分の計算をしようとしたとき、全てのLevelが2の高い状態で計算するのは時間の無駄だという事です。
なぜ、時間の無駄かといのは、次の説明を読めば分かることでしょう。
Aliasing ( Raytracing & Scanline Only )のレベルとは、どういう意味なのか。
0の場合は、そのピクセル単体をそのまま計算します。

アンチエイリアシング無しの状態です。ギザギザ。
1の場合は、ピクセルを4分割して、サブピクセルとして計算します。

ちょっとまだ、アンチエイリアシングが甘いかな?という状態です。
でも、ブラーがかかるのなら、このくらいで十分いけるし、0でもいいんじゃね?って感じです。
2の場合は、ピクセルを16分割して、サブピクセルとして計算します。

これくらいなら、ほぼジャギる事は無いでしょう。
これ以上上げると時間が重くなり過ぎて、自分の首を絞めることウケアイ。
つまり、Levelが1の場合は、単純に解像度を2倍で計算している事とだいたい同じになります。
Levelが2の場合は解像度4倍です。
逆に、-1の場合はどうなるかというと、4ピクセルに対して、1回しか計算しようとしません。
つまり、Levelが-1の場合は、なんと解像度1/2で計算している事と同じになるのです。
こんな設定仕事では、使ってはいけません(結構居るんだな。コレが。※ちなみに、Vrayでも大体同じ)
ようするに、最終レンダリングをする場合、-1という値を入れて計算をするというのは、得策ではありません。
当然、ジャギーが発生する事になります。
ただし、Sampling Contrastの設定次第では、うまくいくかもしれません。
0.005の様な、肉眼で分からないくらいの色の差であれば、-1で計算しても良いかもしれません。
けれど、4ピクセルに対して1回しか計算できないので、細い剣の様な物をレンダリングする場合や、テクスチャがとても細かい場合、レイがヒットすることなく真っ黒なピクセルとして計算されることが多々あります。
逆に、Levelが2であって、16ピクセル分の計算をしたとしても、それ以上のテクスチャの解像度がある場合、ちらつきが発生してしまいます。
意味無さ杉くん。
テクスチャの解像度がデカければデカいほど良い訳では無いことを十分理解しておいてください。
キャラクターがどのくらいのサイズでレンダリングされるのかを判断して、テクスチャのサイズを小さくする事が必要になります。
テクスチャのサイズを小さくすることで、メモリの確保も出来るほか、ちらつきを抑える事が出来るでしょう。
ちなみに、メモリに関して、マニュアルにはこんな事が書いてありました。
メモリ要件の計算で使用される標準規則では、サーフェイス上の三角形1000個につき1MBのメモリが割り当てられます。
512× 512のテクスチャごとに、1MBの追加メモリが必要になります
だそうです。
つ・ま・り、1Triangleで、1B消費するってことだから、100万Triangleで、1GBのメモリを消費するってことです。
分かりやすっ。
(でも、結構長い間、知らずに過ごして来ました・・・。)
でもこれ、ギガポリゴンコアって、どうなるんだろう・・・。
ギガポリゴンコアだから、大丈夫なのか?!
IIになるし、大丈夫なのか?!
最後に、アンチを決定する際、熟練の技として
まず、これで、いいだろうと思われる値をセットします。
次に、3枚だけレンダリングします。
3枚をループ再生します。
コレだけで、ちらついているかが分かるようになります。
だいたい。
だいたいね。
だいたいだかんね。
だから、全フレ計算するなんて、アホなことすんなよっ。