background

レイトレースシャドウ。

2006年10月29日(Sun)

環境閉塞(AO)の、その前に。
忘れていたわけではないけれど、実は忘れたかったりするレイトレースシャドウ。
何故なら未だよく分からない部分があったりするからで(笑)。

Poserでの名称はレイトレース影だが、そのセンスがやっぱり自分的にアレなので(笑)以降統一してレイトレースシャドウと呼ぶことにする。

レイトレースシャドウはシャドウマップと並んで、影を描画する手法の一つだ。レイトレースシャドウを使用するには、ライトの特性パレットで「レイトレース影」を選択し、さらにレンダリングオプションで「影を投影」と「レイトレーシング」にチェックを入れる。

その原理は以前シャドウマップの回で説明したように、視点からレイ(光線)を飛ばし、レイが物体表面に衝突したところでその地点と光源との間の障害物の有無を調べる。計算はピクセル毎(本当はシェーディングレートによって分割されたマイクロポリゴン毎)に行われるので、シャドウマップより時間はかかるものの、より精密な描画が可能だ。

126-1

レイトレースシャドウの品質がいまいちだと思う時は、パラメータを調節してみよう。

まずはパラメータパレットにある影の精度。これは当然のごとくレイトレースシャドウでは使用しない。なぜならこれはシャドウマップを生成するときの縦横のピクセル数だからである。ちなみにレイトレースシャドウはレンダリング中に計算されるので、レイトレースシャドウに切り替えるとレンダリング開始時の「影の計算中…」というダイアログが表示されなくなる。

次に特性パレットにある影のにじみ半径。これはシャドウマップとは異なりデフォルトでは0になっているが、値を入れるとシャドウマップと同様にソフトシャドウを描画することができる。シャドウマップにおけるソフトシャドウはZ値にぼかしフィルタをかけることで実現するが、レイトレースシャドウの場合は、物体表面から光源が見えるかどうかを調べる時に、その光源の存在する方角に設定しただけの誤差を持たせることで曖昧さを実現する。これによってシャドウマップの均一なぼかしとは異なり、影の発生源との距離によってにじみ具合が変化するような、よりリアルな影を描画できる。

126-2

従って、このにじみ半径の設定単位は角度だと推測される。

影のぼけ方がざらざらしている時に調整するのは、シェーディングレートだ。レイトレースシャドウはマイクロポリゴン毎に影かどうかの判定を行っているので、単純にマイクロポリゴンの分割を小さくしてサンプリング数を増やせば品質は向上する。
(ちょっと怪しい話だが、ピクセルサンプリングではソフトシャドウの品質は向上しない)
ただし、シェーディングレートはレンダリング速度にがっつりと影響するので、PCの能力と相談しながら設定するようにしよう。品質に関わるのは影を受けるオブジェクトのシェーディングレートなので、そのオブジェクトだけ設定を小さくしてみるのもいいだろう。
(詳細は本宅Tips「レンダリング設定について」参照)

影のにじみ半径を0にしている場合でも、影の輪郭にノイズが発生することがある。これを調整するのが「影の偏り」だ。シャドウマップの場合、「影の偏り」は階段状のノイズを抑制するためのZ値抽出時のオブジェクトをオフセットさせるパラメータだった。レイトレースシャドウでは、これは「レイバイアス」というパラメータとなる。
(同一パラメータに全く異なる複数の意味を与えるのはUI上どうかと思うのだが……)

レイバイアスはレイトレースの重要なパラメータの一つで、レイが物体表面に衝突したときに、「そこから一定距離進むまではあらゆる計算を行わない」という距離を設定する。なので、この値を小さくするとよりタイトに影の描画をすることができるのだ。大きくすると障害物を判定する基準位置がオブジェクト表面からズレてしまうため、輪郭が不正確になるだけでなく、シャドウマップと同じように接地しているはずのオブジェクトの影が浮いてしまうことになる。

126-3

だったらレイバイアスはいつも小さく設定すればいいのかというと、そうでもない。
(ちなみにレイバイアスを0にすると地獄絵図が展開される)
オブジェクトによっては、レイバイアスを大きく設定しなければならない状況も存在する。それは「非平面ポリゴン」がある場合だ。

非平面ポリゴンとは文字通り、4つの頂点が同一平面上にないポリゴンのことだ。これが実は3DCG的に、非常に厄介な存在なんである。普段Poserを使っている時にはこの非平面ポリゴンを意識することはあまりないが、それはスムースシェーディングによってなだらかな陰影付けをされているからであって、内部的には非平面ポリゴンは三角ポリゴン2枚に分割され、くっきりと折れ曲がっている。

126-5

これが問題になるのがレイトレースを使用した時だ。レイトレースの機能はそのほとんどが、レイが物体の表面に衝突してから周囲の状況を調べることで実現している。ところが非平面ポリゴンの場合、レイが非平面ポリゴン自身の陰に入ってしまいそこを「障害物あり」だと判断してしまうのだ。

126-5

レイトレース系の機能を使用した時に時々現れる、奇妙な斑点の正体がこれだ。反射ならその部分だけ反射像が異なってしまい、環境閉塞やレイトレースシャドウならそこだけ完全な影として真っ黒に描画してしまうのである。

126-6

というわけで、これを回避する為にはレイバイアスを大きく設定し、レイが非平面ポリゴンの陰の領域を脱出するまで判定を行わないようにしなければならない。設定値自体はその非平面ポリゴンの大きさや非平面具合によるので、テストレンダしながら最適値を探るしかないのである。

ほかにも、レイトレースシャドウはスムースポリゴンによる変形を描画できなかったり、トリムマップの解釈に微妙なバグがあったりと、やや扱いにコツが要る点も多い。が、その精密さやシーン内のオブジェクトサイズに依存せずに同品質の影を落とせる点などシャドウマップでは実現できないメリットも大きい。自分の作りたい影の内容に応じて、シャドウマップと使い分けるようにするといいだろう。

■頂いたコメント■


コメント:(sannzi)
今晩は。
まず、環境閉塞にするとフィギュアによって穴が開いている様に見えるのは何故か分かりました。
ポリゴンが折れ曲がっていようとは。
レイバイアスを0にすると、あ、あのかわゆいAIKOちゃんが!!
あんなに不気味な物を見たことは有りません(~~+
皆さんにもお勧めします。

所で拡散IBLライト慣れてくると良いですね。
当分poserのレンダはこれを使おうと思います。
まだ環境閉塞の調整が分かりませんが。
続きを楽しみにしています。


コメント:(Kyotaro)
>sannziさん
こんばんは~(^^
環境閉塞などで斑点が出るのは結構遭遇するらしいですが、こういう原理だったようです。原因がわかると、対処もしやすいと思います(^^
レイバイアス0はやっちゃいましたか~。ね、恐ろしいでしょう?(笑)

拡散IBLライト、意外と楽だったり綺麗だったりしますよね。
次回の環境閉塞で多分ライティングTipsは完結になると思いますが、なんとか上手く役に立つようにまとめたいと思います。


コメント:(itan)
こんにちは~はじめましてです。
私も以前makotoさんから頂いた三菱iのレンダリングをしていて「?このウロコ模様はなんだろ?」と思いましたがmiluraさんがレイバイアスだよと教えてくれました。こちらで詳しい説明がもらえて嬉しいです。ポーザーのレンダリングもパラメータがたくさんあってわからないことばかりですがのんびりこなしていきたいなと思います。よろしくです。


コメント:(Kyotaro)
>itanさん
はじめまして&いらっしゃいませ~(^^
このウロコ模様、特に車のような曲面が命のアイテムには結構現れるみたいです。肝心な所なので、うまく調整したいところですね。
Poserのレンダリングも使いこなそうと思うと、色々覚えなきゃいけないところや工夫しないといけないことが多いですが、一つ一つ身に付けていけばそのうち要領が掴めてくると思います。
拙宅のTipsなどもよかったらご覧下さいませ(^^





Menu

Profile

Kyotaro

確定名:Kyotaro
ネタを探しているらしい。

Categories

Calendar

06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

Comments

Archives

Track back

RSS feed

Links

Search

※2011年4月6日のサーバ障害の為、エントリのアドレスが以前のものからズレています。当Blogのエントリにリンクを張っておられた方は、お手数ですがアドレスのご確認をお願い致します。

※Internet Explorer非推奨。