光線追蹤(Whitted-Style)

光柵化在軟陰影和光線多次彈射上的實現比較麻煩,所以引入了光線追蹤的方法。光柵化通過Shadow Mapping來實現陰影的效果,它應用於點光源上。

光柵化是光線從相機沿着每個像素的方向打到場景上,然後彈射到光源,即只有一次的光線彈射。

 

 

光柵化的質量會比較低,但也有着它的好處,就是非常快。光線追蹤根據實際物理規律來模仿的,會非常逼真,但是會非常慢

 

光柵化可用於實時渲染,光線追蹤一般用於線下渲染

 

 光線追蹤:光線從攝像機穿過屏幕上像素,向場景內發射,光線有可能打到物體,也有可能打不到物體上,如果打到物體上,就向光源連去,如果能到達光源說明不在陰影裏,如果無法到達,就是在陰影裏。

 

 

它也是記錄光線打到最近的物體上

 

 

 

然後向光源連線,有了入射方向和出射方向和法向量,就可以計算這點的着色,然後寫回到像素內

 

 

 

(Whitted-Style) Ray Tracing:當光線打到某個光滑物體的表面,會發生反射,或者打到玻璃材質時會發生折射,考慮折射和反射光線打到的物體表面,

分別都對光源連線,計算所有點的着色,都加到同一個像素內。也要考慮光線能量的損失,不能無限反射。

 

 

 

先是定義光線,光線有一個起點,和一個方向,以及時間t。

 

 

 

光線與場景中的物體會發生交互,所以需要判斷光線與物體上三角形的交點是否在三角形內。先需要判斷交點是否在三角形所在平面內,然後判斷交點是否在

三角形內。

 

定義平面:過平面的法向量,和平面上的點p'確定一個平面,某個點p和p'的連線與法向量垂直,說明p點在該平面內。

 

 

 

計算光線與平面的交點,然後判斷交點是否在三角形內。

 

 

 

也有算法可以直接算出交點是否在三角形內,用重心座標來計算,要保證t>0,纔有實際意義,當1-b1-b2,b1,b2非負說明交點在三角形內。

 

 

 

考慮光線與場景中所有的三角形求交,這樣會非常非常慢,需要方法來加速這個過程,可以給一個物體加一個包圍盒,這個包圍盒會把物體完整的包圍住,

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章