RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

光線追蹤算法概覽

穎脈Imgtec ? 2024-10-12 08:07 ? 次閱讀

本文翻譯自Scratchapixel 3.0[1],是一個關(guān)于計算機(jī)圖形學(xué)的系統(tǒng)性的學(xué)習(xí)教程。如果有誤,歡迎在評論區(qū)討論。

由伊本·海塔姆描述的現(xiàn)象解釋了我們看到物體的原因?;谒挠^察,可以得出兩點有趣的評論:首先,沒有光,我們什么也看不見;其次,如果我們環(huán)境中沒有物體,我們也看不到光。如果我們在星際空間旅行,這通常就會發(fā)生。如果我們周圍沒有物質(zhì),我們只能看到黑暗,即使光子潛在地穿過那個空間(當(dāng)然,如果有光子,它們必須來自某個地方。如果你直接看它們,如果它們進(jìn)入你的眼睛,你會看到它們反射或發(fā)射的物體的圖像)。


正向追蹤

f2b8a03a-882d-11ef-bb4b-92fbcf53809c.png

圖1:光源發(fā)射的無數(shù)光子撞擊綠色球體,但只有一個光子會到達(dá)眼睛表面。

如果我們試圖在計算機(jī)生成的圖像中模擬光與物體的相互作用過程,那么還有另一個物理現(xiàn)象需要我們注意。相對于物體反射的光線總數(shù),只有少數(shù)幾條光線會到達(dá)我們眼睛的表面。舉個例子,想象我們創(chuàng)建了一個只發(fā)射一束光子的光源。現(xiàn)在讓我們看看這個光子會發(fā)生什么。它從光源發(fā)射出來,沿著直線路徑行進(jìn),直到撞到我們物體的表面。忽略光子吸收,我們可以假設(shè)光子會以隨機(jī)方向反射。如果光子撞到我們眼睛的表面,我們就會"看到"光子反射的點(圖 1)。

你聲稱“照亮區(qū)域或物體上的每個點都會向每個方向輻射(反射)光線”。這難道不與“隨機(jī)”相矛盾嗎?

解釋為什么光會在每個可能的方向上反射超出了本課程的范圍(可以參考光物質(zhì)相互作用課程獲得完整的解釋)。然而,簡單回答你的問題:是和否。當(dāng)然,在自然界中,真實的光子會被真實的表面以特定的方向反射(因此不是隨機(jī)的),該方向由幾何拓?fù)浜凸庾釉诮稽c處的入射方向所定義。如果我們用肉眼觀察一個漫反射物體的表面,它看起來很光滑。但是如果我們用顯微鏡觀察它,我們會發(fā)現(xiàn)微觀結(jié)構(gòu)可能更加復(fù)雜和光滑。左側(cè)的圖像是不同放大比例下的紙張照片。光子非常小,微觀特征和形狀會反射在物體的表面上。如果一束光線照射在這個漫反射物體的表面上,光束內(nèi)的光子將會撞擊微觀結(jié)構(gòu)的不同部位,因此會以許多不同的方向反射。我們可以說,這些方向幾乎涵蓋了“每個可能的方向”。如果我們想要模擬光子和微觀結(jié)構(gòu)之間的相互作用,我們就會以隨機(jī)方向發(fā)射光線,統(tǒng)計學(xué)上來說,這與它們被反射到每個可能的方向相同。

有時,材料在宏觀層面上的結(jié)構(gòu)會以特定的方向反射光線,這被描述為各向異性反射,并將在光材料相互作用課程中詳細(xì)解釋。材料的宏觀結(jié)構(gòu)也會導(dǎo)致不尋常的視覺效果,例如我們可以在蝴蝶的翅膀上觀察到的虹彩效應(yīng)。

f2e3f0dc-882d-11ef-bb4b-92fbcf53809c.png

現(xiàn)在我們可以從計算機(jī)圖形學(xué)的角度來看待這種情況。首先,我們用由像素組成的圖像平面代替我們的眼睛。在這種情況下,發(fā)射的光子將會撞擊圖像平面上的像素之一,將該點的亮度增加到大于零的值。這個過程會重復(fù)多次,直到所有像素都被調(diào)整,創(chuàng)建出一個計算機(jī)生成的圖像。這種技術(shù)被稱為「正向光線追蹤」,因為我們從光源到觀察者追蹤光子的路徑。

然而,你看到這種方法存在潛在問題嗎?

問題如下:在我們的示例中,我們假設(shè)反射光子總是與眼睛表面相交。實際上,光線會以每個可能的方向反射,每個方向都有非常非常小的可能性擊中眼睛。我們需要從光源投射無數(shù)光子,才能找到只有一個光子會擊中眼睛的情況。這就是自然界中的工作方式,因為無數(shù)的光子以光速沿著所有方向傳播。在計算機(jī)世界中,模擬許多光子與場景中的物體相互作用不是一個實際的解決方案,原因我們將在接下來的解釋中說明。

你可能會想:“我們需要隨機(jī)發(fā)送光子嗎?既然我們知道眼睛的位置,為什么不只是將光子沿著那個方向發(fā)送,并查看它是否通過了圖像中的像素?”這是一種可能的優(yōu)化。但是,我們只能針對某些類型的材料使用這種方法。在后面關(guān)于光與物質(zhì)相互作用的課程中,我們將解釋方向性對于漫反射表面并不重要。這是因為擊中漫反射表面的光子可以在以接觸點處法線為中心的半球內(nèi)的任何方向上反射。但是,假設(shè)表面是一面鏡子并且沒有漫反射特性。在這種情況下,光線只能反射成一個確切的方向,即鏡像方向(我們稍后將學(xué)習(xí)如何計算)。對于這種類型的表面,如果光子應(yīng)該遵循鏡像方向,我們不能人為地改變光子的方向,這意味著這種解決方案可能更令人滿意。

眼睛只是一個點接收器,還是有一個表面積?即使接收面非常小,它仍然具有面積,因此比一個點更大。如果接收面積大于一個點,則表面肯定會接收到不止一個光線中的 1 個。

讀者是正確的。眼睛不是點接收器,而是表面接收器,就像相機(jī)中的膠片或 CCD 一樣。因為這個課程只是光線追蹤算法的介紹,所以這個主題需要詳細(xì)解釋。相機(jī)和人眼都有一個透鏡,將反射的光線聚焦在其后面的表面上。如果透鏡的半徑非常?。ㄟ@在技術(shù)上不是這種情況),則從物體反射的光只能來自一個方向。這就是針孔相機(jī)的工作原理。我們將在相機(jī)課程中討論它們。

即使我們決定使用這種方法,只使用由漫反射物體組成的場景,我們?nèi)匀恍枰獛椭?。我們可以將從光源向場景中投射光子的過程可視化,就好像我們在物體表面噴灑光線(或小顆粒的顏料)。如果噴霧不夠密集,則某些區(qū)域?qū)o法均勻照亮。

想象一下試圖用白色記號筆在黑色紙張上制作點來繪制茶壺(將每個點視為光子)。如下圖所示,只有少數(shù)光子與茶壺物體相交,留下許多未覆蓋的區(qū)域。隨著點數(shù)的增加,光子的密度增加,直到茶壺“幾乎”完全被光子覆蓋,使物體更容易識別。

f30c97d0-882d-11ef-bb4b-92fbcf53809c.gif

但是,即使發(fā)射 1000 個光子,甚至是 X 倍以上,也不能保證我們的物體表面被光子覆蓋。這是這種技術(shù)的一個重大缺點。換句話說,我們必須讓程序運行,直到我們決定它已經(jīng)向物體表面噴灑足夠的光子才能得到準(zhǔn)確的表示。這意味著我們必須觀察圖像在被渲染時決定何時停止應(yīng)用程序。在生產(chǎn)環(huán)境中,這是不可能的。正如我們將看到的,光線跟蹤器中最昂貴的任務(wù)是找到光線和幾何體的交點。從光源創(chuàng)建許多光子不是問題,但在場景中找到它們的所有會議將是難以承受的昂貴的。

結(jié)論:「正向光線跟蹤」(或因為我們從光源發(fā)射光線而稱為「光線跟蹤」)使得在計算機(jī)上模擬光線如何在自然中傳播成為技術(shù)上可能。然而,如上所述,這種方法可能更有效和實用。在 1980 年發(fā)表的一篇名為“用于陰影顯示的改進(jìn)照明模型”的開創(chuàng)性論文中,圖形學(xué)早期研究者之一的 Turner Whitted 寫道:

“在一種明顯的光線跟蹤方法中,從光源發(fā)出的光線沿其路徑追蹤,直到它們擊中觀察者。由于只有少數(shù)光線會到達(dá)觀察者,因此這種方法可能更好。在 Appel 提出的第二種方法中,光線沿相反的方向從觀察者到場景中的物體追蹤?!?/p>

現(xiàn)在,我們將看看 Whitted 談到的另一種模式。


反向追蹤

f3320eb6-882d-11ef-bb4b-92fbcf53809c.gif

圖2:反向光線跟蹤。我們從眼睛到球體上的一個點跟蹤一條光線,然后從該點到光源跟蹤一條光線。

我們不是從光源到接收器(如我們的眼睛)追蹤光線,而是從接收器到物體反向追蹤光線。因為這個方向與自然界中的光線傳播方向相反,所以被稱為「反向光線追蹤」或「眼睛追蹤」,因為我們從眼睛的位置射出光線(圖 2)。這種方法提供了一種方便的解決方案,以彌補前向光線追蹤的缺陷。由于我們的模擬不能像自然界一樣快速和完美,因此我們必須妥協(xié),從眼睛射入場景中的光線。如果光線擊中一個物體,我們通過從擊中點向場景中的光源投射另一條光線(稱為光線或陰影光線)來確定它接收到多少光。偶爾,這個“光線”會被場景中的另一個物體遮擋,這意味著我們最初的擊中點在陰影中,它不會從光源接收任何照明。因此,我們不將這些光線稱為光線,而是稱為「陰影光線」。在 CG 文獻(xiàn)中,我們從眼睛(或相機(jī))射入場景中的第一條光線稱為「主光線」、「可見性光線」「相機(jī)光線」

在本課程中,我們使用前向追蹤來描述從光源發(fā)射光線的情況,與反向追蹤相反,其中從相機(jī)射出光線。然而,一些作者使用相反的術(shù)語。前向追蹤意味著從相機(jī)射出光線,因為它是 CG 中最常用的路徑追蹤技術(shù)。為避免混淆,你也可以使用更明確的術(shù)語光線追蹤和眼睛追蹤。這些術(shù)語更常用于雙向路徑追蹤的上下文中(請參見光傳輸部分)。


結(jié)論

在計算機(jī)圖形學(xué)中,從光源或從眼睛射出光線的概念被稱為「路徑追蹤」。也可以使用光線追蹤這個術(shù)語,但是路徑追蹤的概念表明,這種制作計算機(jī)生成圖像的方法依賴于從光源到相機(jī)(或相反)的路徑。通過以物理上真實的方式這樣做,我們可以輕松模擬光學(xué)效應(yīng),例如焦散或場景中另一個表面反射的光線(間接照明)。這些主題將在其他課程中討論。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 光源
    +關(guān)注

    關(guān)注

    3

    文章

    703

    瀏覽量

    67767
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4607

    瀏覽量

    92828
  • 光線追蹤
    +關(guān)注

    關(guān)注

    0

    文章

    183

    瀏覽量

    21473
收藏 人收藏

    評論

    相關(guān)推薦

    遞歸性質(zhì)和大數(shù)目追蹤光線解決方案

    算法的遞歸性質(zhì)和大數(shù)目的追蹤光線,渲染過程可能持續(xù)數(shù)小時。80-90%的渲染時間花費在計算光線和物體交點上。
    的頭像 發(fā)表于 04-13 09:10 ?6068次閱讀
    遞歸性質(zhì)和大數(shù)目<b class='flag-5'>追蹤</b><b class='flag-5'>光線</b>解決方案

    光線追蹤技術(shù)學(xué)習(xí)資料

    資料是Peter Shirley的一周學(xué)會光線追蹤技術(shù)。資料為英文版.光線最終其實已經(jīng)不是什么新鮮技術(shù)了,但是最近隨著英偉達(dá)最新的顯卡加入了Ray Tracing技術(shù)又被人們開始提及起來,對于該圖像技術(shù)又有什么值得稱道的呢?趕緊
    發(fā)表于 10-12 16:36

    光線追蹤技術(shù)的作用

    其實對于產(chǎn)品設(shè)計師而言,光線追蹤技術(shù)并不陌生。簡單的說,是自三維(3D)圖形誕生以來圖形技術(shù)領(lǐng)域最重要的進(jìn)步之一,而且它即將從高深的電影和廣告領(lǐng)域轉(zhuǎn)向移動、可穿戴和汽車等嵌入式領(lǐng)域,作為全新的、更有
    發(fā)表于 11-02 08:21

    Imagination的光線追蹤等級系統(tǒng)介紹

    Imagination的光線追蹤等級系統(tǒng)
    發(fā)表于 12-21 06:02

    光線追蹤技術(shù)介紹

    光線追蹤:一種顛覆性技術(shù)
    發(fā)表于 01-22 07:19

    硬件光線追蹤的優(yōu)勢有哪些

    硬件光線追蹤的優(yōu)勢光線追蹤面臨的關(guān)鍵挑戰(zhàn)
    發(fā)表于 01-28 07:19

    光線追蹤等級系統(tǒng)的介紹

    我們?yōu)槭裁匆l(fā)布光線追蹤等級系統(tǒng)?它對游戲意味著什么?
    發(fā)表于 01-29 07:41

    如何看待光線追蹤

    光線追蹤我們實際應(yīng)用中經(jīng)常用嗎,他到底是一項什么技術(shù)?
    發(fā)表于 03-07 08:36

    什么是光線追蹤?

    什么是光線追蹤?
    發(fā)表于 05-28 06:38

    怎樣實現(xiàn)光線追蹤

    怎樣實現(xiàn)光線追蹤?怎么使光線追蹤生效?
    發(fā)表于 05-31 06:51

    硬件光線追蹤的優(yōu)勢有哪些?

    光線追蹤面臨的關(guān)鍵挑戰(zhàn)是什么?硬件光線追蹤的優(yōu)勢有哪些?
    發(fā)表于 05-31 06:53

    光線追蹤算法匯總

    在基本光線追蹤算法中,只追蹤有限數(shù)目的光線。
    的頭像 發(fā)表于 05-11 15:58 ?1.7w次閱讀
    <b class='flag-5'>光線</b><b class='flag-5'>追蹤</b><b class='flag-5'>算法</b>匯總

    光線追蹤技術(shù)最近又成為了行業(yè)的焦點

    計算機(jī)中的光線追蹤或者更精確的路徑追蹤過程與真實世界中的光線傳播方式是相反的。光線實際上是從相機(jī)的某個視角照射到場景內(nèi)的物體上,然后
    的頭像 發(fā)表于 10-24 16:01 ?3933次閱讀

    NVIDIA OptiX光線追蹤引擎的功能特性

    NVIDIA OptiX 光線追蹤引擎用于在 GPU 上實現(xiàn)出色光線追蹤性能的應(yīng)用框架,提供簡單、遞歸式的靈活工作流,用于加速光線
    的頭像 發(fā)表于 09-14 09:37 ?2707次閱讀

    基于光線追蹤的渲染算法實現(xiàn)

    我們已經(jīng)涵蓋了所有需要說的內(nèi)容!我們現(xiàn)在準(zhǔn)備寫我們的第一個光線追蹤器。你現(xiàn)在應(yīng)該能夠猜到光線追蹤算法是如何工作的了。首先,注意到自然界中光的
    的頭像 發(fā)表于 10-30 08:06 ?243次閱讀
    基于<b class='flag-5'>光線</b><b class='flag-5'>追蹤</b>的渲染<b class='flag-5'>算法</b>實現(xiàn)
    RM新时代网站-首页