基于光線追蹤的渲染中景深(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上對到達成像平面上特定點的能量用蒙特卡洛的方法進行了估值。

轉載于:https://www.cnblogs.com/AirGuanZ/p/6363175.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396831.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396831.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396831.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu 安裝 pycharm

添加源:$ sudo add-apt-repository ppa:mystic-mirage/pycharm安裝收費的專業版:$ sudo apt update$ sudo apt install pycharm安裝免費的社區版:$ sudo apt update$ sudo apt install pycharm-community卸載:$ sudo apt remove p…

帶你制作百詞斬單詞表讀寫插件

上篇博文簡單的介紹了一下Chrome插件,今天就與大家分享一下我做的這款有實際意義的插件吧。 做這款插件主要是用百詞斬站點進行單詞學習時,遇到的一點點鬧心事兒。在單詞表中不能聽發音。也不能練習拼寫。所以才忍無可忍的做了這么一款插件。自我感覺還是…

Linux7改運行級別,Centos7.0修改系統運行級別

首先翻譯下ininttab里面的內容:#inittab不再使用時利用系統。#添加配置這會對你的系統沒有影響。#Ctrl-Alt-Delete由/usr/lib系統/系統/ctrl-alt-del.target處理#系統使用的目標而不是運行級別。默認情況下,有兩個主要目標:#multi-user.targe…

python測試字符串類型的函數_python-02 數據類型 字符串str

字符串str 一、字符串定義 概念:字符串是有序的 不可修改的,元素以引號包圍的序列 引號類型:單引號 “”雙引號 “ ””三引號 三單引號 print(python) print("python") print(python) print("""python""…

POJ2115 C Looooops(線性同余方程)

無符號k位數溢出就相當于mod 2k&#xff0c;然后設循環x次A等于B&#xff0c;就可以列出方程&#xff1a; $$ CxA \equiv B \pmod {2^k} $$ $$ Cx \equiv B-A \pmod {2^k} $$ 最后就用擴展歐幾里得算法求出這個線性同余方程的最小非負整數解。 1 #include<cstdio>2 #incl…

工作測試博客

工作測試博客轉載于:https://blog.51cto.com/12559670/1895000

iphone各機型參數對比_帶你了解新款iPhone 12系列四款機型

2020年10月14日凌晨1&#xff1a;00&#xff0c;蘋果召開新品發布會&#xff0c;發布了新款iPhone 12系列手機&#xff0c;“果粉”們期待已久的iPhone 12終于來了。iPhone 12系列手機共有四款機型&#xff0c;分別是iPhone 12 mini、iPhone 12、iPhone 12 Pro、iPhone 12 Pro …

設置開機自啟動服務

一、軟鏈接方法 利用ln -s 命令將/etc/rc.d/init.d/目錄下腳本&#xff08;注意執行權限&#xff09;軟連接到 rc3目錄下&#xff0c;/etc/rc.d/rc3.d 目錄也就是我們一般的系統運行級別。ln -s /etc/rc.d/init.d/** /etc/rc.d/rc3.d/S**這里的S代表的是開機自啟動服務&#x…

mysql benchmark基準測試

git項目地址&#xff1a; https://github.com/akopytov/sysbench 利用sysbench很容易對mysql做性能基準測試&#xff08;當然這個工具很強大&#xff0c;除了測試主流數據庫性能&#xff0c;還能測試其它方面&#xff0c;詳情自己看官網項目文檔&#xff09; mac上的用法&#…

高并發第一彈:準備階段 了解高并發

高并發第一彈:準備階段 了解高并發 首先需要知道什么并發, 什么是高并發. 并發: 關于并發的學習&#xff0c;可以從JDK提供的并發包為核心開始&#xff0c;許多其他的類和封裝都是對其進行擴展或者補充&#xff0c;我們來看一下Java并發包(java.util.concurrent包&#xff0c;簡…

matlab立體坐標定位_【半導光電】基于光電探測器的激光章動定位算法(二)

今日光電有人說&#xff0c;20世紀是電的世紀&#xff0c;21世紀是光的世紀&#xff1b;知光解電&#xff0c;再小的個體都可以被賦能。歡迎來到今日光電&#xff01;----與智者為伍 為創新賦能----1. 章動定位算法實驗前&#xff0c;首先需要對光路進行調節&#xff0c;保證經…

linux系統死機窗口移動不了怎么辦,Linux 操作系統死機故障處理方法總結

hai00882008-01-30 15:53我只備份一次,我的磁帶有400G, 備份第二次,磁帶就彈出來,我的tapelist里的內容 20080130151855 DailySet1-01 reuse是不是和我的anmanda.conf的chg-manua(更換磁帶的腳本)l這個腳本有關係,-sh-3.00$ amcheck DailySet1Amanda Tape Server Host Check---…

Android:支持多選的本地相冊

前段時間在做一個動態發布功能&#xff0c;需要用到圖片上傳。一開始直接調用的系統相冊和相機&#xff0c;由于系統相機不支持多選&#xff0c;就花點時間做了個本地相冊&#xff0c;在此開源下。 先上截圖&#xff0c;依次為選擇相冊界面、相冊詳情界面、查看圖片大圖界面 相…

心靈與大腦

2019獨角獸企業重金招聘Python工程師標準>>> http://blog.sina.com.cn/s/blog_6f034fc30102f2tg.html 轉載于:https://my.oschina.net/chirnson/blog/832011

python入門心得_記初學python的一些心得

人生苦短&#xff0c;我用python&#xff01; 其實我自學python也很長一段時間了&#xff0c;但總是去更換學習資料&#xff0c;搞的現在學的不是很好&#xff0c;因為沒更換次資料都要從頭開始學起&#xff0c;那么分享下我的學習戰況吧&#xff0c;不是很好&#xff0c;還將就…

羅技鍵盤linux,logiops,在 Linux下設置羅技鼠標的按鍵和手勢

眾所周知&#xff0c;幾乎所有的消費級電子產品都不會對 Linux 有太好的支持&#xff0c;羅技當然也不例外。Logitech Options 是羅技辦公鼠標的自定義功能驅動&#xff0c;很容易猜到&#xff0c;羅技只提供了Windows和Mac版本。但幸運的是&#xff0c;有人開發出了一個第三方…

16.U-boot的工作流程分析-2440

16.U-boot的工作流程分析-2440 分析的流程&#xff1a; 程序入口 第一階段程序分析 第二階段程序分析 2440開發板&#xff1a; 1.uboot的入口&#xff1a; 要看uboot工程的入口&#xff0c;首先打開頂層目錄的Makefile&#xff1a; Uboot所支持的開發板&#xff0c;在頂層的Ma…

linux增加調整虛擬內存

增加虛擬內存&#xff1a;1、檢查當前的分區情況:# free -m2、增加交換分區文件及大小&#xff0c;如果要增加1G大小的交換分區&#xff0c;則命令寫法如下&#xff0c;其中的 bs等于想要的塊大小&#xff0c;count是要增加多少塊&#xff0c;虛擬內存的大小等于bs*count# dd i…

linux練習手冊,Linux操作習題集(1)

動動手實作題&#xff1a;假設你不知道你的主機內部的各項元件資料&#xff0c;請拆開你的主機機殼&#xff0c;並將內部所有的元件拆開&#xff0c;並且依序列出&#xff1a;CPU的廠牌、型號、最高時脈&#xff1b;主記憶體的容量、介面 (DDR/DDR II等)&#xff1b;顯示卡的介…

如何使用Redis做MySQL的緩存

應用Redis實現數據的讀寫&#xff0c;同時利用隊列處理器定時將數據寫入mysql。 同時要注意避免沖突&#xff0c;在redis啟動時去mysql讀取所有表鍵值存入redis中&#xff0c;往redis寫數據時&#xff0c;對redis主鍵自增并進行讀取&#xff0c;若mysql更新失敗&#xff0c;則需…