折射效果之加速計算與風格化應用

全文

(1)

科技部補助專題研究計畫成果報告

期末報告

折射效果之加速計算與風格化應用

計 畫 類 別 : 個別型計畫 計 畫 編 號 : MOST 102-2221-E-004-008- 執 行 期 間 : 102 年 08 月 01 日至 103 年 10 月 17 日 執 行 單 位 : 國立政治大學資訊科學系 計 畫 主 持 人 : 紀明德 計畫參與人員: 碩士班研究生-兼任助理人員:劉維晉 碩士班研究生-兼任助理人員:李亞憲 博士班研究生-兼任助理人員:胡臻騏 處 理 方 式 : 1.公開資訊:本計畫可公開查詢 2.「本研究」是否已有嚴重損及公共利益之發現:否 3.「本報告」是否建議提供政府單位施政參考:否

中 華 民 國 103 年 12 月 25 日

(2)

中 文 摘 要 : 光線的折射和全內反射是透明物體中重要的光學現象,可用 於玻璃藝術。本研究利用 depth-peeling 的技術將一個三維 幾何網格物體拆解成四層深度與法向量貼圖,提出改良的 relief mapping 使用的光線相交演算法解決層與層之間的斷 層問題,在影像空間中計算至多四次折射和全內反射,最後 對計算出的折射向量配合環境貼圖取得對應的折射效果。以 上的單一物體四次折射架構,可延伸至多物體的場景,進行 多物體四次折射計算。本研究改良傳統 image-space 兩次折 射的方法,可以處理更複雜物體與場景,並嘗試與 GPU 加速 的光跡追蹤軟體(OptiX)與不同場景進行比較,驗證其演算法 效率與品質。 中文關鍵詞: 折射、電腦繪圖、GPU 計算、風格化電腦繪圖技術

英 文 摘 要 : In photorealistic rendering, refraction is a vital optical phenomenon for transparent objects. This study proposes an image-space method for real-time multiple refraction. First, a depth-peeling technique is used to disassemble a 3D polygonal model into four layers of normal and depth textures. Next, a modified ray-height-field intersection algorithm is employed to resolve discontinuities between the layers and compute the intersection, refraction, and total

internal reflection. Finally, an environment map with a refraction vector is used to compute the final shading. The image space and shader technique enables generating a maximum of four bounces to increase the refraction detail and handle more complex scenes compared with those examined in previous methods. We performed several experiments involving various scenes and the results showed the feasibility and quality of the proposed multi-refraction method. The efficiency of the proposed method was demonstrated by comparing it with GPU-based ray tracing (OptiX). 英文關鍵詞: refraction, image-space technology, shader, graphical

(3)

1. 緒論

在 3D 圖學中,光線的折射和全內反射,可以增加模擬透明物體的真實感。ray-tracing 技 術可以呈現透明物體的折射繪圖,但是由於計算量非常龐大,要能夠即時顯示有一定的困難度, 所以我們不使用 ray-tracing 這類 object space 的技術,改採用 image-space 的技術,目的在 於充分利用 GPU 的平行運算的特性,以達到即時顯示的效果。這種效果在遊戲以及特效中很重要, 可以讓透明物體的光影表現在遊戲世界中更接近現實感。 本研究以 3D 多邊型模型作為輸入,如此可以利用到現存豐富多樣的模型來產生折射的繪圖 效果。將遠方場景以環境貼圖的方式儲存,由折射後的向量來得到對應到環境貼圖的顏色,合併 出物體的像素,最簡單的方式就是 Wyman 提出來的一系列以兩層深度影像的方法[Wyman 2005, 2007],但當 3D 模型太複雜時,造成多次折射的現象因為只有兩層表面而估計錯誤,所以我們以 depth peeling 作法去改進。 因為效率上的考量,光跡追蹤法由於遞回的計算量過於龐大,而不容易即時實現。而過去運 用 image-space 的折射技術的論文中[Wyman 2005, 2007],當 3D 模型越複雜與 ray tracing 所 render 出來的結果就越不相似,主要原因在於前面的方法只考慮了兩層的深度,也因此無法將 整個物體形狀紀錄下來,而沒紀錄到的部分往往就無法正確的計算折射向量。此外原本在 object space 連續的表面會拆開在不同的深度影像形成不連續的斷層,因此有些折射向量在計 算時會被這些斷層誤導,導致沒有辦法確實的計算,因此我們實作出四層深度影像的方法,繪製 出近似 ray tracing 的 3D 透明折射效果。此方法可分成四部分,1.depth peeling 的分層。2. 深度圖斷層的處理。3.層與層之間的折射。4.全內反射的處理。完成單一個 3D 物體的折射計算 後,這個方法可延伸到多個 3D 物體的折射運算,利用將多個物體分層並且合併來計算出折射貼 圖,對排序過的物體依序處理折射的方法,並且利用貼圖傳送物體的資訊給下一個物體,藉以處 理多個折射物體的場景。 在本研究當中,我們實作了多層折射的演算法,其所產生的透明折射效果近似 ray tracing 的 render 結果並且能夠即時的運行。本研究的貢獻主要可以分為以下兩大部分:  將複雜的透明幾何物體以 depth peeling 分解為多張深度影像,在影像空間中計算至多四次 折射和全內反射,最後對計算出的折射向量配合環境貼圖取得對應的折射效果。  將多個透明幾何物體,在排序之後,運用貼圖傳遞法向量與深度資訊,延伸單一物體四次折 射架構,進行多物體四次折射計算。 在第二節中,我們將會介紹與本研究相關的研究背景知識,從真實世界光學的物理現象到光 跡追蹤的演算法,以及對光學的分析,此外也介紹我們主要參考的技術:depth peeling 和 relief mapping 演算法。在第三節當中則是主要的研究方法與步驟,針對單一物體分層後的結 果,並考慮深度斷層的結果,此外我們也提出多個物體的折射算法。在第四節則是實驗結果的呈 現與分析比較討論。第五節是結論與未來研究。 2. 相關研究 在模擬折射之前,我們必須分析與觀察真實世界中的折射現象,在 2.1 節整理了折射光學物 理定律,並從折射分析的相關研究做為依據,論述我們方法的折射層數與次數。由於 GPU 以及 image space 的技術是促成即時運算的重要關鍵,在 2.2 節討論 image space 的相關研究與 depth peeling 技術來切割我們的模型。最後 2.3 節討論折射實作的相關論文。

(4)

2.1 折射與全反射 光的折射,指的是光從一種介質進入另一種具有不同折射率之介質所發生的情形,造成光的 波速變化,使光的移動方向改變。光在發生折射時入射角與折射角符合司乃耳定律(Snell law)。 此定律指出光從介質 1 進入另一不同折射率之介質 2 時,其入射角的正弦(θ)與其折射率(n) 之乘積會相等: 𝑛𝑛1sin(𝜃𝜃1) = 𝑛𝑛2sin (𝜃𝜃2)

全內反射(Total internal reflection)是一種光學現象。只會發生在當光線從光密介質 (較高折射率的介質)進入到光疏介質(較低折射率的介質)並且入射角大於臨界角時。因為沒 有折射(折射光線消失)而都是反射,故稱之為全內反射。例如鑽石會閃閃發光,也是因為多次 全內反射的結果。臨界角(Critical angle)即是發生全內反射時最小的入射角。入射角是從折 射界面的法線量度計算的。臨界角(𝜃𝜃𝑐𝑐)可從從以下公式得到: θc = arcsinnn2 1 其中𝑛𝑛2是較低密度介質的折射率,而𝑛𝑛1是較高密度介質的折射率。公式是以司乃耳定律所推導 出來的結果。當入射光線是準確的等於臨界角,折射光線會循折射界面的切線進行。以玻璃為例, 臨界角約為 41.5°。 Fig. 1. 全內反射:c 為臨界角,i 大於 c 因此造成全內反射 在了解物理的現象之後,考慮模型的複雜度與折射的次數,折射越多次之後的結果相對越不 明顯,Yasuhiro 在 2010 年分析光的強度 [Mukaigawa 2010],從中可以發現,光線經過四次的 作用之後其強度已經不明顯,其原因在於光線經過物體的折射反射與散射之後其能量會漸漸被物 體給吸收,此外 Aner 在 2008 年在 ACM TOG 發表中也提到四次光學作用是他們認為最佳的光學 效果[Ben-Artzi 2008]。

2.2 Image space technology

image space method 則是透過在 2D 影像上進行計算與資料的存取,相對於 object space method 在 3D 空間做計算,可以更有效率,但也需將原本的幾何資訊轉換到 image space,並設 計對應的演算法。Fabio 在 2005 年運用 3D 模型的高度場與法向量,以“光線與高度場相交”演 算 法 產 生 任 意 模 型 上 的 立 體 表 面 起 伏 的 光 影 細 節 [Policarpo 2005] , 相 對 於 傳 統 的 displacement mapping 的效能更好,且不需要改變幾何表面的資訊。我們的方法將改良光線與 高度場相交演算法,以達到多次折射的光學效果。

(5)

Depth peeling(深度剝離)是為了處理透明物體的繪製而發明的技術。depth peeling 是基 於 z-buffer 的深度資訊,先畫出最接近視野的深度資訊,每一層的深度是基於上一層繪製的深 度 值 基 礎 上 進 行 的 [Mamman,1989] 。 Everitt 在 2001 年 給 出 該 方 法 在 GPU 上 的 實 作 [Everitt,2001]。在這之後,該方法得到大量的應用。Baoquan Liu 和 Liyi Wei 在 2006 年提出 [Liu 2006],使用了 GPU 的 MRT(Multi render target)能力加速生成深度剝離圖層,比原始方 法提高了一倍左右的效率。而在 2008 年 nVidia SDK 给出了 dual depth peeling 的實現 [Bavoil,2008],也就是前後深度 peeling 的技術進而提升效率。

2.3 Refraction

Ray tracing(光線追蹤),在電腦圖學中則是指特殊的繪圖演算法,最早是 1968 年 Arthur Appel 所提出的 [Appel,1968],主要的概念是跟蹤從眼睛發出的光線,準確地計算光線反射與 折射軌跡以重現真實世界的光影效果,所以本研究以此方法作為結果的對照組。而近年 nVIDIA 發表了 OptiX。OptiX 是以 CUDA 的架構,繪製出以 GPU 運算的光線追踪的場景。由於 CUDA 以平 行架構處理光線追踪,因此有別於傳統的光線追踪的軟體實作,可以較快速的生成場景,因此本 研究的結果與 OptiX 所產生的折射結果作比較,可以發現我們的方法較為快速,並且畫質接近其 結果。

Wyman 在 2005 提出以 image space 方法產生折射的效果,實作在 GPU 上。此篇的方法比起 一般光跡追蹤的方法運算較容易且適合在 GPU 上實作,但是也有缺點:當第三次折射發生時,就 會產生問題,因為只記錄兩層表面上的法向量與高度場無法正確的顯示類似茶壺這種拓樸結構, 因此對於 3 次以上的折射會產生無法精確展示模型的問題。在[Wyman,2005a]之後,Wyman 緊接 著發表了[Wyman,2005b],用來解決前景透明物體後的幾何模型顯示的問題,因為原本的方法只 能讀取到背景環境貼圖的顏色,並無法知曉後面的幾何模型,因此 Wyman 將模型以貼圖的方式記 錄其顏色並以物體折射後的向量計算與貼圖的距離來得到模型的顏色。相較於[Wyman,2005], Oliveira 在 2007 提出[Oliveira 2007]是以 image space 所做出的折射效果,最大的貢獻是可變物 體的折射,主要的技術是運用了 relief mapping 的搜尋方式去尋找折射的交點,因此他修正 [Wyman,2005]估計上可能產生的錯誤。而 Rousiers 在 2011 提出[Rousiers 2011]則是更改傳統 的光跡追蹤方法,運用 BTDF 與 cone tracing 製造出即時的折射效果,另外表面也可以依照使用 者輸入的參數調整粗糙程度,變換不同的折射效果。 3. 研究方法 折射的計算取決於物體表面特定點的視點向量、法向量與折射率,因此我們首先需要運用 depth peeling 技術將幾何模型分層數張影像,得到計算折射所需要的法向量與深度影像,並用 環境貼圖建構 sky box,再實作兩層深度影像間的折射運算。並且以此方法為基礎,實作出多層 深度影像間的折射效果。並處理全內反射的效果。 我們先在 3.1 節分析幾何表面與分層,對折射模型有一定的理解後,我們以 3.2 節的程式架 構實作,3.3 節說明 GPU 加速與光線相交的算法,3.4 節則將模型拆解四層深度貼圖以利於正確 的多次折射,而拆解後遇到的斷層問題在 3.5 節提出了方法。解決單一模型之後,3.6 節則為多 個模型的折射運算。

(6)

3.1 折射模型的分析 在折射計算之前,我們必須先提出兩個問題,1. 折射次數與模型的關聯? 2.多少次的折射 會近似真實的效果? 在實作之前,我們觀察發現我們可以將場景分成多個或單一模型,而單一模型之下又可細分 為只需要兩層折射即可完成運算的簡單模型和至少需要四層以上的複雜模型,我們發現簡單模型 都為凸多面體,而複雜模型必為凹多面體(concave),以下證明凸多面體只會產生二次折射:凸多 面體不會產生內角大於 180 度的形狀,如Fig. 2 左為凹多面體的某一條 eye ray 的切面示意圖, 因此我們利用反證法證明凹多面體可能會產生多次折射,得證凸多面體必定只會產生二次折射。 Fig. 2 右為詳細的折射角度示意圖,K、L 為邊的延伸向量 N 為第二次折射向量交點的法向量,角 度 A 與 B 分別為第二次折射向量的內角與 K、L 的外角,當 B 角度大於 A 角度時,基於角度的定 理 R 與 L 只會相交一點且 R 與 K 必定相交,因此第二次折射向量必定會與 K 向量的平面相交而再 次進入模型中。 Fig. 2. 任意凹多邊形的折射路徑 經由以上推論之後,凸多面體的模型均可以運用[Manuel 2007]的方法來得到正確的折射向 量,然而凹多面體卻沒有辦法,而我們觀察發現凹多面體內角大於 180 度的地方往往也是 Depth peeling 所分割 layer 之處,因此我們採用了 Depth peeling 的技術來解決複雜模型的折射。

接著所產生的問題是:要切幾層才能表現出結果?,切太少層會失去許多的細節,切太多層又 會增加不必要的計算,在[Manmohan,2011]、[Yasuhiro,2010]、[Aner,2008]三篇論文中都對光 線的行進路徑進行了分析,我們發現經過四次折射之後的光線強度大都不太明顯,在本研究中我 們特別針對光的折射路徑進行分析,發現一般模型會產生兩次以上折射多半如甜甜圈模型的拓撲 結構,又或者如動物耳朵的形狀容易在側面的角度產生四次的折射,以玻璃(折射率=1.45)的甜 甜圈模型為例如 Fig. 3,可以很明顯看出後面的柱狀體,然而也有如中國龍模型這種模型需要到 六層或八層的折射但也因為太過複雜,隨這折射次數的增加結果也漸漸不明顯,因此如 Fig. 4 所 示在 OptiX render 的結果四層折射與六層折射結果非常接近,也因此本研究最後採用四層深度 影像進行最多四次折射的結果,相似真實折射現像,卻也不致於損失太多的細節。

(7)

Fig. 4. OptiX 中國龍模型四層(左)與六層(右)結果比較,圓圈為差異處 3.2 系統架構 本節為我們方法的系統架構,首先對輸入的幾何模型進行 Depth peeling 的分層與合併,得 到四層的法向量與深度,以此資料進行每層進行折射交點的計算,計算之後的結果以貼圖的方式 傳給下一個模型進行多個模型的折射。 Fig. 5. 單一物體折射系統架構 Fig. 6. 多物體折射系統架構 3.3 ray interception 演算法

為了在 image space 進行光線軌跡的運算,首先說明 Relief mapping 運用在折射中的方法: 在[Policarpo 2005]所提到的光線高度場相交演算法是 relief mapping 的核心演算法。而在 [Oliveira 2007]中提出了運用光線高度場相交演算法來搜尋兩次折射向量與物體的交點。首先, 以視點位置得出 frustum,以此 frustum 得出 Zmin,再以深度資訊得到 Zmax,作為之後查詢的 深度 range。

Fig. 7. Zmin 與 Zmax 求法摘自[Manuel 2007]

有了查詢的 range 之後,以 T1(第一次折射後之向量)正規化之向量為基底求得與 Zmin 和 Zmax 相交的 S, E 位置:

(8)

S = P1 + (Zmin −Zp1)( T1�/ T1�.z), E = P1 + (ZmaxZp1)( T1�/ T1�.z) 再用插值公式,找出 SE ��中的點,及運用 relief mapping 的搜尋方式更精確地找到 P2(如下 圖) Fig. 8. 搜尋 P2 的方法。摘自[Manuel 2007] 3.4 四層深度拆解

本研究採用了 2008 年 nVIDIA depth peeling 實作中由近到遠的剝離方法,主要概念就是對 於每一個 fragment 比較剝離後的深度貼圖的深度值與當前 fragment 的深度,當 fragment 深度 >=深度圖深度時即剝離,如 Fig. 9 (左),而比深度圖深度小的則保留做為下一層的剝離深度圖 如Fig. 9(右)。實作部份,我們在得到深度值得同時也記錄法向量的值,結果如 Fig. 10。

Fig. 9. depth peeling 示意圖(左) 甜甜圈模型為例的分層(右)

(a) (b)

Fig. 10. 環形模型 depth peeling 後的四層深度影像(a)與法向量影像(b),由左到右為 1~4 層 3.5 斷層處理

由 Fig. 10 我們可以看到分層之後每層影像皆有跟其他層有重疊的地方,因而當折射光線靠 近計算重疊處會產生判斷上的錯誤,因此必須進行斷層的處理。

(9)

3.5.1 斷層處理 擁有了四層的深度之後我們可以一、二層深度做光線相交算法再把結果與第三層做相交算法, 最後再做第四層,然而由於內部深度會因為 3D 物體的形狀而有斷層的產生,如Fig. 11 紅色的部 分即為甜甜圈模型在第二層深度產生斷層的地方。由於光線相交的演算法是以深度的大小來判斷 其交點,因此斷層的出現,會造成判斷上的錯誤。 (a) (b) Fig. 11. (a) 環形模型不產生斷層的角度 (b) 環形模型第二層深度產生斷層處 因此我們提出對於斷層深度處理的光線相交演算法,首先我們觀察發現,折射向量進入 3D model 後會被斷層所影響的情形有三種: 定義: 折射向量 T,光線相交算法線性搜尋每一個 step 的長度為 SIZE,如果搜尋到的深度 比深度貼圖深度還小者差值為+,反之為−。 Fig. 12. 物體紅色實線為產生斷層的深度,黑色虛線為物體的輪廓 Case1: 折射向量經過斷層的上方且不與之相交 此種情況下線性搜尋的前一個點與後一個點的深度雖然因為斷層而造成深度與深度貼圖的差 值有劇烈變化,但因為差值還是為+。因此繼續線性搜尋,如 Fig. 13。 (a) (b)

(10)

Case2: 折射向量經過斷層中間且不與之相交 此種情況下線性搜尋的前一個點的差值為+,後一個點的差值為-,因此線性搜尋判斷停止, 如 Fig. 14(a),接著進行二元搜尋,在搜尋時分別記錄最後一次搜尋到差值為+與-的深度,當二 元搜尋結束時比較最後一次搜尋到+與-的深度貼圖深度,兩者差值必定會大於 size 的值,如 Fig. 14(b)。 (a) (b) (c)

Fig. 14. case2 示意圖。(a) 3D model 產生的斷層,(b) T 為折射向量 (右)二元搜尋(c) 以

bunny 為例 Case3 折射向量經過斷層且與之相交 此種情況下線性搜尋的前一個點的差值為+後一個點的差值為-,因此線性搜尋判斷停止,如 Fig. 15(a),接著進行二元搜尋,在搜尋時分別記錄最後一次搜尋到差值為+與-的深度,當二元 搜尋結束時比較最後一次搜尋到+與-的深度貼圖深度,兩者差值在大部分的情況下小於 SIZE 的 值,如Fig. 15(b)。 (a) (b) (c)

Fig. 15. Case3 示意圖。 (a) 3D model 產生的斷層 (b) 二元搜尋,(c) 以 bunny 為例

分析 case2 與 case3 之差別處在於二元搜尋時 case2 會逼近斷層處,而 case3 則是交點處, 因此可以產生區別。Case3 二元搜尋後兩者差值在大部分的情況下會小於 SIZE 的值,也就是說, 會有特例的情況,如 Fig. 16,最後的深度圖差值大於 size,解決的方法就只有增加二元搜尋的 次數或者將 size 的值調整變小。

(11)

Fig. 16. case3 的特例 我們需要額外的 flag 來幫助我們判斷折射向量在斷層下的深度判斷,如Fig. 17。 Fig. 17. 若 case2 不與斷層相交則繼續線性搜尋 以上敘述的斷層是 model 與 model 之間所產生的,另外也有模型與背景產生的斷層,而這 種斷層在前兩層的計算並不會產生問題,因為前兩層的深度貼圖對於每一個 fragment 都可以找 到對應的值,但到了第三層,由於模型的某些部份只有到兩層的深度,而造成第三層的計算會產 生如 Fig. 18(左)之錯誤。以甜甜圈第四層為例子產生錯誤位置如 Fig. 18(右)所示,紫色圓圈圈 起來的部分就有可能因為斷層太短而造成判斷錯誤的情況。 Fig. 18. (左)甜甜圈的第四層的錯誤 (右)二層深度後的錯誤 3.5.2 深度合併 因為 Fig. 18 的錯誤,我們提出多層深度合併的方法來解決此問題,我們觀察到四層深度的 情況下第二層與第四層深度往往會有相連的地方,而第一層與第三層也一樣,如 Fig. 19 所示, 黑色數字表示層數,藍色向量為某一折射向量,我們發現若能把第四層深度以第二層合併並保留 第四層深度便可以解決Fig. 18 因為深度貼圖並未對應到交點的問題。

(12)

Fig. 19. 將深度相連的層合併(第一層與第三層)和(第二層與第四層) 合併方法以甜甜圈第四層為例,首先第四層深度減掉第二層深度得到 Fig. 20 的橘色線(差 值),接著以第二層深度加上之前所產生的差值,if(產生的深度差值為 1)則為第二層深度 else 第四層深度,最後結果取代原本的第四層深度。 Fig. 20. 合併第二層與第四層 3.6 全反射的計算 全反射是折射必須要進行判斷的現象,由於全反射的產生只會在光線由折射物質內要穿出折 射物質外時產生,因此我們只需要對第二層與的四層折射進行全反射的判斷。依照 GLSL 內建的 折射函數,當全反射發生的時候會回傳-1 的值,因此我們在做完一次光線的搜尋之後判斷是否 為全反射,若否則繼續下一層的搜尋,反之進行一次反射計算之後,以反射向量進行新的光線搜 尋。 然而以原本的光線搜尋演算法去計算的時候往往出現錯誤,如 Fig. 21 所產生的錯誤,主要 的原因在於經過上一層的光相交演算法之後,所尋到的交點並無落在交點的平面上而是近似的結 果,並且會超出一點點的值,如 Fig. 22 藍色箭頭所示,因此在做反射的向量搜尋時,會以末端 做為起點,然而搜尋時的 size 大小就會因為超出的起點而造成兩種錯誤的狀況,當 size 太小, 小到小於起點到起點對應的貼圖深度的差值時,在經過原本產生全反射面時會判斷為找到新的交 點(如 Fig. 23(a)紫色箭頭所標示),因此產生錯誤,而當 size 太大時容易突出纖細的模型因此 在二元搜尋下找到錯的交點,為了解決此問題,我們採用了小的 size 先找尋第一個交點之後再 繼續搜尋到第二個交點,如Fig. 24 所示,改善結果如 Fig. 24(b)。

(13)

Fig. 21. 計算全反射之後產生的問題,左:全反射後的法向量 右: render 的結果

Fig. 22. 經過光線搜尋之後的結果,藍色箭頭為反射的起點 ,由於第一次搜尋的結果會逼近交

點但是其深度會大於交點,因而產生全反射第一次搜尋時的錯誤

(a) (b)

Fig. 23. (a)全反射 Size 太小,導致再以反射向量搜尋交點的時候受到第一次折射向量搜尋的誤

差所影響,找到了與第一次搜尋交點相同平面的焦點,(b)全反射 Size 過大而物體太過纖細的情 況下,反射向量在進行一次線性搜尋之後就進入二元搜尋,但因為第一次的交點涵蓋在這次線性 搜尋中,因此有可能在二元搜尋的結果找到第一次搜尋的交點。

(a) (b)

Fig. 24. (a)我們先以一個小的 size 搜尋第一個交點以確保在往後的搜尋不會找到,再進行正常

(14)

3.7 多個物體的折射 在已知單個物體的 image space 折射方法之後,接著由兩個物體的折射延伸到多個物體,我 們先對所以物體與眼睛的深度做排序,排序之後我們以離眼睛最近的物體開始做單一物體的折射 運算,如圖為兩個物體,我們先對物體 A 做折射運算並輸出折射向量與折射點,物體 B 以 depth peeling 分層,如Fig. 25。 (a) (b) (c) Fig. 25. 兩物體間的折射。(a) 物體 A 跟 B 相對位置 (b)物體 A 的折射向量影像與 P2 折射點影像; (c)物體 B 的深度影像 接著我們對兩物體之間的關係作分析,我們可以依照視點經過物體分成三種 case: 1. 視點 向量並無經過物體 A 並直接與未被 A 遮蔽的 B 表面相交;2.視點向量與 A 表面相交且在經過物體 A 的折射向量不會與 B 表面相交;3.視點向量與 A 表面相交且在經過物體 A 的折射向量與 B 表面 相交,如Fig. 26 所示 Fig. 26. 物體 A 跟 B 與視點的關係

在此分類之下,分別對每個 case 做計算: case1:使用單個物體的 image space 折射即可。 case2 與 case3: 視點向量以物體 A 貼圖輸入的折射向量 T2 與折射向量的出發點 P2 作為判斷, 接著以 T2 與物體 B 的深度進行光線高度場相交演算法,若有交點則為 case3 若無則為 case2, 若是 case3,以搜尋到的交點與折射向量繼續進行物體 B 單一物體的折射運算,若是 case2 則只 需繼續記錄原本的折射向量即可。 有了兩個物體的折射算法,第三個物體的算法即是把前面兩個物體最後輸出的 T2 與 P2 當成 一個有八層折射物體的輸出,然後與第三個物體作兩個物體的折射計算(Fig. 27)。

(15)

Fig. 27. 加入物體 C 後,物體 A 跟 B 視為同一個物體,輸入 Object A+B 的 P2&T2 計算兩個物體

Object A+B 與 Object C 的兩物體的折射運算。

4. 實驗結果與討論 我們在 windows 7 下開發以 C++語言編寫,以 OpenGL 為繪圖函式庫, glsl 為著色語言,分 別以真實世界的場景,光線追蹤的結果與一層折射、二層折射、四層折射比較在不同模型的折射 情況,此外我們以 OptiX 作為我們效率的對照組,並且分析我們方法的時間複雜度與光線追蹤法 差異。 4.1 真實世界的透明物體與光線追蹤法 我們可以從真實世界的透明圓球去觀察折射的現象,Fig. 28(左)為德國攝影師 Markus Reugels,利用攝影機拍出了水滴利用折射原理的藝術作品。他利用折射原理,將水滴與背景圖 片完美的結合在一起。右圖為美國攝影師 Grayce Pedulla-Dillon,利用裝滿水玻璃杯,配合色 彩強烈對比的背景,巧妙了運用折射效果,以強烈的色彩勾勒出了玻璃杯的曲線。

Fig. 28. 現實世界的透明物體折射藝術(左) Markus Reugels 攝(右) Pedulla-Dillon 攝

我們利用 blender 內建的光線追蹤法的結果可以明顯看出圓球折射結果如同現實世界,上下 顛倒左右相反。以 glsl 本身所提供的折射函數所計算的一次折射結果如 Fig. 29(c)。可以明顯 看出放大比例不真實。Fig. 29(d)是二層折射的結果,由於球的折射只需要二次折射,因此可以 看出與光線追蹤的結果極其相似。

(16)

(a) (b) (c) (d)

Fig. 29. 不同次數的折射效果。(a)場景設計 (b)ray tracing 透明球模型 (c)一次折射(d) 二次

折射

4.2 四層深度的透明物體

Fig. 30 為高腳杯模型折射的結果,我們依照一層折射、兩層折射、四層折射與 ray tracing 做為比較,我們可以發現一層折射並無法清楚的知道物體的形狀,只能大略的知道表面的凹凸起 伏,我們實做出來的兩層折射[Oliveira 2007]雖然比起一層折射的方法更為接近光線追蹤法的結 果,卻也無法正確得知彎曲的折射樣貌(例如杯緣部分的折射形狀),我們方法所提出來的四層折 射最為接近 ray tracing 的結果,我們可以立刻觀察到物體後面的正確的折射,並且折射之後的 結果也接近對照組的結果。 (a) (b) (c) (d) (e) Fig. 30. 高腳杯模型。(a)折射層數分析,紅色:兩層,藍色:四層,綠色:全反射,(b)一層折射結

果,(c)兩層折射結果,(d)四層折射結果,(e) ray tracing 的結果。

Fig. 31 為環形模型折射的結果,我們依照一層折射、兩層折射、四層折射與 ray tracing 做 為比較,我們可以發現內圈的部分在二層折射時所產生的結果並不特別明顯,在我們的方法中可 以明顯看到後半部的環形形狀。

(17)

(a) (b) (c) (d) (e)

Fig. 31. 環形模型。(a)折射層數分析,紅色:兩層,藍色:四層,綠色:全反射,(b)一層折射結

果,(c)兩層折射結果,(d)四層折射結果,(e) ray tracing 的結果。

knot 模型的特色在於有許多環形所組成,也因此四次折射較容易產生,透過 Fig. 32 我們可 以發現一個場景中有三處產生四次折射,因此我們可以很清楚的觀察到四層折射處物體背後的環 狀,且與光線追蹤法相似。牛的模型在腳與耳朵部分較容易出現四次折射(Fig. 33),模型身體部 分表面較為光滑,可以明顯表現折射的形狀。

(a) (b) (c) (d) (e)

Fig. 32. Knot 模型。(a)折射層數分析,紅色:兩層,藍色:四層,綠色:全反射,(b)一層折射結

果,(c)兩層折射結果,(d)四層折射結果,(e) ray tracing 的結果。

(a) (b) (c) (d) (e)

Fig. 33. 牛模型。(a)折射層數分析,紅色:兩層,藍色:四層,綠色:全反射,(b)一層折射結果,

(c)兩層折射結果,(d)四層折射結果,(e) ray tracing 的結果。 4.3 多個透明物體 多個透明物體的結果如 Fig. 34 所示,我們的由簡單的場景設計開始,發現其折射後的結果 近似,更加複雜的場景如 Fig. 35 所示,觀察結果發現結果雖然並無百分之一百的相同,但其大 致上的方向是正確的。相比於[Wyman 2005b]的不透明幾何模型,我們更進一步得到多個物體折 射的效果。

(18)

(a) (b) (c) (d)

Fig. 34. 兩個物體折射。(a)blender 場景設計(b) blender 的 render (c) 我們方法的 render

(d) 只有單一球 model 的情況

(a) (b) (c)

(d) (e) (f)

Fig. 35. 兩個物體折射。(a)場景設計 (b)單一物體折射向量 (c)兩個物體折射向量(d) 只由一

個物體的結果 (e)兩個物體的結果 (f) ray tracing 的結果

4.4 效能比較與複雜度分析 表 4.1 呈現了我們提出的方法與 OptiX 的效能對照,可以發現我們的方法在簡單的模型(如 球,立方體)上明顯優於 OptiX 的效能,而複雜的模型(如兔子,維納斯頭像)在較遠的視點位置 之下我們方法與 OptiX 的效能是差不多的。OptiX 折射模型的畫面比例越多時(視點離物體越接 近)fps 也越低,由於我們的方法計算每一個像素的折射成本較光跡追蹤法底,因此沒有這個問 題。如Table 1,我們分別以不同視點:1.與物體距離 20 單位(物體佔畫面比例小), 2.與物體距 離 10 單位(物體佔畫面比例大)。 Table 1. 效能比較。解析度 512x512 球 牛 甜甜圈 無限環形 Knot 兔子 faces 512 5804 576 2400 69664

(19)

我們的方法 153 fps 126 fps 142 fps 133 fps 15 fps OptiX 視點位置距離 20 112 fps 44 fps 92 fps 79 fps 12 fps OptiX 視點位置距離 10 56 fps 23 fps 49 fps 34 fps 9 fps 時間複雜度的分析,假設每次搜尋交點做 n 次線性搜尋(線性搜尋每一步的深度為 1/n)與 m 次二元搜尋,因此我們每次搜尋交點的花費為 m+n,最佳的情況為兩次搜尋便得到最後的折射向 量,表示我們只需要花一次 m+n 的搜尋,最差的情況即為四層搜尋加上一次全反射的計算,要花 (3+1)(m+n)的時間複雜度。由於光線相交演算法的精準度取決於 size 的大小,如果太大或太小 都會產生錯誤的結果,當 size 太大的時候容易產生如Fig. 36 的右邊: 由於牛的模型中腳的部分 比較纖細。我們設定 frustum 深度由 0 到 1,當 size 設定為 1/5(線性搜尋 5 次)時會產生找不到 交點的情況而產生錯誤的結果,至於當 size 太小,如 1/500(線性搜尋 500 次)的時候又因為斷 層的判斷方式導致判斷錯誤的情況,因此在時間與品質的考慮下,1/50 最為適合(線性搜尋 50 次)。

Fig. 36. 左: size=1/5 的深度圖於折射結果,右: size=1/50 的深度圖於折射結果 4.5 限制 我們以 image space 的方式實作了多層的折射,雖然效能上優於光線追蹤法,然而當折射的 層數提升,因為資料是以貼圖的方式傳遞,而受限於貼圖的解析度,我們方法的解析度也因而下 降,也容易在斷層與全反射處產生錯誤的結果,特別是當一個多個物體的場景,且解析度不高時, 如 Fig. 37。雖然一個場景中並不會有太多的折射模型,但隨著越多折射模型的或者太過複雜的 模型加入都會造成效率的降低,此外,我們目前因效能的考慮而對每一個模型都只做四層的折射, 因此會有無法正確顯示的部分。 (a) (b) (c)

(20)

Fig. 37. Figure 4.1: (a) 場景設計 (b) blender render (c) 我們的方法 5. 結論與未來發展 本研究提出了一個用以實現基於四層深度影像的即時折射方法,比起過去兩層深度影像的折 射方法,我們的方法更加接近光線追蹤法的結果,尤其在於可以在透明模型的表面較清楚的看見 光學折射下物體的形狀,這是先前兩次折射的方法在需要四次以上折射模型所無法做到的。我們 也提出了多個物體的折射方法,依照視點與物體的遠近,依序進行四層的折射,並且分析物體之 間折射的可能性,得到正確的折射向量。整體而言,我們在計算效率相較於[Oliveira 2007]沒有 減少太多的前提下,增加了兩次折射的方法的準確度,使得我們的方法可以更完整呈現透明幾何 模型的折射現象,此外也提供了多個透明物體間的折射計算。 目前我們的方法的畫質仍受限在 image space 的貼圖資訊和環境貼圖的解析度。在未來工作 中,如何平衡畫質與提高解析所帶來的計算量,將是一個重點方向,或許可以運用 mip-map 技術 來提高貼圖解析度的不足,然而我們需要以折射深度來決定貼圖的解析度(mip-map 的層級),這 個問題的困難點在於貼圖的分層無法完全對應的模型每個點的折射深度,我們或許可以考慮在折 射後再進行貼圖的計算。效率上,我們可以考慮除了現有的搜尋方法之外,是否還有更佳的搜尋 方法,畢竟越多的層次或者越多的物體,需要搜尋的次數就會相對提升,我們也可以考慮將許多 步驟合併執行,例如:折射的計算有無可能與 depth peeling 同步處理;或者將整個場景分成多 層影像直接進行多個物體的折射計算。 參考文獻

[1] Fabio Policarpo, Manuel M. Oliveira, and João L. D. Comba L. D. Comba. 2005. Real-time relief mapping on arbitrary polygonal surfaces. In Proceedings of the 2005 symposium on Interactive 3D graphics and games (I3D '05). ACM, New York, NY, USA, 155-162.

[2] Chris Wyman. 2005a. An approximate image-space approach for interactive refraction. ACM Trans. Graph. 24, 3 (July 2005), 1050-1053.

[3] Chris Wyman. 2005b. Interactive image-space refraction of nearby geometry. In Proceedings of the 3rd international conference on Computer graphics and

interactive techniques in Australasia and South East Asia (GRAPHITE '05). ACM, New York, NY, USA, 205-211.

[4] Manuel M. Oliveira and Maicon Brauwers. 2007. real-time refraction through deformable objects. In Proceedings of the 2007 symposium on Interactive 3D graphics and games (I3D '07). ACM, New York, NY, USA, 89-96.

[5] Fernando, R. & Kilgard M. J. (2003). The CG Tutorial: The Definitive Guide to Programmable real-time Graphics. (1st ed.). Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA. Chapter 7: Environment Mapping Techniques

[6] Stephane Guy and Cyril Soler. 2004. Graphics gems revisited: fast and physically-based rendering of gemstones. In ACM SIGGRAPH 2004 Papers (SIGGRAPH '04), Joe Marks (Ed.). ACM, New York, NY, USA

(21)

[7] Arvo, J. (1986). "Backward Ray Tracing." Developments in Ray Tracing. ACM Siggraph Course Notes 12, pp. 259–263, 1986.

[8] Génevaux, O., F. Larue, et al. (2006). Interactive refraction on complex static geometry using spherical harmonics. Proceedings of the 2006 symposium on

Interactive 3D graphics and games. Redwood City, California, ACM: 145-152.

[9] Günther, J., I. Wald, et al. (2004). Real-time caustics using distributed photon mapping. Proceedings of the Fifteenth Eurographics conference on Rendering

Techniques. Norrköping, Sweden, Eurographics Association: 111-121.

[10] Hakura, Z. S. and J. M. Snyder (2001). Realistic Reflections and Refractions on Graphics Hardware with Hybrid Rendering and Layered Environment Maps. Proceedings of the 12th Eurographics Workshop on Rendering Techniques, Springer-Verlag: 289-300.

[11] Charles de Rousiers, Adrien Bousseau, Kartic Subr, Nicolas Holzschuch, and Ravi Ramamoorthi. 2011. real-time rough refraction. In Symposium on Interactive 3D Graphics and Games (I3D '11). ACM, New York, NY, USA.

[12] Arthur Appel. 1968. Some techniques for shading machine renderings of solids. In Proceedings of the April 30--May 2, 1968, spring joint computer conference (AFIPS '68 (Spring)). ACM, New York, NY, USA, 37-45.

[13] Everitt C.: Interactive order-independent transparency. Tech. rep., NVIDIA Corporation, 2001.

[14] Liu B.-Q., Wei L.-Y., Xu Y.-Q.: Multi-layer depth peeling via fragment sort. Tech. rep., Microsoft Research Asia, 2006. 2.

[15] Bavoil L., Myers K.: Order independent transparency with dual depth peeling. NVIDIA OpenGL SDK, 2008.

[16] Y. Mukaigawa, Y. Yagi, and R. Raskar. Analysis of light transport in scattering media. In Proc. CVPR, pages 153-160, 2010

[17] Steven M. Seitz, Yasuyuki Matsushita , Kiriakos N. Kutulakos, A Theory of Inverse Light Transport, Proceedings of the Tenth IEEE International Conference on

Computer Vision, p.1440-1447, October 17-20, 2005

[18] Aner Ben-Artzi, Kevin Egan , Frédo Durand , Ravi Ramamoorthi, A precomputed polynomial representation for interactive BRDF editing with global illumination, ACM Transactions on Graphics (TOG), v.27 n.2, p.1-13, April 2008

[19] Mammen, Abraham. "Transparency and antialiasing algorithms implemented with the virtual pixel maps technique." Computer Graphics and Applications, IEEE 9.4 (1989): 43-55.

(22)

科技部補助計畫衍生研發成果推廣資料表

日期:2014/12/10

科技部補助計畫

計畫名稱: 折射效果之加速計算與風格化應用 計畫主持人: 紀明德 計畫編號: 102-2221-E-004-008- 學門領域: 計算機圖學

無研發成果推廣資料

(23)

102 年度專題研究計畫研究成果彙整表

計畫主持人:紀明德 計畫編號: 102-2221-E-004-008-計畫名稱:折射效果之加速計算與風格化應用 量化 成果項目 實際已達成 數(被接受 或已發表) 預期總達成 數(含實際已 達成數) 本計畫實 際貢獻百 分比 單位 備 註 ( 質 化 說 明:如 數 個 計 畫 共 同 成 果、成 果 列 為 該 期 刊 之 封 面 故 事 ... 等) 期刊論文 1 2 70% 研究報告/技術報告 0 0 100% 研討會論文 1 1 100% 篇 論文著作 專書 0 0 100% 申請中件數 0 0 100% 專利 已獲得件數 0 0 100% 件 件數 0 0 100% 件 技術移轉 權利金 0 0 100% 千元 碩士生 3 3 100% 博士生 1 1 100% 博士後研究員 0 0 100% 國內 參與計畫人力 (本國籍) 專任助理 0 0 100% 人次 期刊論文 0 0 100% 研究報告/技術報告 0 0 100% 研討會論文 0 0 100% 篇 論文著作 專書 0 0 100% 章/本 申請中件數 0 0 100% 專利 已獲得件數 0 0 100% 件 件數 0 0 100% 件 技術移轉 權利金 0 0 100% 千元 碩士生 0 0 100% 博士生 0 0 100% 博士後研究員 0 0 100% 國外 參與計畫人力 (外國籍) 專任助理 0 0 100% 人次

(24)

其他成果

(

無法以量化表達之成 果如辦理學術活動、獲 得獎項、重要國際合 作、研究成果國際影響 力及其他協助產業技 術發展之具體效益事 項等,請以文字敘述填 列。) 無 成果項目 量化 名稱或內容性質簡述 測驗工具(含質性與量性) 0 課程/模組 0 電腦及網路系統或工具 0 教材 0 舉辦之活動/競賽 0 研討會/工作坊 0 電子報、網站 0 目 計畫成果推廣之參與(閱聽)人數 0

(25)

科技部補助專題研究計畫成果報告自評表

請就研究內容與原計畫相符程度、達成預期目標情況、研究成果之學術或應用價

值(簡要敘述成果所代表之意義、價值、影響或進一步發展之可能性)

、是否適

合在學術期刊發表或申請專利、主要發現或其他有關價值等,作一綜合評估。

1. 請就研究內容與原計畫相符程度、達成預期目標情況作一綜合評估

■達成目標

□未達成目標(請說明,以 100 字為限)

□實驗失敗

□因故實驗中斷

□其他原因

說明:

2. 研究成果在學術期刊發表或申請專利等情形:

論文:■已發表 □未發表之文稿 □撰寫中 □無

專利:□已獲得 □申請中 ■無

技轉:□已技轉 □洽談中 ■無

其他:(以 100 字為限)

論文初步成果已發表在 CGW 2014 會議上。目前已將最後成果撰寫成英文期

刊論文,投稿中。

3. 請依學術成就、技術創新、社會影響等方面,評估研究成果之學術或應用價

值(簡要敘述成果所代表之意義、價值、影響或進一步發展之可能性)(以

500 字為限)

本計劃提出了一個基於四層深度影像的即時折射方法,比起過去兩層深度影

像的折射方法,我們的方法更加接近光線追蹤法的結果,可呈現透明複雜幾

何物體的折射效果,這是先前兩次折射的方法在需要四次以上折射模型所無

法做到的。這樣的技術可應用於需要即時互動的應用,如遊戲或互動電影中。

另外,因為可以即時運算折射效果,可以用來輔助折射藝術作品的創作流程。

數據

Fig. 3. 甜甜圈模型 Blender render 結果
Fig. 3. 甜甜圈模型 Blender render 結果 p.6
Fig. 7. Zmin 與 Zmax 求法摘自[Manuel 2007]
Fig. 7. Zmin 與 Zmax 求法摘自[Manuel 2007] p.7
Fig. 4. OptiX 中國龍模型四層(左)與六層(右)結果比較,圓圈為差異處  3.2  系統架構   本節為我們方法的系統架構,首先對輸入的幾何模型進行 Depth peeling 的分層與合併,得 到四層的法向量與深度,以此資料進行每層進行折射交點的計算,計算之後的結果以貼圖的方式 傳給下一個模型進行多個模型的折射。  Fig
Fig. 4. OptiX 中國龍模型四層(左)與六層(右)結果比較,圓圈為差異處 3.2 系統架構 本節為我們方法的系統架構,首先對輸入的幾何模型進行 Depth peeling 的分層與合併,得 到四層的法向量與深度,以此資料進行每層進行折射交點的計算,計算之後的結果以貼圖的方式 傳給下一個模型進行多個模型的折射。 Fig p.7
Fig. 10. 環形模型 depth peeling 後的四層深度影像(a)與法向量影像(b),由左到右為 1~4 層  3.5  斷層處理
Fig. 10. 環形模型 depth peeling 後的四層深度影像(a)與法向量影像(b),由左到右為 1~4 層 3.5 斷層處理 p.8
Fig. 13. case 1 示意圖(a) 3D model 產生的斷層,T 為折射向量,(b) 以 bunny 為例
Fig. 13. case 1 示意圖(a) 3D model 產生的斷層,T 為折射向量,(b) 以 bunny 為例 p.9
Fig. 14. case2 示意圖。(a) 3D model 產生的斷層,(b) T 為折射向量 (右)二元搜尋(c) 以
Fig. 14. case2 示意圖。(a) 3D model 產生的斷層,(b) T 為折射向量 (右)二元搜尋(c) 以 p.10
Fig. 15. Case3 示意圖。 (a) 3D model 產生的斷層 (b) 二元搜尋,(c) 以 bunny 為例
Fig. 15. Case3 示意圖。 (a) 3D model 產生的斷層 (b) 二元搜尋,(c) 以 bunny 為例 p.10
Fig. 16. case3 的特例  我們需要額外的 flag 來幫助我們判斷折射向量在斷層下的深度判斷,如 Fig. 17。  Fig. 17. 若 case2 不與斷層相交則繼續線性搜尋  以上敘述的斷層是 model 與 model 之間所產生的,另外也有模型與背景產生的斷層,而這 種斷層在前兩層的計算並不會產生問題,因為前兩層的深度貼圖對於每一個 fragment 都可以找 到對應的值,但到了第三層,由於模型的某些部份只有到兩層的深度,而造成第三層的計算會產 生如 Fig
Fig. 16. case3 的特例 我們需要額外的 flag 來幫助我們判斷折射向量在斷層下的深度判斷,如 Fig. 17。 Fig. 17. 若 case2 不與斷層相交則繼續線性搜尋 以上敘述的斷層是 model 與 model 之間所產生的,另外也有模型與背景產生的斷層,而這 種斷層在前兩層的計算並不會產生問題,因為前兩層的深度貼圖對於每一個 fragment 都可以找 到對應的值,但到了第三層,由於模型的某些部份只有到兩層的深度,而造成第三層的計算會產 生如 Fig p.11
Fig. 19. 將深度相連的層合併(第一層與第三層)和(第二層與第四層)  合併方法以甜甜圈第四層為例,首先第四層深度減掉第二層深度得到 Fig.  20 的橘色線(差 值),接著以第二層深度加上之前所產生的差值,if(產生的深度差值為 1)則為第二層深度 else 第四層深度,最後結果取代原本的第四層深度。  Fig
Fig. 19. 將深度相連的層合併(第一層與第三層)和(第二層與第四層) 合併方法以甜甜圈第四層為例,首先第四層深度減掉第二層深度得到 Fig. 20 的橘色線(差 值),接著以第二層深度加上之前所產生的差值,if(產生的深度差值為 1)則為第二層深度 else 第四層深度,最後結果取代原本的第四層深度。 Fig p.12
Fig. 23. (a)全反射 Size 太小,導致再以反射向量搜尋交點的時候受到第一次折射向量搜尋的誤
Fig. 23. (a)全反射 Size 太小,導致再以反射向量搜尋交點的時候受到第一次折射向量搜尋的誤 p.13
Fig. 21. 計算全反射之後產生的問題,左:全反射後的法向量 右: render 的結果
Fig. 21. 計算全反射之後產生的問題,左:全反射後的法向量 右: render 的結果 p.13
Fig. 24. (a)我們先以一個小的 size 搜尋第一個交點以確保在往後的搜尋不會找到,再進行正常
Fig. 24. (a)我們先以一個小的 size 搜尋第一個交點以確保在往後的搜尋不會找到,再進行正常 p.13
Fig. 22. 經過光線搜尋之後的結果,藍色箭頭為反射的起點 ,由於第一次搜尋的結果會逼近交
Fig. 22. 經過光線搜尋之後的結果,藍色箭頭為反射的起點 ,由於第一次搜尋的結果會逼近交 p.13
Fig. 28. 現實世界的透明物體折射藝術(左) Markus Reugels 攝(右) Pedulla-Dillon 攝
Fig. 28. 現實世界的透明物體折射藝術(左) Markus Reugels 攝(右) Pedulla-Dillon 攝 p.15
Fig. 27. 加入物體 C 後,物體 A 跟 B 視為同一個物體,輸入 Object A+B 的 P2&T2 計算兩個物體
Fig. 27. 加入物體 C 後,物體 A 跟 B 視為同一個物體,輸入 Object A+B 的 P2&T2 計算兩個物體 p.15
Fig. 29. 不同次數的折射效果。(a)場景設計 (b)ray tracing 透明球模型 (c)一次折射(d) 二次
Fig. 29. 不同次數的折射效果。(a)場景設計 (b)ray tracing 透明球模型 (c)一次折射(d) 二次 p.16
Fig.  30 為高腳杯模型折射的結果,我們依照一層折射、兩層折射、四層折射與 ray tracing 做為比較,我們可以發現一層折射並無法清楚的知道物體的形狀,只能大略的知道表面的凹凸起 伏,我們實做出來的兩層折射[ Oliveira  2007]雖然比起一層折射的方法更為接近光線追蹤法的結 果,卻也無法正確得知彎曲的折射樣貌(例如杯緣部分的折射形狀),我們方法所提出來的四層折 射最為接近 ray tracing 的結果,我們可以立刻觀察到物體後面的正確的折射,並且折射之後的 結果也接近對照組的結果。
Fig. 30 為高腳杯模型折射的結果,我們依照一層折射、兩層折射、四層折射與 ray tracing 做為比較,我們可以發現一層折射並無法清楚的知道物體的形狀,只能大略的知道表面的凹凸起 伏,我們實做出來的兩層折射[ Oliveira 2007]雖然比起一層折射的方法更為接近光線追蹤法的結 果,卻也無法正確得知彎曲的折射樣貌(例如杯緣部分的折射形狀),我們方法所提出來的四層折 射最為接近 ray tracing 的結果,我們可以立刻觀察到物體後面的正確的折射,並且折射之後的 結果也接近對照組的結果。 p.16
Fig.  31 為環形模型折射的結果,我們依照一層折射、兩層折射、四層折射與 ray tracing 做 為比較,我們可以發現內圈的部分在二層折射時所產生的結果並不特別明顯,在我們的方法中可 以明顯看到後半部的環形形狀。
Fig. 31 為環形模型折射的結果,我們依照一層折射、兩層折射、四層折射與 ray tracing 做 為比較,我們可以發現內圈的部分在二層折射時所產生的結果並不特別明顯,在我們的方法中可 以明顯看到後半部的環形形狀。 p.16
Fig. 32. Knot 模型。(a)折射層數分析,紅色:兩層,藍色:四層,綠色:全反射,(b)一層折射結
Fig. 32. Knot 模型。(a)折射層數分析,紅色:兩層,藍色:四層,綠色:全反射,(b)一層折射結 p.17
Fig. 31. 環形模型。(a)折射層數分析,紅色:兩層,藍色:四層,綠色:全反射,(b)一層折射結
Fig. 31. 環形模型。(a)折射層數分析,紅色:兩層,藍色:四層,綠色:全反射,(b)一層折射結 p.17
Fig. 34. 兩個物體折射。(a)blender 場景設計(b) blender 的 render (c) 我們方法的 render
Fig. 34. 兩個物體折射。(a)blender 場景設計(b) blender 的 render (c) 我們方法的 render p.18
Fig. 35. 兩個物體折射。(a)場景設計 (b)單一物體折射向量 (c)兩個物體折射向量(d) 只由一
Fig. 35. 兩個物體折射。(a)場景設計 (b)單一物體折射向量 (c)兩個物體折射向量(d) 只由一 p.18
Fig. 36. 左: size=1/5 的深度圖於折射結果,右: size=1/50 的深度圖於折射結果  4.5  限制  我們以 image space 的方式實作了多層的折射,雖然效能上優於光線追蹤法,然而當折射的 層數提升,因為資料是以貼圖的方式傳遞,而受限於貼圖的解析度,我們方法的解析度也因而下 降,也容易在斷層與全反射處產生錯誤的結果,特別是當一個多個物體的場景,且解析度不高時, 如 Fig
Fig. 36. 左: size=1/5 的深度圖於折射結果,右: size=1/50 的深度圖於折射結果 4.5 限制 我們以 image space 的方式實作了多層的折射,雖然效能上優於光線追蹤法,然而當折射的 層數提升,因為資料是以貼圖的方式傳遞,而受限於貼圖的解析度,我們方法的解析度也因而下 降,也容易在斷層與全反射處產生錯誤的結果,特別是當一個多個物體的場景,且解析度不高時, 如 Fig p.19