アーカイブ:まいこのShade教室
どこに原因があったか、分かりましたか?では、正解です。 前回に説明したガラスの表面材質の設定方法をもう一度思い出しながら、順を追って原因を探っていきましょう。 まずはガラスの表面材質に問題がないかチェックしてみましょう。窓枠の表面材質は左のようになってます。 拡散反射色は低い値になってますし、反射や透明、屈折の設定もガラスの設定として問題はなさそうです。マッピングも1枚も貼られてません。 ここではおかしいところは見当たらないですね。 |
||
|
||
(図4) |
透明物のレンダリングで次に気をつける点は、レンダリング設定の「視線追跡レベル」の設定でしたね。この設定がおかしくなっていないか調べてみましょう。 それでは図4を見てください。 これは、今回の例題に必要な「視線追跡レベル」を求めるための模式図です。カメラから出た視線は、透明なガラス越しに水槽の中を突き抜け、その向こうの不透明な床や壁に衝突してそこで完全に遮られます。 それまで視線が何回形状にぶつかったかを数えてみると最大10回になります。視線「追跡」回数は、1回目の衝突までは0回とカウントします。つまり、衝突回数より視線追跡回数は1少ないので、この例題に必要な視線の追跡回数は9回となります。 |
|
|
||
(図5)
(図6) |
レンダリング設定を確認してみると、視線の追跡回数は「9回」と正しく設定されていました(図5)。 視線の追跡回数を減らしながら例題をレンダリングしてみる(図6)と、追跡回数が不足している場合のレンダリング結果が分かります。 ガラス越しの像の歪みとは別の場所にも影響が出て、黒く潰れています。逆に追跡回数を増やしてみても、ガラス越しの像のおかしな状態は直りません。 どうやらこれが原因でもなさそうですねー。 |
|
|
||
では、どこがおかしいのでしょう? 実は先ほど出てきた図4の模式図の中に、もう解答が含まれていたんですよ。 Shadeファイルの、窓枠にはまっているガラス板の側面図を見てみましょう。厚みのない一枚の閉じた線形状になっていますね(図7)。本当なら、ガラス板にはちゃんと厚みがついていなくてはいけないのに、ぺらぺらの板になっています。 でも図4では、2枚のガラス板にそれぞれ厚みを持たせた状態で視線の追跡回数を数えていました。そこでShadeファイルの方も、ガラス板の線形状をちょっとだけ掃引体にして厚みを持たせてあげましょう(図8)。 サンプルデータでは、2枚のガラス窓の一方はもう一方のリンクになっていますから、片側のガラス板に厚みを付ければもう一方も自動的に厚みが付きます。 |
||
(図7) |
(図8) |
|
|
||
これでレンダリングすると、正しいレンダリング結果になりました(図9)。 | ||
|
||
でも、どうしてガラス板の厚みがあるかないかで、こんなに違ったレンダリング結果になるのでしょうか? 屈折が関係してくるような、ガラスなどの透明体を表現する場合、Shadeの中では透明に衝突した時に、屈折した回数をカウントしています。衝突するごとに、表→裏→表→裏、、、と交互に解釈しています。 図10, 11はガラス板に厚みがある場合と無い場合の、X印部分の視線追跡レベルを追いかけた模式図です。 最初にガラス板の中に入った視線は「今、自分はガラスの中にいる」ということを覚えています。ガラス板に厚みがあれば、その向こう側に抜けたとき、視線は「ガラスから空気中に抜けた!」と解釈します。次に水槽のガラスに当たると「またガラスの中に入った」と解釈できます。 ところがガラス板に厚みがないと、視線は水槽のガラス面に当たったとき、まだ自分はガラスの中にいると思い込んでいますから、ここで「ガラスから抜けた!」と間違ったと解釈してしまいます。そしてそれから後は、ボタンの掛け違いみたいにずっと「抜けた」と「入った」の解釈が入れ違いになってしまうんですね。 そうすると屈折の計算も間違ってしまいますから、正しいレンダリング結果が得られなくなってしまったわけです。 |
||
(図10) |
(図11) |
|
|
||
分かりましたか?ちょっと難しかったですか? 透明物ごしの屈折像を描くときには、透明物に正しく厚みを持たせて透明物の内側と外側を正しくレンダラーに伝えられるように気をつけてモデリングしないとうまくいかない場合がでてきてしまいます。 透明体を正しくレンダリングするには、物体に厚みを持たせると良いですよ。 |
||
トップに戻る |