簡單地說,電腦圖學的主要研究內容就是研究如何在電腦中表示圖形、以及利用電腦進行圖形的計算、處理和顯示的相關原理與演算法。然而圖學領域研究的分支有許多種。本篇我們將介紹 Rendering 的部分。
在 Rendering 的領域中,我們分成 Photo realistic rendering 及 Realtime rendering。
這裡我們先介紹 Photo realistic rendering。
Photo realistic rendering 發展的技術,就是希望渲染出與人眼看起來擬真的畫面,這樣的技術其實已經發展很久了,也離我們很近,我們經常看到的3D動畫像是,皮克斯 ,迪士尼 或者電影 都有用到相關的技術。
在真實世界中我們眼睛所看見的畫面,都是因為光照在我們的視網膜成像的結果。而這樣的現象,用物理的角度來解釋,就是光從光源打到物體產生反射或是折射在經過我們的水晶體折射到視網膜上。而場景中不同的光源配置,光行徑中的強度衰減,以及物質的材質,造就了我們看見的明暗變化。其實這就是 Ray Tracing 大概的概念。
但實際上跟我們物理直覺上相反,Ray tracing 是從眼睛打出光線來逆推光源的強度。
之所以從眼睛逆推的原因是,以光源在一個三維空間而言,實際上直接打到眼睛的可能不多,因此如果我們透過光去找到哪些是有打到眼睛的,效率是非常低的。雖然圖片上我們以一條射線來作為例子。但實際上,光是往四面八方發出光線的,同理打到物體上的光也可能是來自空間中每一個光源中某些光線的總和,而這些光在進入我們的眼睛。這些光又分為直接光照與間接光照。這裡就衍生出了一個問題,既然光源稀疏分布在場景,打到物體的光線也來自四面八方,我們怎麼知道這些光是來自甚麼地方呢? 於是Sampling(取樣)的應用就出現了,像是 Monte carlo ray tracing…。透過這些取樣的方法,我們能夠估計出非間接光照中,打到物體時的光線數,就能夠估計出成像時光的強度。雖然Ray tracing 能夠讓我們得到擬真的畫面,代價卻是高昂的計算時間。在過去硬體比較不發達的時代,這樣的計算相當耗費時間,因此也就有了Realtime rendering 的技術發展。
Ray tracing 概念我們就先介紹到這裡往後會在做專門介紹。
[1] https://cs.stanford.edu/people/eroberts/courses/soco/projects/1997-98/ray-tracing/types.html
[2] James T. Kajiya. 1986. The rendering equation. SIGGRAPH Comput. Graph. 20, 4 (Aug. 1986), 143–150. DOI:https://doi.org/10.1145/15886.15902
Computer Graphics
Rendering