專利名稱:一種非常數(shù)折射率介質(zhì)中的光線跟蹤方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種電影和游戲工業(yè)的渲染器中使用的光線跟蹤技術(shù),尤其涉及一種 非常數(shù)折射率介質(zhì)中的光線跟蹤方法。
背景技術(shù):
光線跟蹤作為較為先進(jìn)的渲染技術(shù),相比于其它渲染方法如掃描線渲染或者光線 投射,能夠更加真實地模擬光線傳播。像反射和陰影這樣對于其它算法來說都很難實現(xiàn)的 一些效果,卻是光線跟蹤的自然結(jié)果。光線跟蹤易于實現(xiàn)并且視覺效果較好,因此它在圖 形學(xué)研究中被廣泛應(yīng)用,尤其是在渲染特殊的反射、折射效果時,通常都會選擇光線跟蹤方 法。光線通過一個透明物體時會產(chǎn)生折射現(xiàn)象,并由此產(chǎn)生一些很特別的視覺效果, 典型的如透過波動的水面看到水底景象的變化、炎熱天氣下路面蒸騰的熱氣造成的景象扭 曲以及海市蜃樓等。有效而真切地表現(xiàn)虛擬場景中的折射效果是提高電影和游戲工業(yè)中繪 制場景真實感的重要條件?,F(xiàn)有技術(shù)已能夠較好地處理折射率為常數(shù)的介質(zhì)中的光線跟蹤。然而對于更為復(fù) 雜的介質(zhì),其折射率無法簡單地用一個常數(shù)描述,常見的如如非均勻的玻璃體,加熱過的空 氣、日出日落時的海面大氣等。在這類介質(zhì)中,折射不僅僅發(fā)生在介質(zhì)表面,而是可能在介 質(zhì)內(nèi)部處處發(fā)生。光線的行進(jìn)路徑也不是一條直線,而是符合一定規(guī)律的曲線。非常數(shù)折射率介質(zhì)泛指折射率不能用常數(shù)來簡單表示的介質(zhì),常見的如非均勻 的玻璃體,加熱過的空氣、日出日落時的海面大氣等。針對非常數(shù)折射率介質(zhì)中的光線跟 蹤問題,現(xiàn)有技術(shù)通常采用分段線性逼近的方案來跟蹤光線在介質(zhì)中的行進(jìn)路徑,即將光 線的行進(jìn)過程分成很多小段,并假設(shè)在每段內(nèi)折射率的變化不大,以至于可以假設(shè)光線 沿直線行進(jìn),并根據(jù)幾何光學(xué)的結(jié)果計算每一步的折射方向。此類方法可參考GrGller, E.1995. Nonlinear ray tracing-visualizing strange worlds. The Visual Computer 11,5,263-274, Guiterrze, D. ,MunOZ,A. , Anson, 0. , and Seron, F. J. 2006. Simulation of atmospheric phenomena. Computer&Graphics 20,6,994—1010,Ihrke,I.,Ziegler, G,Tevs,A.,Theobalt,C.,Magnor, Μ.,and Seidel,H. -P. 2007. Eikonal rendering efficient light transport in refractive objects. ACM Trans· Graph· 26,3,59,Sun, X.,Zhou,K.,Stollnitz,E.,Shi, J.,and Guo, B. 2008. Interactive relighting of dynamic refractive objects. ACM Trans. Graph. 27,3,35 :1_35 :90這類方案的主要問題在于,為取得較好的繪制效果,需要將分段光線跟蹤的步長 取得足夠的短,這就導(dǎo)致了跟蹤的步數(shù)過多,計算效率不高。另一類方案是試圖尋找光線行進(jìn)的解析表達(dá),從而避免需要逐段跟蹤光線路徑的 問題。Stam 禾口 Langenou 在 1996 年提出一種技術(shù)(見 Stam, J.,and Languenou, Ε. 1996. Ray tracing in non-constant media. In Eurographics Rendering Workshop),首先用 一些徑向基的疊加來近似折射率的變化,由于每個徑向基對光線行進(jìn)的影響可以解析的計算,這樣就可以通過疊加這些影響來近似計算光線在介質(zhì)中的偏轉(zhuǎn)。這一方案盡管提高了 光線跟蹤的效率,然而在計算每個徑向基產(chǎn)生的偏轉(zhuǎn)時引入了一階近似,會隨著光線行進(jìn) 跨度的加長產(chǎn)生越來越大的誤差,其效率從本質(zhì)上還是受到限制,另外,得到折射率的徑向 基表示并不容易,通常需要復(fù)雜而費(fèi)時的非線性優(yōu)化過程。
發(fā)明內(nèi)容
本發(fā)明針對電影和游戲工業(yè)中渲染器中使用的現(xiàn)有光線跟蹤技術(shù)在處理非常數(shù) 折射率介質(zhì)時效率偏低、結(jié)果不夠準(zhǔn)確等問題,提供一種非常數(shù)折射率介質(zhì)中的光線跟蹤 方法,本發(fā)明能夠快速、準(zhǔn)確地渲染非常數(shù)折射率介質(zhì)。本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的一種非常數(shù)折射率介質(zhì)中的光線跟 蹤方法,包括如下步驟(1)獲得折射介質(zhì)的四面體網(wǎng)格和體素網(wǎng)格表達(dá)。(2)根據(jù)介質(zhì)折射率和梯度的空間變化建立空間八叉樹。(3)由視點(diǎn)向每個采樣點(diǎn)發(fā)出光線,作為光線跟蹤的初始光線集合。(4)按照傳統(tǒng)光線跟蹤的方法沿直線跟蹤當(dāng)前光線集合中的光線,直至其與場景 中其他物體相交或進(jìn)入非常數(shù)折射率介質(zhì)的邊界,若光線與場景中其他物體相交,則根據(jù) 傳統(tǒng)光線跟蹤的方法計算該光線上的能量,更新對應(yīng)采樣點(diǎn)的顏色。(5)跟蹤進(jìn)入非常數(shù)折射率介質(zhì)的光線。(6)轉(zhuǎn)至步驟(4)迭代執(zhí)行光線跟蹤過程。若迭代次數(shù)超過某預(yù)設(shè)值(發(fā)生全反 射),則中止光線跟蹤過程,將光線對應(yīng)采樣點(diǎn)顏色值賦為某預(yù)先設(shè)定的缺省值。本發(fā)明的有益效果是,基于梯度折射率光學(xué)給出了非常數(shù)折射率介質(zhì)中光線行進(jìn) 路徑的解析表達(dá),并直接用于跟蹤光線與場景的交點(diǎn)以及虛擬場景的繪制,采用這一技術(shù) 方案,可以在光線跟蹤的過程中使用較大的步長,而這使得在同等繪制質(zhì)量下,本方案的效 率比現(xiàn)有技術(shù)方案要高出數(shù)倍乃至一個數(shù)量級。本發(fā)明可以很容易和電影和游戲工業(yè)中的 其他渲染技術(shù)相結(jié)合,繪制由非常數(shù)折射率介質(zhì)中的折射現(xiàn)象衍生出的各種特殊效果。
圖1是本發(fā)明中光線在常數(shù)梯度折射率中傳播的軌跡方程示意;圖2是本發(fā)明中基于四面體表達(dá)的非常數(shù)折射率介質(zhì)平面示意;圖3是本發(fā)明中基于體素表達(dá)的非常數(shù)折射率介質(zhì)平面示意;圖4是本發(fā)明中光線在下蜃景中傳播的軌跡方程示意;圖5是本發(fā)明中光線在上蜃景中傳播的軌跡方程示意;圖6是本發(fā)明繪制的非常數(shù)折射率介質(zhì)的結(jié)果;圖7是本發(fā)明與現(xiàn)有方法在常數(shù)梯度折射率介質(zhì)中進(jìn)行光線跟蹤的結(jié)果圖;圖8是在不同折射率梯度下本發(fā)明方法和現(xiàn)有方法的光線跟蹤時間對比圖。
具體實施例方式高效跟蹤光線在非常數(shù)折射率介質(zhì)中的運(yùn)行需解決三個基本技術(shù)難點(diǎn)一、如何描述介質(zhì)中的折射率變化,介質(zhì)折射率的表達(dá)方法往往在很大程度上決定了可能采用的技術(shù)方案;二、如何確定光線在介質(zhì)中的行進(jìn)路徑的方程,并利用這一解析方程確定光線與 介質(zhì)邊界的交點(diǎn);三、如何在不引入較大誤差的條件下以盡可能大的步長高效地實現(xiàn)介質(zhì)中的光線
足艮S宗。其中,難點(diǎn)一和難點(diǎn)二又是耦合在一起的,因為介質(zhì)折射率的表示會影響到光線 的路徑方程的形式,例如上述Stam和Langenou提出的技術(shù)方案使用疊加的徑向基表達(dá)介 質(zhì)的折射率,則路徑方程就描述了受徑向基描述的折射率介質(zhì)影響的光線行進(jìn)方式。先考察一種非常數(shù)折射率介質(zhì)的特殊情形——常數(shù)梯度折射率介質(zhì),在這種介質(zhì) 中,折射率沿某個梯度方向勻速變化,由下式給出η (ζ) = η(0) + α ζ,其中ζ軸與折射率梯度的方向一致,α是梯度的大小。根據(jù)梯度折射率光學(xué)的理 論,可以得到光線在常數(shù)梯度折射率介質(zhì)中的光線軌跡方程光線初始方向%和ζ軸確定 了一個二維折射平面,光線的行進(jìn)路徑完全落在這一二維折射平面中。如果Vtl和Z軸方向 夾角小于90度,光線軌跡方程為 其中χ軸是折射平面上與ζ軸垂直的方向,θ ^是V(1和x軸的夾角。上式中其他 常數(shù)是A = η2 (0) sin2 θ 0,b = 2 α η (0) · c = α 2·如果γ0和ζ軸方向夾角大于或者等于90度,光線平面上的光線軌跡需要在折點(diǎn)f =(xf,Yf)處分為兩段表達(dá),f點(diǎn)具體定義為 曲線的第一段可以表達(dá)為χ = -r (ζ),0 彡 χ 彡 Xf,第二段可以表達(dá)為χ = 2xf+r (ζ), χ > xf.光線軌跡的形狀如附圖1所示,圖中黃色曲線是Vtl和ζ軸方向夾角小于90度的 情況,藍(lán)色曲線是Vtl和Z軸方向夾角大于90度的情況。在兩種情況下,光線在常數(shù)梯度折 射率介質(zhì)中傳播時,其傳播方向都逐漸趨向于梯度方向。一般的非常數(shù)折射率介質(zhì)可以通過特定的表達(dá)近似表達(dá)為若干常數(shù)梯度折射率 介質(zhì)的空間單元的組合,本發(fā)明提出兩種方案—、四面體網(wǎng)格表達(dá)的一般非常數(shù)折射率介質(zhì)在非常數(shù)折射率介質(zhì)所在空間內(nèi) 建立四面體網(wǎng)格,如附圖2所示,并將介質(zhì)折射率存儲在四面體網(wǎng)格的每個頂點(diǎn)處,四面體 內(nèi)部的介質(zhì)折射率由頂點(diǎn)上的介質(zhì)折射率插值得到,這一表達(dá)下,四面體內(nèi)部的介質(zhì)折射 率梯度是一個由其四頂點(diǎn)上的介質(zhì)折射率確定的常數(shù),按下式計算
其中Ak是四面體各面的面積,T是四面體體積,nk是四面體各頂點(diǎn)上的介質(zhì)折射 率,Nk是四面體各面的法線方向,k= 1,2,3,4;二、體素網(wǎng)格表達(dá)的一般非常數(shù)折射率介質(zhì)在非常數(shù)折射率介質(zhì)所在空間內(nèi)建 立均勻體素網(wǎng)格,如附圖3所示,并將介質(zhì)折射率存儲在每個體素上,每個體素內(nèi)部的梯度 是一個根據(jù)其相鄰體素的介質(zhì)折射率差分得到的常數(shù);上述兩種方案下,特定離散化的空間單元(四面體或體素)內(nèi)的介質(zhì)折射率梯度 都是常數(shù),可用上述常數(shù)梯度折射率介質(zhì)內(nèi)的光線跟蹤方法來處理。并非所有非常數(shù)折射率介質(zhì)都需要通過上述四面體和體素離散化后轉(zhuǎn)化為常數(shù) 梯度折射率介質(zhì)進(jìn)行光線跟蹤。在海面上或沙漠里觀察到的海市蜃樓通常是由于空氣折射 率隨海拔高度的規(guī)律性變化造成的,這又分為兩種類型。一種是上蜃景,是由于視平線以上的空氣比其下的空氣熱造成的規(guī)律性折射率變 化引起;另一種是下蜃景,是由于視平線以上的空氣比其下的空氣冷造成的規(guī)律性折射率 變化引起。兩種情形下,光線方程都可以按上述常數(shù)梯度折射率介質(zhì)中的方法得到,從而可 以直接根據(jù)解析的光線方程進(jìn)行跟蹤。附圖4和5中分別給出了下蜃景和上蜃景中的光線 軌跡。基于四面體網(wǎng)格或體素網(wǎng)格表達(dá),盡管可以將一般的非常數(shù)折射率介質(zhì)中的光線 跟蹤轉(zhuǎn)化為常數(shù)梯度折射率介質(zhì)中的光線跟蹤進(jìn)行處理,但這一技術(shù)方案還是引入了對光 線的均勻分段近似,并不能帶來光線跟蹤效率的明顯提高。這就需要解決前面提到的第三 個關(guān)鍵技術(shù)難點(diǎn)如何在不引入較大誤差的條件下以盡可能大的步長高效地實現(xiàn)介質(zhì)中的 光線跟蹤。本發(fā)明提出的技術(shù)方案是建立空間八叉樹結(jié)構(gòu)來反映折射率梯度的變化,并在折 射率梯度變化很小的八叉樹節(jié)點(diǎn)對應(yīng)的空間單元內(nèi)按照常數(shù)梯度折射率介質(zhì)中的光線跟 蹤方法進(jìn)行處理。更進(jìn)一步,對于折射率本身變化很小的八叉樹節(jié)點(diǎn)對應(yīng)的空間單元,可直 接按照直線來跟蹤光線的行進(jìn),進(jìn)一步提高效率。由于本發(fā)明提出的光線跟蹤方法的一個最基本操作是根據(jù)光線的方程求取該光 線與特定邊界表達(dá)(四面體、正方體或以多邊形集合形式給出的介質(zhì)邊界)的交點(diǎn),為方便 下面的敘述,這里首先給出這一基本操作的實施步驟,下文引用時稱為標(biāo)準(zhǔn)求交操作一、根據(jù)入射光線方向、入射點(diǎn)和介質(zhì)折射率梯度,確定折射平面;二、確定折射平面與邊界的交線L ;三、用數(shù)值方法(如二分法或牛頓法)在折射平面上求取光線方程與交線L的交 點(diǎn)及交點(diǎn)處光線的切線方向;本發(fā)明提出的非常數(shù)折射率介質(zhì)中的光線跟蹤方法,包括如下步驟步驟一、獲得折射介質(zhì)的四面體網(wǎng)格和體素網(wǎng)格表達(dá);事實上,在很多工業(yè)應(yīng)用 中,介質(zhì)的折射率是直接由物理仿真或由物理仿真產(chǎn)生的某個特定物理量(如溫度)映射 得到,而這些物理仿真大多是基于四面體網(wǎng)格和體素網(wǎng)格的,可以直接用來作為折射率介 質(zhì)的網(wǎng)格表達(dá),對另一類解析方法給出的折射率介質(zhì),可以在四面體網(wǎng)格的頂點(diǎn)或體素網(wǎng) 格的體素中心對折射率的解析表達(dá)進(jìn)行采樣來得到對應(yīng)的離散化表達(dá),這一步驟的輸出是網(wǎng)格以及網(wǎng)格上空間單元內(nèi)的折射率梯度;步驟二、根據(jù)介質(zhì)折射率和梯度的空間變化建立空間八叉樹,這又分成如下幾個 子步驟2. 1根據(jù)用戶指定的八叉樹層數(shù)確定八叉樹的最底層節(jié)點(diǎn)構(gòu)成的網(wǎng)格,對每個網(wǎng) 格,獲得與其有重合部分的四面體或體素的列表;2. 2自底向上遞歸地合并八叉樹節(jié)點(diǎn),當(dāng)同一個節(jié)點(diǎn)下的八個子節(jié)點(diǎn)滿足下述兩 個條件時將其合并條件1 任一節(jié)點(diǎn)都不與處在介質(zhì)邊界的任何空間單元有重合部分;條 件2 所有節(jié)點(diǎn)對應(yīng)的空間單元內(nèi)的介質(zhì)折射率梯度的差別小于某用戶指定的閾值ε,或 所有節(jié)點(diǎn)對應(yīng)的空間單元內(nèi)的介質(zhì)折射率梯度的差別小于某用戶指定的閾值S ;2. 3合并節(jié)點(diǎn)A的八個子節(jié)點(diǎn)Ai時,將所有子節(jié)點(diǎn)對應(yīng)的空間單元的并集關(guān)聯(lián)到 節(jié)點(diǎn)A上,并將節(jié)點(diǎn)A對應(yīng)的介質(zhì)折射率梯度設(shè)為其對應(yīng)的所有空間單元上的介質(zhì)折射率 梯度的平均;2. 4若本次未能合并任何節(jié)點(diǎn),或已經(jīng)達(dá)到八叉樹的根節(jié)點(diǎn),本步驟結(jié)束,否則轉(zhuǎn) 至2. 2迭代執(zhí)行;步驟三、由視點(diǎn)向每個采樣點(diǎn)發(fā)出光線,作為光線跟蹤的初始光線集合步驟四、按照傳統(tǒng)光線跟蹤的方法沿直線跟蹤當(dāng)前光線集合中的光線,直至其與 場景中其他物體相交或進(jìn)入非常數(shù)折射率介質(zhì)的邊界,若光線與場景中其他物體相交,則 根據(jù)傳統(tǒng)光線跟蹤的方法計算該光線上的能量,更新對應(yīng)采樣點(diǎn)的顏色;步驟五、跟蹤進(jìn)入非常數(shù)折射率介質(zhì)的光線,包括如下子步驟5. 1確定光線入射點(diǎn)和入射方向;5. 2確定光線所在的八叉樹節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)類型分別執(zhí)行步驟5. 3-5. 5 ;5. 3該八叉樹節(jié)點(diǎn)為非葉子節(jié)點(diǎn),則首先根據(jù)入射方向、入射點(diǎn)和節(jié)點(diǎn)的折射率梯 度確定光線方程,并由標(biāo)準(zhǔn)求交操作求取光線與該節(jié)點(diǎn)邊界的第一個交點(diǎn)和切線方向;5. 4該八叉樹節(jié)點(diǎn)為葉子節(jié)點(diǎn),且不與介質(zhì)邊界相交,獲得該節(jié)點(diǎn)對應(yīng)的各個空間 單元(四面體或體素),并逐個用標(biāo)準(zhǔn)求交操作求取光線與該空間單元的邊界和該葉子節(jié) 點(diǎn)邊界的合集的第一個交點(diǎn)和切線方向,直至光線從該葉子節(jié)點(diǎn)中射出;5. 5該八叉樹節(jié)點(diǎn)為葉子節(jié)點(diǎn),且與介質(zhì)邊界相交,獲得該節(jié)點(diǎn)對應(yīng)的各個空間單 元(四面體或體素),并逐個用標(biāo)準(zhǔn)求交操作求取光線與該空間單元的邊界和該葉子節(jié)點(diǎn) 邊界的合集的第一個交點(diǎn)和切線方向,直至光線從該葉子節(jié)點(diǎn)中射出或從介質(zhì)邊界射出;5. 6若光線從介質(zhì)邊界射出,本步驟結(jié)束,不然以上述獲得的交點(diǎn)和切線方向作為 光線的新入射點(diǎn)和入射方向,轉(zhuǎn)自4. 2迭代執(zhí)行;步驟六、轉(zhuǎn)至步驟四迭代執(zhí)行光線跟蹤過程。若迭代次數(shù)超過某預(yù)設(shè)值(發(fā)生全 反射),則中止光線跟蹤過程,將光線對應(yīng)采樣點(diǎn)顏色值賦為某預(yù)先設(shè)定的缺省值。對海市蜃樓現(xiàn)象中的光線跟蹤,按如下步驟實施步驟一、將視點(diǎn)附近的地球表面表達(dá)為若干相連的平面單元;步驟二、將每個上述平面單元沿地球半徑向外的方向拉伸成一個平截頭體,在海 市蜃樓現(xiàn)象中,通常認(rèn)為空氣的折射率是一個和海拔高度有關(guān)的量,因此在上述每個平截 頭體中介質(zhì)折射率梯度方向是不變的,始終沿地心與平面單元中心的連線方向。步驟三、由視點(diǎn)向每個采樣點(diǎn)發(fā)出光線,作為光線跟蹤的初始光線集合
步驟四、按照傳統(tǒng)光線跟蹤的方法沿直線跟蹤當(dāng)前光線集合中的光線,直至其與 場景中其他物體相交或進(jìn)入上述平截頭體,若光線與場景中其他物體相交,則根據(jù)傳統(tǒng)光 線跟蹤的方法計算該光線上的能量,更新對應(yīng)采樣點(diǎn)的顏色;步驟五、跟蹤進(jìn)入平截頭體的光線,包括如下子步驟5. 1確定光線入射點(diǎn)和入射方向;5. 2根據(jù)蜃景類型,入射點(diǎn)和入射方向確定折射平面和平截頭體中的光線方程;5. 3由標(biāo)準(zhǔn)求交操作求取光線與平截頭體的交點(diǎn)和光線在交點(diǎn)處的切線,作為光 線的新入射點(diǎn)和入射方向,轉(zhuǎn)至5. 2迭代執(zhí)行,若光線從介質(zhì)邊界射出,則轉(zhuǎn)步驟四迭代執(zhí) 行。上述技術(shù)方案中,對每條光線的跟蹤過程是相互獨(dú)立的,因此可以利用圖形處理 單元GPU并行處理。由于GPU上實現(xiàn)棧的結(jié)構(gòu)比較困難,為提高八叉樹的訪問效率,本發(fā)明 提出使用一種線性八叉樹的結(jié)構(gòu),將八叉樹存儲在由其葉子節(jié)點(diǎn)對應(yīng)的均勻網(wǎng)格結(jié)構(gòu)中, 并在均勻網(wǎng)格的每個單元存儲其所對應(yīng)葉子節(jié)點(diǎn)在八叉樹中的層次索引。在訪問該八叉樹 結(jié)構(gòu)時,首先根據(jù)點(diǎn)的位置確定其所在的均勻網(wǎng)格中的單元索引,然后訪問該單元中存儲 的層次索引并據(jù)此確定其所在的八叉樹節(jié)點(diǎn)和參數(shù)。
實施例在一臺配備2. 3GHz雙核CPU,2GB內(nèi)存,和NVIDIA的Geforce GTX 285圖形處理 單元的機(jī)器上實現(xiàn)了本發(fā)明的一個實施實例。該實例中的非常數(shù)折射率介質(zhì)是通過物理仿 真得到的分辨率為128x128x128的體數(shù)據(jù)。八叉樹建立時選擇的參數(shù)(見上述一般非常數(shù) 折射率介質(zhì)中的光線跟蹤實施方式中的步驟2. 2)分別是ε = 0.005,δ =0.01,八叉樹 索引建立后占用了 41. 9ΜΒ的存儲空間。虛擬場景由一個大理石材質(zhì)的桌子、一個金屬材質(zhì) 的架子,一個描述折射介質(zhì)邊界的球體和環(huán)境光構(gòu)成。在640x480的分辨率下通過本發(fā)明 的光線跟蹤方法獲得了虛擬場景的繪制結(jié)果,如附圖6所示。在上述配置和參數(shù)下,測量得到的平均繪制幀速率為12幀/秒,比在同一測試平 臺下用現(xiàn)有光線跟蹤方法獲得的幀率高出3倍左右。在上述同一測試平臺下比較了本發(fā)明方法與現(xiàn)有方法在常數(shù)梯度折射率介質(zhì)中 進(jìn)行光線跟蹤的結(jié)果,如附圖7所示。該實例中的虛擬場景有一個貼有黑白格問題的地板 和常數(shù)梯度折射率介質(zhì)構(gòu)成,用一個兔子形狀的幾何模型描述介質(zhì)邊界。在640x480的分 辨率下用本發(fā)明的光線跟蹤方法和現(xiàn)有方法分別獲得了虛擬場景的繪制結(jié)果。圖中(a)為本發(fā)明方法得到的繪制結(jié)果,平均幀速率為47. 1幀/秒;(b)為現(xiàn)有 方法得到的與本發(fā)明方法類似繪制質(zhì)量的結(jié)果,平均幀速率為4. 2幀/秒;(c)為現(xiàn)有方法 得到的與本發(fā)明方法類似繪制速率的結(jié)果,平均幀速率為46. 5幀/秒。由此實例可見,在 常數(shù)梯度折射率介質(zhì)中,本發(fā)明的光線跟蹤方法比現(xiàn)有方法在同等質(zhì)量下快10倍以上,而 在同等速率下,本發(fā)明的方法得到的結(jié)果質(zhì)量要遠(yuǎn)高于現(xiàn)有方法。用同一實例在不同折射率梯度下對比了本發(fā)明方法和現(xiàn)有方法的光線跟蹤時間, 如附圖8所示。其中使用現(xiàn)有方法時選擇的參數(shù)使得其獲得的繪制結(jié)果質(zhì)量與本發(fā)明方法 盡可能接近。由圖中曲線可見,隨著折射率梯度的增長,現(xiàn)有方法所用的時間呈線性的增 加,這是由于折射率梯度越大,光線路徑的彎曲也就越明顯,對應(yīng)的需要對光線進(jìn)行更細(xì)的
8分段才可以用現(xiàn)有方法得到較好的繪制結(jié)果。相反地,使用本發(fā)明方法,無需對參數(shù)進(jìn)行任 何調(diào)整,就可直接用常數(shù)梯度折射率介質(zhì)中的光線方程與介質(zhì)邊界進(jìn)行數(shù)值求交,所耗的 時間幾乎不受折射率梯度的影響。
權(quán)利要求
一種非常數(shù)折射率介質(zhì)中的光線跟蹤方法,其特征在于,包括如下步驟(1)獲得折射介質(zhì)的四面體網(wǎng)格和體素網(wǎng)格表達(dá)。(2)根據(jù)介質(zhì)折射率和梯度的空間變化建立空間八叉樹。(3)由視點(diǎn)向每個采樣點(diǎn)發(fā)出光線,作為光線跟蹤的初始光線集合。(4)按照傳統(tǒng)光線跟蹤的方法沿直線跟蹤當(dāng)前光線集合中的光線,直至其與場景中其他物體相交或進(jìn)入非常數(shù)折射率介質(zhì)的邊界,若光線與場景中其他物體相交,則根據(jù)傳統(tǒng)光線跟蹤的方法計算該光線上的能量,更新對應(yīng)采樣點(diǎn)的顏色。(5)跟蹤進(jìn)入非常數(shù)折射率介質(zhì)的光線。(6)轉(zhuǎn)至步驟(4)迭代執(zhí)行光線跟蹤過程。若迭代次數(shù)超過某預(yù)設(shè)值(發(fā)生全反射),則中止光線跟蹤過程,將光線對應(yīng)采樣點(diǎn)顏色值賦為某預(yù)先設(shè)定的缺省值。
2.根據(jù)權(quán)利要求1所述非常數(shù)折射率介質(zhì)中的光線跟蹤方法,其特征在于,所述步驟 (2)具體分成如下幾個子步驟(2. 1)根據(jù)用戶指定的八叉樹層數(shù)確定八叉樹的最底層節(jié)點(diǎn)構(gòu)成的網(wǎng)格,對每個網(wǎng)格, 獲得與其有重合部分的四面體或體素的列表。(2. 2)自底向上遞歸地合并八叉樹節(jié)點(diǎn),當(dāng)同一個節(jié)點(diǎn)下的八個子節(jié)點(diǎn)滿足下述兩個 條件時將其合并條件1 任一節(jié)點(diǎn)都不與處在介質(zhì)邊界的任何空間單元有重合部分;條件 2 所有節(jié)點(diǎn)對應(yīng)的空間單元內(nèi)的介質(zhì)折射率梯度的差別小于某用戶指定的閾值ε,或所 有節(jié)點(diǎn)對應(yīng)的空間單元內(nèi)的介質(zhì)折射率梯度的差別小于某用戶指定的閾值S。(2. 3)合并節(jié)點(diǎn)A的八個子節(jié)點(diǎn)Ai時,將所有子節(jié)點(diǎn)對應(yīng)的空間單元的并集關(guān)聯(lián)到節(jié) 點(diǎn)A上,并將節(jié)點(diǎn)A對應(yīng)的介質(zhì)折射率梯度設(shè)為其對應(yīng)的所有空間單元上的介質(zhì)折射率梯 度的平均。(2. 4)若本次未能合并任何節(jié)點(diǎn),或已經(jīng)達(dá)到八叉樹的根節(jié)點(diǎn),本步驟結(jié)束,否則轉(zhuǎn)至 2. 2迭代執(zhí)行。
3.根據(jù)權(quán)利要求1所述非常數(shù)折射率介質(zhì)中的光線跟蹤方法,其特征在于,所述步驟 (5)包括如下子步驟(5. 1)確定光線入射點(diǎn)和入射方向。(5. 2)確定光線所在的八叉樹節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)類型分別執(zhí)行步驟5. 3-5. 5。(5. 3)該八叉樹節(jié)點(diǎn)為非葉子節(jié)點(diǎn),則首先根據(jù)入射方向、入射點(diǎn)和節(jié)點(diǎn)的折射率梯度 確定光線方程,并由標(biāo)準(zhǔn)求交操作求取光線與該節(jié)點(diǎn)邊界的第一個交點(diǎn)和切線方向。(5. 4)該八叉樹節(jié)點(diǎn)為葉子節(jié)點(diǎn),且不與介質(zhì)邊界相交,獲得該節(jié)點(diǎn)對應(yīng)的各個空間單 元(四面體或體素),并逐個用標(biāo)準(zhǔn)求交操作求取光線與該空間單元的邊界和該葉子節(jié)點(diǎn) 邊界的合集的第一個交點(diǎn)和切線方向,直至光線從該葉子節(jié)點(diǎn)中射出。(5. 5)該八叉樹節(jié)點(diǎn)為葉子節(jié)點(diǎn),且與介質(zhì)邊界相交,獲得該節(jié)點(diǎn)對應(yīng)的各個空間單元 (四面體或體素),并逐個用標(biāo)準(zhǔn)求交操作求取光線與該空間單元的邊界和該葉子節(jié)點(diǎn)邊 界的合集的第一個交點(diǎn)和切線方向,直至光線從該葉子節(jié)點(diǎn)中射出或從介質(zhì)邊界射出。(5. 6)若光線從介質(zhì)邊界射出,本步驟結(jié)束,不然以上述獲得的交點(diǎn)和切線方向作為光 線的新入射點(diǎn)和入射方向,轉(zhuǎn)自4.2迭代執(zhí)行。
全文摘要
本發(fā)明公開了一種非常數(shù)折射率介質(zhì)中的光線跟蹤方法。該方法能快速跟蹤光線在常數(shù)梯度折射率介質(zhì)中,以及四面體或體素表達(dá)的一般性非常數(shù)折射率介質(zhì)中的傳輸路徑。該方法由預(yù)計算部分和實時光線跟蹤部分構(gòu)成,預(yù)計算部分建立一顆空間八叉樹,并將每個八叉樹節(jié)點(diǎn)與介質(zhì)邊界多邊形或描述介質(zhì)的四面體關(guān)聯(lián)起來。實時光線跟蹤部分是一個迭代過程,本發(fā)明具有效率高、精確程度好等特點(diǎn)可以直接用于真實感繪制,集成到現(xiàn)有的各種渲染工具中。
文檔編號G06T15/50GK101894390SQ201010214899
公開日2010年11月24日 申請日期2010年6月29日 優(yōu)先權(quán)日2010年6月29日
發(fā)明者任重, 周昆, 曹晨 申請人:浙江大學(xué)