第一章 緒論
1.3 章節安排
在本論文中,第一章為緒論,敘述研究的動機、範圍以及目的。第二 章相關研究將對預先計算輻射轉換以及視點相依多層次精細度作介紹。第 三章將對本論文所提出節省前置計算時間、儲存空間,以及提升即時顯像 效率的方法作詳盡的描述。第四章為實驗的結果討論。第五章為研究的總 結。
第二章
背景知識與相關研究
本章將介紹一些與本論文相關的背景知識以及其它相關研究。2.1 節將 會簡單介紹關於顯像的基本知識;2.2 節會針對預先計算輻射轉換進行完整 的說明;最後 2.3 節則講解多層次精細度模型簡化的相關研究。
2.1 顯像方程式背景知識
預先計算輻射轉換的主要目的是縮短即時顯像系統中的顯像方程式計 算時間,因此在介紹預先計算輻射轉換之前,先針對顯像有關的符號與背 景知識作概略性的介紹。
2.1.1 球座標與立體角
要表示一個點在三維空間中的位置,我們使用笛卡兒座標(Cartesian coordinates),也就是(x,y,z)的形式來表示。而如果要單純表示空間中的某 個方向,我們會以球座標(spherical coordinates)系統來表示。如圖 1 所示,
ω代表單位圓表面上的一個點,從球心到ω則形成一個向量。這個向量與 Z 軸之間的夾角為θ,而將ω垂直投射到 XY 平面上之後,投射點與球心之間 又形成另外一個向量,這個向量與 X 軸之間的夾角為φ。因此我們可以用
) ,
(θ φ 來表示球心到ω點的方向。
圖 1 球座標系統 角(solid angle)的大小。
由於立體角是用來描述三維空間中的角度大小,我們可以用微分立體 角(differential solid angle)來同時描述方向以及單位球表面上的極微小區 域。假設已知空間中一點 P 與一個微分面積dA,r是兩者之間的距離,θ代
2.1.2 輻射能測量
的光子所構成的光譜輻射能量(spectral radiant energy)Qλ為:λ 輻射通量定義為輻射量(radiance):
ω
雙向反射分布函數(bidirectional reflectance distribution functions, BRDF) 是一種用來描述物體表面反射特性的函數,通常以ρ表示,其定義為自表面
出射的輻射量與射入表面的照度之比值[DBB03]: 色,Cook 與 Torrance[CT82]以半角(half angle)改善鏡射反光的計算。為 了讓顯像的結果更接近真實世界的物體材質,Ward[Ward92]以儀器量測 首先提出顯像方程式觀念,並將其描述成以下形式[Kajia86]:
∫
Ω 在場景中傳遞,Goral 等人[GTG+84]將場景分成多塊補片(patch),計補 片之間輻射傳遞的平衡狀態。然而這些方法都必須要花上漫長的時間進行 計算,無法在即時顯像應用程式中使用。為了能在即時顯像應用程式中呈 現出具有類似品質的影像,Sloan 等人[SKS02]提出了預先計算輻射轉換技術試圖解決這個問題。下一節將介紹預先計算輻射轉換的背景知識與相 關研究。
2.2 預先計算輻射轉換
Sloan 等人在 2002 年提出了預先計算輻射轉換的架構,其中使用了球 諧函數(spherical harmonics)來完整系統的運作機制[SKS02]。因此在本節 分別就球諧函數的數學性質,以及其他相關的研究。
2.2.1 球諧函數
球諧函數是一個適用於球域上的規格化正交基底(orthonormal basis),
最早是被用在量子化學的研究上[Edmonds60]。所謂的基底函數(basis function)代表了原始函數的一個小片段的訊號,若將多個不同的基底函數作 多的基底函數中,有一種被稱為正交多項式(orthogonal polynomials)的基底 函數,具有一個相當有趣的性質,這個性質對於預先計算輻射轉換有相當 式(associated Legendre polynomials),其定義域被限制在[-1,1]的範圍之
內,傳統上以P來表示此多項式,此外尚有l與m兩個參數,根據不同的l值 用來將整個函數值正規化(normalization)的因數:
|)!
即可還原成原始的函數。這個求係數步驟被稱為投射(projection)[SKS02], 給定一個函數 f ,投射的方程式如下:
我們可以用下列方程式還原函數~f
2002 年 Sloan[SKS02]等人提出預先計算輻射轉換的基本概念,針對 一散射表面 x 而言,我們能將顯像方程式(方程式(4))改寫為:
∫
同一年 Kautz 等人[KSS02]提出一種考量各種形式的雙向反射分布函 數的改良法。在不考慮能見度函數的情況下,並將cosθ 併入雙向反射分布
2003 年 Sloan 等人[SHH+03]提出以叢集主成分分析(clustered principle component analysis, CPCA)技術,將球諧係數叢集並進行資料量的壓縮。同 一年,Sloan 等人[SLS+03]提出輻射轉換材質(radiance transfer texture, RTT) 的概念,將微觀之下因材質的凹凸不平的起伏所造成的光影效果,結合至 預先計算輻射轉換技術之中。
先前的這些方法,光源環境皆考慮來自遠方的環境光源。2005 年 Kristensen 等人[KAJ05]試圖將光源放入場景之中,為了得知近端點光源 對場景光影效果的影響,在前置計算時,於場景之中放入點光源的樣本,
對每個點光源樣本而言,計算所有場景頂點的顯像方程式,並且將整個顯 像方程式進行球諧投射:
∫
Ω= L x s y s ds lijx oj( , ) i( )
這一點與 Slone 等人的架構有顯著的不同,因此在系統執行階段,只需要 將頂點的球諧係數進行還原,即可得出在點光源之下的頂點顯像方程式。
2.3 多層次精細度
多層次精細度是一種將原始模型化簡,產生多種精細程度的模型,根 據不同的系統需求,顯示出合適的精細程度模型,以減少系統的計算負荷。
根據多層次的表現方式不同,可分為離散多層次精細度(Discrete Level- of-Derails)與連續多層次精細度(Continuous Level-of-Derails)兩類。離散多 層次精細度將原始模型透過若干互無關係的精細度來代表,而連續多層次 精細度則是將原始模型透過一基礎模型(base mesh)與一連串的精細化方式 來表示,以達到連續的模型簡化效果。而根據使用的方式,多層次精細度 又可分為視點相依(View-dependent)與視點無關(view- independent)兩類。
2.3.1 漸進式網格模型(Progressive Meshes)
Hoppe 所提出漸進式網格模型(progressive meshes, PM)是最廣為使用 的一種連續多層次精細度方式[Hoppe96]。其觀念為將模型轉換為最粗糙 的基礎模型(base mesh)與一連串頂點分裂(vertex split)的步驟,以達到任意 精細度之目標。
以圖 2 為例子,由左圖到右圖的過程之中,左圖的vt與vs合併為右圖的 vs,邊線vtvs消失,鄰近頂點則都與新的vs相連,我們稱這個步驟為邊線摺 疊(edge collapse)。反之,從右圖到左圖的過程之中,vt再度產生,vs回到 原本的位置上,vtvs亦再度出現,原本與vt相連的頂點都恢復連線,我們稱
這個過程為頂點分裂。
漸進式網格模型的建立方式便是從最精細的模型開始,透過量測任何 一邊線進行邊線摺疊前後所造成的誤差來排序,逐一挑選誤差最小之邊線 進行邊線摺疊,直到無法簡化為止,此即為基礎模型。因此在系統執行階 段,我們可以從基礎模型開始,依照頂點分裂的步驟逐一還原,直到所須 要之精細度為止。
圖 2 邊線摺疊與頂點分裂[Hoppe96]
欲量測邊線摺疊前後所造成的誤差,Hoppe 所使用的方式是透過量測與 幾何變化相關的「能量」總合[Hoppe96]。Garland 與 Heckbert 透過計算摺 疊後頂點到平面距離平方和的二次方誤差評量(quadric error metric, QEM)
[GH97]。Cohen 等人使用量測貼圖對外觀影響的外觀保持式化簡法 (appearance preserving simplification, APS)[COM98]。Lindstom 等人提出 量測化簡前後影像之均方根(root-mean-square)的影像導向式化簡法(image- driven simplification, IDS)[LT00]。
2.3.2 視點相依之多層次精細度(View-Dependent Level-of-Details)
由於漸進式網格模型(Progressive Meshes)屬於視點無關之方式,因此無 論視點為何所產生的簡化模型都是同一份。由於模型表面對不同視點觀察 時有不同的重要性,如背向視點的面無法被看見,因此可以盡量簡化,而 為於輪廓線上的邊要盡量保留以降低與原始幾何的差異。視點相依之多層 次精細度(view-dependent level-of-details)即是為了達到此一目標[XV96]
[Hoppe97][LE97]。其觀念為將連續的多層次精細度模型上的簡化與精細 順序依據其相依性關係建立成一樹狀結構,稱為頂點階層(vertex
hierarchy)。
圖 3 頂點階層式意圖
以 Hoppe 所使用的提出頂點階層(vertex hierarchy)為例[Hoppe97],由 於其使用邊線摺疊為模型簡化的單元,因此其頂點階層上的每個節點為簡 化過程所產生的頂點資料,而其子節點為頂點經過一次頂點分裂後所產生 的兩新頂點,由此關係可得到數個二元樹(binary tree)架構,其中所有二元 數的根節點(root node)所形成的集合代表基礎模型(base mesh),而其所有 葉節點(leaf nodes)所形成的集合代表原始幾何。而在該二元數架構上任意 裁切出一切線即為一合理的簡化階段。如圖 3 所示,v1 v2 v3所形成的集合 表示基礎模型,而頂點v5的兩個子節點v6 v7分別表示由v5分裂之後所產生 的新頂點。而其中虛線所成的集合表示原始幾何。
在其他的應用上,Lindstrom 等人量測地表化簡後的幾何誤差,選擇化 簡部位與化簡程度[LKR+96]。Hoppe 將地表(terrain)模型分成數塊,以遞 迴方式簡化各區塊之後加以合併,以實作應用於地表的視點相依多層次精 細度[Hoppe98]。Xia 等人利用法向量錐判斷顯像結果,引導精細化過程
[XEV97]。
第三章
以頂點階層為基礎的預先計算輻射轉換
3.1 系統架構綱要
我們的目標是建立一個可動態改變點光源之基於預先計算區域幅射轉 換(pre-computed local radiance transfer)的顯像系統。要達到可動態移動點光 源之目的,我們首先必須對場景光源進行均勻(uniform)的取樣,並針對每 個樣本光源計算其對場景產生的預先計算區域幅射轉換係數。
為了加速光源取樣以及減少預先計算區域幅射轉換係數的資料量,我 們將原始模型以頂點階層(vertex hierarchy)[Hoppe97]的方式表示。對每 一個樣本光源,我們根據該點光源對場景幾何產生的光影變化決定出一條 在頂點階層上的裁切線(cut or vertex front),並只對保留在裁切線上的頂點 計算預先計算區域幅射轉換係數。
在系統執行階段,針對每一個場景點光源,我們可以經由其位置與樣 本光源之關係內插出該光源的預先計算區域幅射轉換係數值。接著根據視 點位置所產生的光影與幾何變化可以決定一條裁切線來代表原始模型。由 於該裁切線不一定會與計算樣本光源時所用的裁切線一樣,某些頂點可能 會缺乏對應的係數,因此我們必須從其他已經具有係數的頂點來內插出係 數。當所有裁切線上的頂點都得到係數值後,我們便根據該係數來進行預 先計算幅射轉換的顯像。圖 4 說明本系統的執行流程,其中虛線以上的部
在系統執行階段,針對每一個場景點光源,我們可以經由其位置與樣 本光源之關係內插出該光源的預先計算區域幅射轉換係數值。接著根據視 點位置所產生的光影與幾何變化可以決定一條裁切線來代表原始模型。由 於該裁切線不一定會與計算樣本光源時所用的裁切線一樣,某些頂點可能 會缺乏對應的係數,因此我們必須從其他已經具有係數的頂點來內插出係 數。當所有裁切線上的頂點都得到係數值後,我們便根據該係數來進行預 先計算幅射轉換的顯像。圖 4 說明本系統的執行流程,其中虛線以上的部