2012-11-19 64 views
2

對於光線追蹤,我應該如何處理透過彎曲光線的材料的陰影射線(或者明確的光路)?我瞭解不會彎曲光線的透明和半透明屏障:我只需要減弱光線。但是如果屏障實際上是​​將光線彎曲的話,那麼光線根本不會在光源處終止。更一般地說,從光源到點的明確路徑將不得不遵循不同的路徑來解決彎曲:一般將改變入射光的性質(角度,行進距離等)的路徑)。那麼我需要找到那條路,如果是的話,怎麼樣?通過光線彎曲物體的陰影射線

我正在考慮的一件事是強制顯式路徑繼續到與光線彎曲器相交的點,然後用新的明確光線彎曲和延伸光源到光源(如果它與另一個光源相交,則繼續前進光彎曲邊界)。但我不能從彎曲的表面到光源採取明確的路徑,因爲它不會考慮彎曲。

我認爲如果有一個折射表面,我可以根據它彎曲光線的方式來解決一個系統,並找到從光線到表面的光線,以及從點到表面的另一個光線,其中每條光線會彎曲到另一個。但是如果有任意多折射面,我不知道它會經過哪些面,直到我知道它是如何通過所有其他面彎曲的。

+0

你需要折射率(或一些啓發是相當類似)的模式,改變光線的方向,爲持續時間是通過材料旅行,再調整當它退出(或內部反映,或...)時它會再次出現。 – twalberg

+1

對射線的彎曲進行建模並不是真正的問題,問題是彎曲可能會導致此特定射線不能到達光線。更重要的是,我認爲我需要找出從光線到這一點的路徑是否存在,但我不確定如何考慮到可能發生的任何折射。 – brianmearns

+0

同樣的問題在這裏..我已經實現了折射光線計算,但我還是不知道如何模擬由折射和會聚引起的高光。 –

回答

1

如果您只是從相機開始進行單向遞歸光線追蹤,則沒有已知的方法來模擬您想要模擬的光徑類型(從光線到鏡面反射或折射到「常規」表面(閱讀「規則」爲漫反射或光澤)到相機)。

您需要使用的技術,其包括從光源開始跟蹤路徑,如Bi-directional path tracingPhoton Mapping

雙向方式下面是通過光子映射生成焦散的圖像。如果仔細觀察,可以看到泳池分隔符在泳池底部的焦散處投射陰影。 (我會產生更好的演示視頻和編輯它,但這是最好的,我可以用一個快速搜索找到) Shadows in caustics

1

除了@ MikeMx7f說什麼,你實際上需要做的依賴在你的特定光線追蹤「技術」上。請注意,以下所有點都嚴重過度簡化。

  • 當進行直線前進單向懷特迪式射線追蹤通常的方法就是假定遮擋的射線時,如果擊中一個陰影投射物體在交點和所述光源之間。

  • 當這樣做(單向)路徑追蹤1你一般只是從你的交點採樣半球內方向的很多和跟蹤那些次級射線直到某個標準被滿足(最大深度,命中「光源「 - 這是一種發光材料)。

  • 當做光子映射時,通過存儲在場景幾何體上的光子得到折射對象引起的焦散。那就是你在附近收集一定數量的光子,以便近似交叉點處的入射光。然而,必須特別注意鏡面反射表面。

Path Tracing