基於光線追蹤的渲染中景深(Depth of field)效果的實現


  圖形學離線渲染中常用的透視攝像機模型時根據小孔成像的原理建立的,其實現通常是從clip_image002向成像平面上發射ray,並把trace這條ray的結果作為成像平面上對應交點的采樣結果。即:

clip_image004

圖片來自《Fundamentals of Computer Graphics》

  現實中的鏡頭拍攝的圖像有景深(Depth of field)的效果,譬如:

clip_image006

圖片來自網絡

  顯然,上圖中的耳機被放在攝像機的焦平面附近,成像很清晰;背景中的景物則離焦平面較遠,呈現出模糊的效果。對離線渲染而言,這一效果有利於加強渲染結果的真實性和層次感。但之前提到的攝像機模型過於簡單,要得到景深,需要更精確的攝像機模型。

clip_image008

圖片來自網絡

  上圖是網絡上給出的關於景深的一張示意圖,看起來復雜駭人。但稍微分析就能知道,使得不在焦平面上的景物顯得模糊的最根本原因恰恰是焦平面的概念本身,如下圖——

clip_image010

圖片來自網絡

  可以看到,假如在原來的透視攝像機模型中加入一個凸透鏡,那么成像過程將不再是“一根”光線穿過小孔到達成像平面上的一點,而是許多光線透過凸透鏡匯聚到成像平面上的一點。

clip_image012

物體恰好在焦平面上的情形  

  顯然,假如有一物體正好在焦平面上,那么從上面某一點發射的光線通過凸透鏡在成像平面上也會匯聚於一點,於是就得到了清晰的圖像。但是,當物體不在焦平面上時,匯聚到成像平面上某一點的光線將不再全部來自於物體上的一點,而是來自於物體上的一小片區域,這就形成了模糊的效果,也就是最終看到的景深。

clip_image014

物體不在焦平面上的情形

  有了這一模型,要設計渲染出景深效果的算法就很容易了。以往從透視攝像機發射ray的方法是:

對成像平面上的一點clip_image016,發射射線clip_image018,其中clip_image020clip_image022clip_image002[1]點位置。

新的方法則是:

對成像平面上的一點clip_image016[1],求出射線clip_image024與焦平面的交點clip_image026,然后在凸透鏡上隨機采樣(把凸透鏡看做有一定半徑的圓盤)。對每一個采樣點clip_image028,發射射線clip_image030

新方法實質是在凸透鏡所在的disk上對到達成像平面上特定點的能量用蒙特卡洛的方法進行了估值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM