2011-12-16 3 views
1

物理的なraytracer(つまり、特定の波長の実際の光子を使用)を実装し、小さなシーン(2つの球や囲み枠など)に制限して実験を行いたいとします。これは高速ではありませんが、後で最適化します。Raytracing and light

私は現在、光子が表面とどのように作用するかについて知っています。つまり、表面の吸収スペクトルと反射率/屈折率の指標と屈折率に基づいて反射します(吸収され、再び放出される)か、

私は発光物質(「ライト」など)からフォトンを撮影し、カメラに着陸するまでシーンを跳ね返す方法を理解しています。正確な結果が得られますが、許容できないほどゆっくりです。逆方向に行う必要があります(カメラからフォトンを撮影する)。

例えば、カメラから来る光子が赤い箱の側面に当たった場合、光子が赤に対応する波長を有する場合、それは反射され、他のすべての波長は吸収され、赤色を生じる。しかし、色の強さは、非常に近い光子のサンプルを数多く採取し、最終的にどれが光と衝突するかを調べることで決定されます。最終的に、光子が光に当たったり、光が当たったりすることがないので(部分的な衝突の後に)、部分的な衝突の概念はありません。

基本的に私の質問は、ピクセルによって受け取られる光の強度は、実際に光源にするピクセルの光子サンプルの数の関数ですか?

+0

はこれが(すみません)あなたの実際の質問に非常に有用ではありませんが、[コーネルボックス](http://en.wikipedia.org/wiki/Cornell_Box)(または使用することをお勧めしますバリアント)をテスト用に使用してください:) – Hybrid

答えて

2

http://en.wikipedia.org/wiki/Path_tracingは、レイトレーシングと似ていますが、カメラの直射光線がサーフェスに当たったときに光源を直接サンプリングすることはありません(非常に遅くなりますが、光源からの「前方」を撮影する)。

しかし、実際に最初に決定しようとしているプロパティ(「光子は赤色に対応しています」)を持っていると想定しているカメラからの「逆光子」を考えて自分を混乱させるようです場所。この周りにあなたの心を包み込むには、最初に "レギュラー"レイトレーシングを読みたいかもしれません。カメラからの光線がある場面を跳ね返り、一定の跳ね返りの深さまで、または物体に当たるまで考えてください。その時点で、光源を直接サンプリングして物体を照らしているかどうかを確認します。

最終的な質問について「ピクセルによって受け取られる光の強度は、実際に光源にするピクセルのフォトンサンプルの数の関数ですか、それとも何か他のものがありますか?」私はhttp://en.wikipedia.org/wiki/Rendering_equationを参照して、レンダリング方程式(一般的な数学的問題、レイトレーシングのような3Dグラフィックスのすべてのアルゴリズムで解決しようとする)、およびその制限付きのリストを見つけることができます。これらの効果はまた、)ピクセルの最終的な色及び強度の決定に関与している:光が時間的に一瞬で吸収し、異なる時間に放出されるときに発生

  • 燐光、
  • 蛍光、吸収され放出された光が異なる波長を有する場合、
  • 干渉、wher光の波動特性が示され、入射光および出射光の空間的位置が異なる場合には、表面下散乱が生じる。地下散乱を考慮せずにレンダリングされたサーフェスは不自然に不透明に見えることがあります。
+0

私のベスト・ベットは、パス・トレースを実装することです。私の光子は波長特性を持っているので、蛍光の問題は簡単に解決できると思われます(材料の性質に応じて反射光子の波長を変えることができます)が、他の3つは扱いにくいようです。私はまだ連続した線のサンプル(二次的、三次的な線など)が最終的な色にどのように寄与しているのかはまだ分かりませんが、周囲の読書は傷ついてはいけません。ありがとう! – Thomas