两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

多光源下的全局光照繪制方法及裝置的制造方法_4

文檔序號:8340278閱讀:來源:國知局
軸向上的范圍獲得。
[0156] 例如,有一個三角形的幾何塊,三個頂點的坐標(biāo)分別為(1,0,0),(0, 1,0)和 (〇,〇, 1),則用于包裹這個三角形的軸對齊空間包圍盒就由點(〇,〇,〇)和(1,1,1)構(gòu)成,這 兩個點描述了軸對齊空間盒的斜對角,即三維空間中三角面片在每條軸上的最小坐標(biāo)和最 大坐標(biāo)。
[0157] 步驟402、確定子矩陣與幾何塊是否需要進行可見性測試。
[0158] 本實施例中,通過測試一個椎體空間包圍盒與一個軸對齊空間包圍盒在空間上是 否有重疊部分,即光線與三角面片有沒有重疊的部分來進行判斷。如果有重疊部分則確定 該光線被幾何塊所遮擋,與該光線對應(yīng)的子矩陣和幾何塊需要進行可見性測試。具體的計 算步驟包括:
[0159] 比較椎體空間包圍盒的中軸到軸對齊空間包圍盒的距離,如果這一距離不小于構(gòu) 成椎體空間包圍盒的兩個球體中的較大半徑,則確定為不存在重疊,在計算椎體空間包圍 盒對應(yīng)的子矩陣時不需要與軸對齊空間包圍盒包裹的幾何塊進行可見性測試;反之,如果 計算出的距離小于構(gòu)成椎體空間包圍盒的球體的半徑,則該子矩陣和幾何塊組成的對就需 要進行可見性測試。
[0160] 上述該距離的計算為椎體空間包圍盒與軸對齊空間包圍盒之間的最短距離。其定 義是要在軸對齊空間包圍盒的表面上找到某一個點,使得這點到椎體空間包圍盒的中軸線 段的距離最小,這就是兩個包圍盒之間的最短距離。如圖8所示,椎體空間包圍盒的中軸即 兩個球心的連線,將該中軸投影到軸對齊空間包圍盒距離該中軸最近的表面上,得到一條 投影線,則中軸與投影線之間的距離為兩個包圍盒之間的最短距離。
[0161] 例如,如圖9所示,Ll與L2是兩個光源塊,Pl是一個采樣點塊,Ql、Q2和Q3是三 個幾何塊。Pl與Ll組成的子矩陣與Q2和Q3需要進行可見性測試,Pl與L2組成的子矩陣 與Ql和Q2需要進行可見性測試。
[0162] 步驟403、對確定為需要進行可見性測試的子矩陣和幾何塊進行標(biāo)記。
[0163] 在應(yīng)用中,如果椎體空間包圍盒和軸對齊空間包圍盒在空間上沒有重疊部分,則 對應(yīng)的子矩陣產(chǎn)生的光線一定不會與對應(yīng)幾何塊中的任何面片相交,該子矩陣和幾何面片 塊不需要進行可見性測試,即通過可見性測試;反之,兩者需要進行可見性測試,本步驟中 對需要進行可見性測試的子矩陣和幾何塊進行標(biāo)記。
[0164] 步驟500、把子矩陣及對應(yīng)的幾何塊調(diào)入顯存或內(nèi)存中,然后對該子矩陣使用光割 技術(shù)計算子矩陣中各元素的值,即虛擬點光源對像素點的亮度貢獻值。
[0165] 本發(fā)明為基于光割技術(shù)的全局光照繪制方法。如圖IOa所示,該場景中存在四個 虛擬點光源分別標(biāo)注為1,2, 3, 4,針對每個需要繪制的采樣點,例如:像素對應(yīng)的場景采樣 點,基于蠻力的繪制方法是分別計算這四個虛擬點光源對該采樣點的貢獻并求和。光割是 一種利用大量虛擬點光源來繪制全局光照效果的技術(shù),通過合并對采樣點貢獻較小的光 源,來達到加速繪制的目的。使用光割技術(shù),當(dāng)一組虛擬點光源對某個采樣點的亮度貢獻值 較低時,則使用這組虛擬點光源的共同父節(jié)點來代替所有子節(jié)點求亮度貢獻值,這里亮度 貢獻值是指利用節(jié)點的位置、法向、材質(zhì)系數(shù)和光照亮度來求取子樹對采樣點的亮度貢獻 值。在實施光割之前,需要對場景中的虛擬點光源構(gòu)造出唯一的光樹。具體方法可以是根 據(jù)光源的強度,光的類型,朝向等屬性構(gòu)造二叉樹。每個虛擬點光源作為葉子節(jié)點,中間代 表節(jié)點可以根據(jù)光源的強度做隨機選取。
[0166] 圖IOa場景構(gòu)建完光樹之后,對于每個米樣點,從光樹的根節(jié)點作為光割的起始 開始遍歷,每次計算各個父節(jié)點代替各自的葉節(jié)點所產(chǎn)生的誤差,如果誤差大于設(shè)定的閾 值(如,2%的誤差閾值),則使用該節(jié)點的兩個子節(jié)點代替該節(jié)點,否則保留該節(jié)點在光割 中。當(dāng)所有的節(jié)點都在誤差要求之內(nèi)時對應(yīng)的光割作為最終選擇的光割。在圖IOb中,三 個光割圖中的粗線分別代表了場景中三個不同采樣點在光樹中選取的光割。光割的相關(guān)內(nèi) 容可以參照 Walter, B.,et al. , Lightcuts:a scalable approach to illumination. ACM Transactions on Graphics(TOG), 2005. 24(3) :p. 1098-1107,在此不再贊述。
[0167] 在本實施例中,步驟500所采用的光割技術(shù),指的是對每個采樣點塊和通過了可 見性測試的光源塊使用光割,每個光源塊生成一棵光樹,對采樣點塊中的每個采樣點在這 棵光樹上進行光割計算。
[0168] 步驟500具體包括:
[0169] 步驟501、使用Out-of-Core數(shù)據(jù)管理器將可見性為可見的子矩陣及對應(yīng)的幾何 塊調(diào)入到顯存或內(nèi)存中。
[0170] 可見性為可見包括可見性測試的結(jié)果為可見的虛擬點光源以及被標(biāo)記為需要進 行可見性測試的虛擬點光源。
[0171] 本實施例中,在計算某個子矩陣的元素時,所有與該子矩陣在前述步驟中被判斷 為存在重疊部分(相交)的幾何塊,都需要被調(diào)入一次,調(diào)入幾何塊的順序下面具體說明。
[0172] -種簡單的方法是按照幾何塊的序號調(diào)入。步驟100中已經(jīng)根據(jù)莫頓碼對幾何塊 進行了排序,如果計算出子矩陣1和幾何塊2、4、7、8相重疊,則在計算該子矩陣1時依次調(diào) 入幾何塊2、4、7、8。
[0173] 另一種方法通過優(yōu)化調(diào)入子矩陣和幾何塊的順序,來減少總的調(diào)入次數(shù),即減少 數(shù)據(jù)讀寫量(?ο)操作代價。具體地,把有重疊關(guān)系的子矩陣和幾何塊組成的節(jié)點,把由一 個節(jié)點到另一個節(jié)點的IO操作代價設(shè)為兩點之間的邊的權(quán)值,所有的節(jié)點和邊構(gòu)成圖。通 過求解遍歷圖中所有節(jié)點,但是經(jīng)過的路徑最短的一個路徑,來最小化IO操作代價。
[0174] 舉例說明:如圖11a、圖Ilb所示,如果在計算某個子矩陣a的過程中需要對某個 幾何塊B進行可見性測試,則把a和B作為一個子矩陣-幾何塊組合a-B,即節(jié)點a-B ;如果 計算a的過程中還需要對幾何塊C進行可見性測試,則把a-C也組成一個子矩陣-幾何塊 組合a-C。以此類推,把所有符合上述關(guān)系的子矩陣和幾何塊都組合起來,每個子矩陣-幾 何塊組合作為圖的一個節(jié)點,則節(jié)點之間的邊的權(quán)值為由一個節(jié)點移到另一個節(jié)點需要傳 輸?shù)臄?shù)據(jù)大小。同理,如果存在另一個子矩陣d,計算子矩陣d的過程中需要對幾何塊B進 行可見性測試,則構(gòu)成的組合是d-B。
[0175] 在實際的應(yīng)用中,由于顯存(或者內(nèi)存)是大于單個子矩陣或者幾何塊的,所以會 有一個緩沖區(qū),可以同時在顯存(或者內(nèi)存)中存儲多個子矩陣和幾何塊,本實施例為了方 便說明,假設(shè)顯存(或者內(nèi)存)可以同時存儲兩個子矩陣和一個幾何塊。
[0176] 如圖Ila所示,如果按照幾何塊序號的方法進行調(diào)入,那遍歷圖中節(jié)點的次序為 a-B,a-C,d-B,進行的IO操作為:1、調(diào)入a,2、調(diào)入B,遍歷a_B,3、調(diào)出B調(diào)入C,遍歷a-C, 4、調(diào)入d,5、調(diào)出C調(diào)入B,遍歷d-B。共需要5次IO操作。
[0177] 如圖Ilb所示,如果按照遍歷圖的方法進行調(diào)入,則遍歷圖中節(jié)點的次序為a-B, (1-13,3-(:,進入的10操作為 :1、調(diào)入3,2、調(diào)入13,遍歷3-13,3、調(diào)入(1,遍歷(1-13,4、調(diào)出13調(diào) 入C,遍歷a-C,由于a-B到d-B的邊的權(quán)值較小,因此本方法中優(yōu)先從a-B轉(zhuǎn)到d-B。這樣 就只需要4次IO操作,比前一種方法減少了一次。
[0178] 實際應(yīng)用中,由于外存可以容納更多的子矩陣和幾何塊,圖遍歷的方法可以比 按序號順序調(diào)入的方法快10倍以上,極大的提高了效率。比如本文中圖3的場景,使用 1600x1200像素的圖片分辨率,有3200萬點光源和1. 17億的幾何面片,共有18GB的幾何和 虛擬點光源數(shù)據(jù),采用遍歷圖的方法來調(diào)入能夠明顯提高效率。
[0179] 步驟502、基于光割技術(shù)對調(diào)入的子矩陣及對應(yīng)的幾何塊進行可見性測試。
[0180] 本步驟中調(diào)入被標(biāo)記為需要進行可見性測試的幾何塊,每調(diào)入一塊進行一次可見 性測試,把確定為被遮擋的光線標(biāo)記為不可見。
[0181] 可見性測試包括若干種計算方法,本實施例中所采用的算法為:假設(shè)椎體空間包 圍盒中包裹了 X條光線,軸對齊空間包圍盒包裹了 y個三角面片。對于每條光線,分別與y 個三角面片進行求交運算,即檢測該光線與各三角面片是否相交,如果相交,則判斷為該光 線不可見,該光線一端的虛擬點光源對該光線另一端的采樣點的貢獻為O ;如果不相交,則 判斷為該光線可見,即通過了可見性測試。
[0182] 步驟503、計算上一步驟中確定為可見的光線對應(yīng)的虛擬點光源對采樣點的亮度 貢獻值。
[0183] 具體地,可以根據(jù)虛擬點光源在某一位置的材質(zhì)屬性、衰減屬性、可見性以及光強 度來計算亮度貢獻值。例如,根據(jù)式(1)計算亮度貢獻值:
[0184]
【主權(quán)項】
1. 一種多光源下的全局光照繪制方法,其特征在于,用于對包含若干個物體的場景進 行全局光照繪制,所述物體由幾何面片來描述,所述方法由具有內(nèi)存并耦接至外存的系統(tǒng) 來執(zhí)行,所述方法包括: 對所述場景中的幾何面片和虛擬點光源分別基于位置信息進行處理,得到第一數(shù)量的 幾何塊以及第二數(shù)量的光源塊; 以所述場景中的所有采樣點為行坐標(biāo),以所有虛擬點光源為列坐標(biāo)建立光傳遞矩陣; 將所述光傳遞矩陣劃分為所述第二數(shù)量的列,每一列對應(yīng)一個所述光源塊,將所述光 傳遞矩陣劃分為第三數(shù)量的行,每一行與每一列相交構(gòu)成為一個子矩陣,所述第三數(shù)量為 所述采樣點的聚類數(shù)量; 將所述子矩陣和幾何塊從所述外存調(diào)入到所述內(nèi)存中,根據(jù)所述虛擬點光源的材質(zhì) 屬性、衰減屬性、可見性以及光強度,計算對應(yīng)子矩陣中的虛擬點光源對采樣點的亮度貢獻 值; 將可見性為可見的所述虛擬點光源對采樣點的亮度貢獻值累加到對應(yīng)的采樣點上,并 輸出所述采樣點的總亮度。
2. 根據(jù)權(quán)利要求1所述的多光源下的全局光照繪制方法,其特征在于,所述對所述場 景中的幾何面片和虛擬點光源分別基于位置信息進行處理,得到第一數(shù)量的幾何塊以及第 二數(shù)量的光源塊,包括: 分別計算所述幾何面片的重心和所述虛擬點光源的重心在x軸、y軸和z軸上
當(dāng)前第4頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
临安市| 蒙阴县| 班玛县| 北碚区| 句容市| 三穗县| 大宁县| 华阴市| 平阴县| 宁强县| 同德县| 溆浦县| 樟树市| 阳信县| 乌鲁木齐市| 桐柏县| 保定市| 临海市| 廉江市| 咸阳市| 焦作市| 三河市| 灵石县| 额尔古纳市| 广河县| 法库县| 卓资县| 临沧市| 安庆市| 凤山县| 屏山县| 通城县| 颍上县| 贡嘎县| 望江县| 绥中县| 徐汇区| 阿勒泰市| 潜江市| 洪雅县| 井研县|