前回まで、PPMだけに頼らず直接照明やFGを駆使することによって最終的な画の質を上げようとしていた。
質って何?って考えたときに、「ノイズが無いディティール感」というのが大事であり、前回まではその「ノイズが無いディティール感」を素早く得るために色々頑張ってきた。
ノイズを無くすにはぼかせばいいけど、そうするとディティール感が損なわれる。
さじ加減が難しい。
しかし良く考えてみると、今作ってるものはベイカーというかテクスチャエンハンサーと言えるようなものであり、つまりすでにテクスチャ≒ディティールが存在してることが前提となっている。
であれば、放射照度を計算しボカシてから、元のテクスチャをライティングしたら良いんじゃないか、と思ったので試してみた。
今回の話は今まで使ってきたCornell Boxのシーンだと分かりづらいので、テクスチャと一部のオブジェクトを差し替えただけの別のシーンを用意した。
上が100万フォトンを使ったPPMの結果(放射束)をボカしてからテクセルの放射輝度を計算したもの。
下が同じく100万フォトンを使ったPPMで放射照度を計算しボカシてから、元のテクスチャをライティングし放射輝度を計算したもの。
違いは計算方法だけであり、当然どちらも同じテクスチャを使用している。
(これが今までのCornell Boxのシーンだと、そもそもオブジェクト表面にディティールが無いので、ほとんど同じ画となる。)
特にノーマルマッピングを行ってるわけじゃないのに、下の画ではそれっぽい効果が現れてるのが不思議。
直接照明も間接照明もPPMで計算していて、しかもたったの100万フォトンしか使ってないので、どちらも14秒程度しか掛かってない。
ほぼ同じ処理時間でこの効果はなかなか良い。
ただ、どちらも球体のポリゴンのエッジが目立ってる。
一応Blender上でモデリングした際にスムージングをかけてあり、プログラム側でもスムージングされた法線を利用するようにしてはいるんだけど、ボカシをテクスチャ空間のポリゴン単位で行っているため、隣接ポリゴンとの色の差が目立つんだと思う。
(あと、法線がスムージングされててもポリゴンの形状はそのままなので、フォトンの当たり判定などで誤差が生じるというのもあるだろう。)
この方式って要はJensen本に書いてあった照明マップ(illumination map)を使ったやり方そのものであり、またその中で指摘されていた「微細なポリゴン面における放射輝度・放射照度の推定が難しい」という照明マップのデメリットがそのまま出てるんだと思う。
これはやはりkd木を使った元祖フォトンマッピングに戻さないとダメかも。
いや、PPMのままkd木を利用するスタイルでもいいかもしれない。
ちなみに上のシーンで利用した陰影無しの元テクスチャと、今回のプログラムで計算したイイ感じのテクスチャは以下のとおり。
(計算は1024×1024で行ってるが、ブログに載せるにあたって512×512に縮小した。上が元テクスチャ。下が計算後のテクスチャ。)
さらにちなみに、今回のプログラムでCornell Boxのシーンを計算したものは以下のとおり。
こちらはフォトンを一千万個使い、それに合わせてボカシ具合を下げてある。計算に掛かった時間は84秒。
光源の色も含めて、元祖となるべく同じ反射率になるようにシーンデータの色を修正した。
スペクトルで計算してるわけじゃないし、あくまでも大胆かつ私の感覚的な近似なので、色合いは違うけど、まぁまぁいい感じになってるんではなかろうか。
最近のコメント
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
peta_okechan
針金みたいなパーツを引っ張ると外れます。 他の方の…
虎徹ファン交換
虎徹の標準ファンを外す際に、どのようにして外されま…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…