Cook-Torrance BRDFをトレースするパス


27

- 「ので、長い記事のために申し訳ありませんが、私はそのように行うことを好む悪魔は細部にある。」:)

私はスクラッチからパストレーサーを書いており、完全に拡散した(ランバート)表面に対してうまく機能しています(つまり、ファーネステストは-少なくとも視覚的に-それがエネルギーを節約しており、レンダリングされた画像がミツバレンダラーで生成されたものと一致することを示しますパラメーター)。現在、いくつかの金属表面をレンダリングするために、オリジナルのCook-Torranceマイクロファセットモデルの鏡面反射用語のサポートを実装しています。しかし、このBRDFは受け取ったエネルギーよりも多くのエネルギーを反映しているようです。以下のサンプル画像を参照してください。

ミツバの参照画像。

上の画像:ミツバリファレンス(正しいと仮定)画像:直接光サンプリング、重要度半球サンプリング、最大パス長= 5、32層化spp、ボックスフィルター、表面粗さ= 0.2、RGBによるパストレーシング。

レンダリングされた画像

上の画像:実際のレンダリング画像:ブルートフォースナイーブパストレース、均一な半球サンプリング、最大パス長= 5、4096層化spp、ボックスフィルター、表面粗さ= 0.2、RGB。レンダリング設定に関していくつかの違いはありますが、レンダリングされたイメージが前に示した参照に収束しないことは明らかです。

私はそれが実装の問題ではなく、レンダリング方程式フレームワーク内でのCook-Torranceモデルの適切な使用に関する問題だと思う傾向があります。以下に、鏡面反射光BRDFをどのように評価するかを説明します。適切に行っているかどうか、そしてそうでない場合はその理由を知りたいです。

重要な詳細を説明する前に、レンダラーは非常に単純であることに注意してください。1)総当たり攻撃ナイーブパストレーシングアルゴリズムのみを実装します。直接光サンプリング、双方向パストレーシング、MLTはありません。2)すべてのサンプリングは、交点の上の半球で均一です-重要なサンプリングはまったくなく、拡散サーフェスでもありません。3)光線経路の最大長は5に固定されています-ロシアンルーレットなし; 4)放射輝度/反射率はRGBタプルで通知されます-スペクトルレンダリングはありません。

クックトーランスマイクロファセットモデル

次に、スペキュラBRDF評価式を実装するためにたどったパスを作成しようとします。レンダリング方程式ですべてが開始 pは表面での交点であります、W oは視線ベクトルであり、wは私

Lo(p,wo)=Le+∫ΩLi(p,wi)fr(wo,wi)cos⁡θdω
pwowi光線ベクトルは、ある沿って出射放射輝度であるW 、O、L iが時輝度入射するPに沿ってW Iとのcos θ = N ⋅ W iが。LowoLipwicos⁡θ=n⋅wi

上記の積分(つまり、レンダリング方程式の反射項)は、次のモンテカルロ推定器1で近似できます。 ここでpは、サンプリングベクトルwkの分布を記述する確率密度関数(PDF)です。

1N∑k=1NLi(p,wk)fr(wk,wo)cos⁡θp(wk)
pwk

実際のレンダリングでは、BRDFとPDFを指定する必要があります。クックトーランスモデルの鏡面反射項の場合、次のBRDF ここで、 D=1

fr(wi,wo)=DFGπ(n⋅wi)(n⋅wo)
D=1m2(n⋅h)4exp⁡((n⋅h)2−1m2(n⋅h)2)
F=cspec+(1−cspec)(1−wi⋅h)5
G=min(1,2(n⋅h)(n⋅wo)wo⋅h,2(n⋅h)(n⋅wi)wo⋅h)
h=wo+wi|wo+wi|cspecFFは、シュリック近似とも呼ばれ、実際のフレネル項の効率的で精度の低い近似です。

滑らかな鏡面をレンダリングする場合は、重要度サンプリングを使用することが必須です。ただし、私は適度に粗い表面()のみをモデリングしているため、しばらくの間、均一なサンプリングを維持することにしました(レンダリング時間が長くなります)。この場合、PDFは 均一なPDFとCook-Torrance BRDFをモンテカルロ推定器に代入することにより(はランダム変数で置換)、 m≈0.2

p(wk)=12π
wiwk
1N∑k=1NLi(p,wk)(DFGπ(n⋅wk)(n⋅wo))cos⁡θ(12π)
交点からランダムな光線を1つだけ照射するため 、をキャンセルして合計を削除できます。我々は、で終わる ので、我々はそれをさらに簡略化することができる π
2Li(p,wk)(DFG(n⋅wk)(n⋅wo))cos⁡θ
cos⁡θ=n⋅wk
2Li(p,wk)(DFGn⋅wo)

したがって、これは、反射率がCook-Torrance BRDFによって記述される鏡面に光線が当たるときに評価する表現です。それは受け取ったよりも多くのエネルギーを反映しているように見える表現です。私はそれ(または派生プロセス)に何か問題があるとほぼ確信していますが、それを見つけることはできません。

興味深いことに、上記の式にを掛けると、正しい結果が得られます。しかし、数学的に正当化できないため、それを拒否しました。1π

どんな助けも大歓迎です!ありがとうございました!

更新

以下に@wolleが指摘したように、このペーパーでは、パストレースに適した新しい定式化を示します。正規分布関数(NDF)にはファクターが含まれ、BRDFには要因。したがって、 および 上記の方程式を含めるレンダリング方程式、私は D1πfr14

Dnew=1πm2(n⋅h)4exp⁡((n⋅h)2−1m2(n⋅h)2)
frnew(wi,wo)=DFG4(n⋅wi)(n⋅wo)
π2Li(p,wk)(DnewFGn⋅wo)
それはうまくいきました!PS:現在の問題は、と新しい定式化がエネルギー保存の維持にどのように役立つかをよりよく理解することです...しかし、これは別のトピックです。Dfr

更新2

PeteUKが指摘したように、私の質問の元のテキストで提示されたフレネル定式化の著者は、クックとトーランスに誤って起因していました。上記で使用されたフレネル定式化は、実際にはシュリックの近似として知られており、クリストフ・シュリックにちなんで命名されています。質問の元のテキストはそれに応じて変更されました。


まだこのサイトにアクセスしているかどうかは
— わかり

回答:


12

よれば、この論文、あなたになければならない: したがって、 1πfr14

fr=DFG4(n⋅wi)(n⋅wo),
π2Li(p,wk)(DFGn⋅wo).

クックトーランスBRDFのこの他の定式化を見てきました。この式では、式にではなくが乗算されます。ただし、最終的な式に存在する2を1.57()で置き換えるため、最終的にこの変更の効果は非常に小さくなります。私はここでテストを行いました(念のため...)、実際に問題は続きました。141π=π2
— クリスチャンパゴ

@Capagot係数は、光源強度に(慣例により)組み込まれ、BRDFから除外される場合があります。この質問もご覧ください。しかし、これは、パストレースよりもリアルタイムレンダリングでより一般的です。また、Lambertianのテストはミツバと完全に一致するため、これが問題である可能性は低いと思われますが、まだ検討する価値があるかもしれません。1/π
— ネイサンリード

@Capagot 分布関数がないと思います。私がリンクされた紙はそう有する、使用ベックマン分布におけるその因子を含むでとでトリックを行う必要があります。1πD14fr1πD
— ヴォレ

@NathanReedの色への埋め込みに関する記事を読みました。しかし、あなたが言及した理由のために、私はそれが問題ではないと確信しました。π
— クリスチャンパゴ

@wolleまさに!実際、私はあなたが言及した論文をすでにざっと見ていたが、私はそれに気づかなかった!私はちょうど私のアカウントへの実装に変更しましたでとで、すべてが今、魔法のように動作します!質問への更新と回答を含めます!ありがとうございました!1πD14fr
— クリスチャンパゴ

13

との用語の混同について疑問に思っている人のためにこれを投稿しています。1π14

用語は、元のCook-Torrance参照からのエラーです。1π

実際、用語は、反射立体角から通常立体角への変換のヤコビアンに由来します。14(n⋅ωi)

ほとんどの論文によると、という用語は[Torrance、67]で初めて登場しました。14

この用語のわかりやすい説明については、[Nayar、91]の付録Dを参照してください。同じ論文の画像を次に示します。

dω′=dωr4cos⁡θi′

また、Joe Stamは、[Stam 01、粗い表面に囲まれた皮膚層の照明モデル]、付録BのNayarの用語に同意しています。14

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.