專利名稱:動態(tài)場景中一種快速求交算法的制作方法
技術領域:
本發(fā)明涉及一種求交算法,尤其是一種計算機圖像渲染技術中的動態(tài)場景的求交算法。
背景技術:
空間求交算法是圖像渲染算法中的核心。為了提高求交速度,往往采用加速結構。目前,用于動態(tài)場景求交的加速結構主要有兩種,一種是將場景按空間劃分,如 kd-trees (KD-Tree 一種由二叉搜索樹推廣而來的用于多維檢索的樹的結構形式,K即為空間的維數(shù))、octrees和grids ;另一種是按物體劃分的,如BVHs (bounding volume hierarchies)禾口 BVHs 的各禾中變體(bounding interval hierarchies、s_kd trees 禾口 b_kd trees等)。其中,kd-trees被認為是靜態(tài)場景渲染中遍歷效率最高的加速結構,但其建樹時間較長,如不作改進則無法完成動態(tài)場景的渲染。這是因為靜態(tài)場景渲染時,建樹的過程被認為是預處理,其開銷并不計算在渲染時間內(nèi);而動態(tài)場景中物體的運動導致加速結構發(fā)生變化,需要重新建樹。因此,用kd-trees渲染動態(tài)場景的首要任務是大大減少建樹的時間開銷。Kd-trees中快速更新樹的方法主要有1)運動分解。將運動分解為仿射運動與殘余運動;對仿射運動采用坐標變化,而殘余運動用模糊kd-tree處理的方法,適用于物體沒有破裂、后續(xù)的位置都是事先已知的運動;2)采用多層kd-tree。為每個物體創(chuàng)建一個包圍盒,在包圍盒的基礎上創(chuàng)建kd-tree,每次只需要重建上層的kd-tree,而不需要重建整個的kd-tree ;3)并行構建。在多核架構下的kd-tree的并行構建以減少創(chuàng)建時間。上述的快速更新算法,運動分解和多層kd-tree方法受到場景中物體運動方式的限制,而實際的電影和電腦游戲場景中,物體的運動方式可能會是多種多樣,針對特定的運動方式來更新加速結構,其使用范圍往往受到限制。若完全更新則不存在這種限制,如并行構建,這種方法沒有考慮到各種運動方式的特點。而現(xiàn)實中運動場景中的運動物體相對整個場景來說,往往是一小部分,大部分物體是靜態(tài)的,完全更新法存在很大的浪費。本發(fā)明提供一種新的技術方案以解決上述問題。
發(fā)明內(nèi)容
本發(fā)明的目的是針對現(xiàn)有技術存在的不足,提供一種提高算法速度的動態(tài)場景中一種快速求交算法。為實現(xiàn)上述目的,本發(fā)明動態(tài)場景中一種快速求交算法可采用以下技術方案動態(tài)場景中一種快速求交算法,包括以下步驟(1)場景數(shù)據(jù)劃分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),并采用KD-tree作為加速結構;(2)構建對應靜態(tài)數(shù)據(jù)的靜態(tài)KD-tree和對應動態(tài)數(shù)據(jù)的動態(tài)KD-tree,如果場景中運動的物體只有一個,就建立一棵動態(tài)KD-tree和一棵靜態(tài)KD-tree ;如果場景中運動物體有多個,需要每一個運動物體建立對應的動態(tài)KD-tree,所有靜止的物體只需要建立一棵靜態(tài) KD-tree ;(3)產(chǎn)生初始光線;(4)光線遍歷靜態(tài)KD-tree,記光線與三角片的交點newol,交點與光源的距離為 tl ;(5)對光線進行坐標變換,然后用變換后的光線遍歷動態(tài)KD-tree,記光線與三角片的交點newo2,交點與光源的距離為t2 ;(6)先判斷交點newol對光源的可見性,如果newol對光源不可見,則不需要判斷 newo2對光源的可見性,反之,則需要判斷newo2對光源的可見性;(7)如果tl大于等于t2,則用neW02點的相關信息代替newol的相關信息,并且對neWo2的相關信息進行逆坐標變換;(8)根據(jù)運動場景的變化,更新變換矩陣,重復上述過程。本發(fā)明動態(tài)場景中一種快速求交算法可以顯著提高算法速度,減少光線求交的時間。
具體實施例方式下面結合具體實施例,進一步闡明本發(fā)明,應理解這些實施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領域技術人員對本發(fā)明的各種等價形式的修改均落于本申請所附權利要求所限定的范圍。1.算法描述(1)場景數(shù)據(jù)劃分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),并采用KD-tree作為加速結構。(2)構建對應靜態(tài)數(shù)據(jù)的靜態(tài)KD-tree和對應動態(tài)數(shù)據(jù)的動態(tài)KD-tree,如果場景中運動的物體只有一個,就建立一棵動態(tài)KD-tree和一棵靜態(tài)KD-tree ;如果場景中運動物體有多個,需要每一個運動物體建立對應的動態(tài)KD-tree,所有靜止的物體只需要建立一棵靜態(tài) KD-tree ο(3)產(chǎn)生初始光線。(4)光線遍歷靜態(tài)KD-tree,記光線與三角片的交點newol,交點與光源的距離為 tl。(5)對光線進行坐標變換,然后用變換后的光線遍歷動態(tài)KD-tree,記光線與三角片的交點newo2,交點與光源的距離為t2。(6)先判斷交點newol對光源的可見性,如果newol對光源不可見,則不需要判斷 newo2對光源的可見性,反之,則需要判斷newo2對光源的可見性;因為交點newol和neW02 是同一條光線分別對靜態(tài)KD-tree和動態(tài)KD-tree遍歷的結果;因此newol被擋住,newo2 也對光源不可見。(7)如果tl大于等于t2,則用neW02點的相關信息代替newol的相關信息,并且對neW02的相關信息進行逆坐標變換。本步驟中的相關信息包括newol點、newo2點的空間位置,反射系數(shù)、吸收系數(shù)以及色彩信息。(8)根據(jù)運動場景的變化,更新變換矩陣,重復上述過程。2.實驗結果實驗的硬件環(huán)境是CPU為 Intel CoreTM2,1. 86GHz ;GPU 為 NVIDIA Geforce260GTX。實驗場景為Kitchen場景。原始的場景數(shù)據(jù)來源于BART項目。與傳統(tǒng)的將場景完全重建
相比,速度有明顯的提高。
權利要求
1.動態(tài)場景中一種快速求交算法,其特征在于包括以下步驟(1)場景數(shù)據(jù)劃分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),并采用KD-tree作為加速結構;(2)構建對應靜態(tài)數(shù)據(jù)的靜態(tài)KD-tree和對應動態(tài)數(shù)據(jù)的動態(tài)KD-tree,如果場景中運動的物體只有一個,就建立一棵動態(tài)KD-tree和一棵靜態(tài)KD-tree ;如果場景中運動物體有多個,需要每一個運動物體建立對應的動態(tài)KD-tree,所有靜止的物體只需要建立一棵靜態(tài) KD-tree ;(3)產(chǎn)生初始光線;(4)光線遍歷靜態(tài)KD-tree,記光線與三角片的交點newol,交點與光源的距離為tl;(5)對光線進行坐標變換,然后用變換后的光線遍歷動態(tài)KD-tree,記光線與三角片的交點newo2,交點與光源的距離為t2 ;(6)先判斷交點newol對光源的可見性,如果newol對光源不可見,則不需要判斷 newo2對光源的可見性,反之,則需要判斷newo2對光源的可見性;(7)如果tl大于等于t2,則用neW02點的相關信息代替newol的相關信息,并且對 newo2的相關信息進行逆坐標變換;(8)根據(jù)運動場景的變化,更新變換矩陣,重復上述過程。
2.如權利要求1所述的動態(tài)場景中一種快速求交算法,其特征在于所述步驟(7)中的相關信息包括newol點、neW02點的空間位置,反射系數(shù)、吸收系數(shù)以及色彩信息。
全文摘要
本發(fā)明公開動態(tài)場景中一種快速求交算法,通過將場景數(shù)據(jù)劃分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),采用KD-tree作為加速結構,構建對應靜態(tài)數(shù)據(jù)的靜態(tài)KD-tree和對應動態(tài)數(shù)據(jù)的動態(tài)KD-tree,采用坐標變換的方法更新動態(tài)部分的加速結構,而保持靜態(tài)部分不變。而在探測光線求交時,同時遍歷兩部分加速結構。該方法可以顯著提高算法速度,減少光線求交的時間。
文檔編號G06T1/00GK102184517SQ20111011679
公開日2011年9月14日 申請日期2011年5月6日 優(yōu)先權日2011年5月6日
發(fā)明者張健, 沈衛(wèi)康, 焦良葆, 王少東, 陳瑞 申請人:南京工程學院