跳轉到內容

計算機圖形學/寫實感/你的眼睛看到的

來自Wikibooks,開放書籍,開放世界

簡單來說,你的眼睛看到的是光。也就是說,你的眼睛為了在大腦中構建影像而接收到的關於世界的唯一資訊是光子,這些光子從你周圍的物體上反射出來,進入你的眼睛。因此,構建寫實影像(幾乎)完全是關於模擬光照的。當沒有光時,就沒有光子與你的眼睛相互作用,因此很明顯,你什麼也看不到。

在日常生活中,我們周圍到處都有光源提供光線,從我們家裡的燈或街道上的燈,到白天太陽和晚上月亮(或者可能只是星星)。每個光源都有我們熟悉的特性;例如,太陽比我們經歷的大多數其他光源都要亮得多,並且具有特定顏色的光(白色),並且在一天的不同時間佔據天空中的某個位置,等等。

光源以天文速度發射光子(我們的眼睛接收它們);數量如此之大,以至於很難將其與我們日常經驗中的數字聯絡起來。光源發出的每個光子都將永遠沿直線傳播,直到它與某些物質相互作用(事實上,當你仰望夜空中的星星時進入你眼睛的光子,與數百萬年前離開恆星並穿越宇宙進入你眼睛的光子是相同的)。當光子確實與物質相互作用時,可能會發生幾件事。

在最簡單的情況下,光子撞擊物質並反射出去。在這種情況下,光子通常會攜帶它撞擊的物體顏色的資訊,並繼續沿反射方向傳播。顏色的具體細節可能取決於環境。例如,如果白光從棕色桌子上反射出來,到達你眼睛的光子將攜帶關於桌子棕色顏色的資訊,而不是白光。如果紅光從白色桌子上反射出來,它可能會攜帶一些關於光源原始顏色的資訊,並以紅色陰影到達你的眼睛。

然而,光子並不總是反射出去。光子與物質相互作用時會做什麼取決於物質的許多光學特性。例如,表面可以具有不同程度的反射率鏡面反射率不透明度和表面光滑度(以及其他)。撞擊高反射表面的光子更有可能沿可預測的方向反射(你從一定角度看鏡子時所期望的方向),但如果它們撞擊非反射表面,它們更有可能散射到各個方向,或者只是被吸收,從而光子不會從表面繼續傳播。類似地,撞擊特別透明表面的光子可能不會反彈,而是繼續前進,可能被偏轉到稍微不同的方向(這種原始方向的變化稱為折射,例如,當你將鋼筆插入一杯水中時看到的扭曲現象)。

你可能會看看你所在的房間,它有所有精細的表面、許多錯綜複雜的物體和無數的光源,並想象所有光子在房間裡四處飛舞,從物體上彈開,穿過物體,或者被吸收,或者可能從物體上彈開多次,所有這些都在最終到達你的眼睛之前。你大腦處理的最終影像是由大量光子構建的,所有這些光子在從光源到你的眼睛的旅程中都可能走過複雜的路徑。

問題變得很明顯。我們無法希望,即使在許多年後的未來計算機中,也希望將所有這些光相互作用模擬為單個光子離開光源並在場景中四處飛舞,然後再進入我們的虛擬相機鏡頭。相反,我們必須找到更易於計算的方法來近似我們上面描述的情況。最明顯的技術稱為光線追蹤。

華夏公益教科書