2007年10月1日月曜日

またいいかげんな散乱をやってみたが・・・

↑カメラビュー

↑パース・ビュー

↑生成したライトでレンダー

↑元のスポットライト1灯でレンダー

lights.count
326
1つのスポットライトから163個のライトが生成されました。(半数はライトターゲット。いいかげんライト本体を数えて欲しい。)
またいいかげんな方法だけど、とりあえず強度と角度をバラバラに分散するようにしてみています。
あれ?なんか生成のされ方が偏ってますよ・・・(謎)
ざらざらした面では拡散するから、ちゃんとやるにはgrossinessを読み取ったりして決めたらいいだろうと思います。
いわゆるマジック・ナンバーっぽいことをやってますけど、レンダー結果をみると、いくらか雰囲気が出てきました。
1つのスポットライトが地面に向けて照らしていながら、天井面が明るくなっているのはまぁねらいどおりといえばねらいどおりで、部屋の角に陰が溜まるのも少し効果が見られます。
ちなみに最初のスポットライトにはhotspot30/falloff60に設定してあります。
シャドウ・マップは最初のスポットライトで1024でボケ足が8、反射するごとにマップが1/4、ボケ足2倍になっていっていき、減衰範囲も1/2になっていっていますが(注:物理的にはあってない)、これだと生成するのに20秒くらいで、レンダーに47秒です。
最初に書いてたコードでは一瞬で生成できましたが、反射を繰り返したり、分散するようにしていったらそこそこ時間が掛かるようになりました。
ランダムを使ってるので生成するたびに結果が違ってくるのも困ります。
GIではどうやってるんでしょうね?
GIのPDFとかを見ると、よく出てくるのが「良質な乱数」ですが、サンプリングという意味でかなり重要視されているように見えます。
あまりきっちりやるとGIのような計算時間が掛かったりして元も子もないのであくまで手軽なまねごとをやりたいんです。

制作・©:のぼる/N.Lab