1 2 2 射線與材質的交叉點

2021-08-17 08:33:45 字數 930 閱讀 4206

相機生成乙個射線,首要的渲染工作是決定物體的材質,如果有的話,還要確定射線第一次互動和在哪發生互動。這個互動點順著射線是可見的,且我們希望模仿光線與物體在這個點的互動。為了找到光線互動,必須測試射線與所有物體在這個場景的互動,並且選擇出射線第乙個互動的點。假如射線為r,我們可以引數化如下形式:

r(t) = o + td,
o為射線的原點,d是它的方向向量,t是乙個(0,正無窮)的引數。這樣就可以通過制定引數 t 獲得乙個順著射線的點,並且可以評估上述等式。

很容找到射線 r 與由函式f( x, y, y) = 0 定義的表面互動點。首先分解射線等式成隱含等式,產生乙個僅由引數 t 表示新函式,然後求解這個以 t 引數的函式,並由射線等式替代最小的正根,來找到期望的點。例如,在球心以 r 為半徑的隱含等式:

替換射線等式,得到:

所有的變數值除了 t 之外都是已知的,這樣更容易的求解 t 的二次等式。如果沒有實根,射線將偏離求表面;如果有個正根,則最小的那個就是互動點。

僅僅由互動點不能為剩餘的射線追蹤器提供足夠的資訊;還需要知道在這個點表面的某些屬性。首先,在這個點材質的表現必須確定,且需要一直傳遞到後面階段的射線追蹤演算法。其次,為了描繪陰影,互動點處額外的幾何資訊需要獲取。例如,表面法線 n 一直都需要。雖然許多射線追蹤僅對 n 進行操作,但精確的渲染系統如bprt需要更多資訊,如各種位置的偏導數和關於表面區域性引數的表面法線。

當然,多數場景下是會有多個物體。使用蠻力的方法將實驗對每乙個物體的射線,然後在所有的互動點中選擇最小的正根 t 作為最接近的互動點。這種方法雖然正確,但很慢,即使對於適度複雜的場景。乙個比較好的方法就是在對射線互動點處理的過程中,融合加速結構快速的過濾整個物體組。這種快速剔除幾何的能力意味著射線追蹤複雜度通常為 o(ilogn) ,i為影象中的畫素點數,n為場景中的物體數。

pbrt 的幾何介面和它為各種形狀的實現見第3章,加速介面和實現見4章。

MATLAB 曲線與座標交叉點

matlab學習筆記 求導數 目的 找到曲線與座標的交叉點,數學含義為,y 0或者x 0。根據數學意義寫 如下 若y f x 找到所有y 0的點既可找到交叉點,即 a find y 0 不能識別交叉點,因為資料往往為離散訊號,在將訊號進行離散化的時候,交叉點被錯過,而未取得。改變策略 尋找資料 正負...

尋找雷射的交叉點

這是乙個來自的提問 這是一張雷射,需要得到3橫3豎的交點,其中的圓和x是用了測試仿射變換的。一 分析 大畫素 單通道。二 思路分析 必須在量化的基礎上,尋找這9個焦點的 固有特徵 至於9個點之間的排序,那是簡單問題。三 演算法實踐 1 這樣乙個影象,單通道所以無法做hsv分解 必須考慮到光照影響,所...

3D空間中射線與三角形的交叉檢測演算法

射線ray,在3d圖形學中有很多重要的應用。比如,pick操作就是使用射線ray來實現的,還有諸如子彈射線的碰撞檢測等等都可以使用射線ray來完成。所以,在本次部落格中,將會簡單的像大家介紹下,如何進行ray 的交叉檢測。在tomas moller的mt97 中,提出了一種新的演算法。這種演算法能夠...