技術

フォトンベイカー(仮)をつくろうと思う

この前ちょっと書いたけど、拡散面だけで構成されるシーンのカラーライトマップを事前ベイクする、という用途では特にGI感において現状のBlenderのレンダリング品質に満足いかないので、物理ベースのレンダラというかベイカーをつくろうと思っている。

モデルデータと何の陰影計算も行ってない拡散面の色(模様)がそのまま出力されたのっぺりとしたカラーライトマップテクスチャを受け取り、リアルな陰や影を焼きこんだカラーライトマップテクスチャを生成する、という処理を行うもの。

もっとざっくり言うと、しょぼいテクスチャを入力したら、いい感じのテクスチャが自動で出力されるものを考えている。

フォトンマッピング法を利用するつもりだけど、カラーライトマップを出力する以上、視点の位置に依存したシェーディング(反射や屈折等)が行えないので、フォトリアル方面の努力はそこそこに抑えるつもり。
モデルに貼りつけてライティング無しでリアルタイムレンダリングしたときに、それなりに見栄えがするようなカラーテクスチャを生成する事が目標。

今のところはまだ各種技術の調査段階でコードは書いてないけど、フォトンマップのデータ構造としてオーソドックスなkd木を利用する方法は理解したつもり。
あと、フォトン(レイ)と拡散面の衝突判定を高速化するために5次元空間分割によるRay Classificationを利用しようと思ってて、その辺で必要なアルゴリズムもあらかた理解したつもり。

とりあえず最初はGPUによる高速化とかは一切考えずに(と言いつつもRay ClassificationはGPUと相性が良さそうなので選んだ)実装していこうと思う。
まずはレンダラを作って動作確認をした後にベイカーとして拡張していこうと思う。

あとは、テクスチャに焼き込むものをカラーだけじゃなくて球面調和関数の係数にも対応して視点の位置によって見え方が変わるような用途にも使えるテクスチャとかも、できれば生成できるようにしたいなと思ってるけど、今のところ個人的に必要としてないのでそこはあくまでもオプションということで。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください