国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種快速的射線追蹤方法及系統(tǒng)與流程

      文檔序號:12303859閱讀:1201來源:國知局
      一種快速的射線追蹤方法及系統(tǒng)與流程

      本發(fā)明屬于射線追蹤技術(shù)領(lǐng)域,更具體地,涉及一種快速的射線追蹤方法及系統(tǒng)。



      背景技術(shù):

      射線追蹤基于幾何光學原理,通過模擬射線的傳播路徑來確定反射、折射和陰影等。它是一種被廣泛用于移動通信和個人通信環(huán)境中的預測無線電波傳播特性的技術(shù),其原理是:當電磁波波長與地表或建筑物的尺寸相比足夠小時,電磁波的傳播可以用幾何光學的直線傳播來近似。因此該技術(shù)是一種有效的波場近似建模方法,它在高頻電波傳播預測方面極其重要。此外,射線追蹤技術(shù)也是一項極為復雜的用于創(chuàng)造真實事物和場景的渲染技術(shù),可以用來獲取逼真的圖像效果。該技術(shù)應用于視覺工業(yè),同時也被應用于創(chuàng)造3d模型。

      射線追蹤技術(shù)通常采用三角形面元建模將射線方程與目標曲面函數(shù)聯(lián)立求解的問題近似轉(zhuǎn)化為射線方程與三角形面元求交的問題,在射線追蹤技術(shù)里面,每一條射線要和每一個三角形面元進行求交運算,此外,每一條射線產(chǎn)生的反射、繞射等都會繼續(xù)迭代運算。導致射線追蹤計算量很大,計算效率很低,此外,隨著劃分的目標面元越小,計算量也急劇增加,為了解決射線追蹤里面線面求交的時間問題,有必要尋找一種更為快速的線面求交算法。



      技術(shù)實現(xiàn)要素:

      針對現(xiàn)有技術(shù)的以上缺陷或改進需求,本發(fā)明的目的在于提供了一種快速的射線追蹤方法及系統(tǒng),由此解決現(xiàn)有的射線追蹤計算量很大,計算效率很低的技術(shù)問題。

      為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種快速的射線追蹤方法,包括如下步驟:

      s1、對于每個三角形面元,構(gòu)造能夠包含三角形面元的球形,若入射射線在球形外,則排除該球形所包含的三角形面元,將保留下來的三角形面元確定為初始三角形面元集;

      s2、過入射射線作兩個互不平行的平面,記為平面1與平面2,排除初始三角形面元集中不與平面1相交的三角形面元,然后再排除不與平面2相交的三角形面元,將保留下來的三角形面元確定為目標三角形面元集;

      s3、對于目標三角形面元集中的每個三角形面元,采用平行投影將三角形面元中的三個頂點投影至目標二維平面中,判斷入射射線與目標二維平面的交點是否在投影三角形內(nèi),其中,投影三角形是由三角形面元中的三個頂點在目標二維平面中的三個投影點所確定的三角形;

      s4、若入射射線與目標二維平面的交點在投影三角形內(nèi),則入射射線與形成投影三角形的目標三角形面元相交,獲取入射射線與目標三角形面元交點的交點數(shù)據(jù),在所有交點中,選取與觀測點最近的交點作為目標點,根據(jù)目標點數(shù)據(jù)與入射射線求出反射射線,再將反射射線作為新的入射射線繼續(xù)追蹤,形成遞歸,從而實現(xiàn)射線軌跡追蹤,其中,觀測點為入射射線的起點。

      優(yōu)選地,步驟s1具體包括如下子步驟:

      s1.1、對于每個三角形面元,以三角形面元的最大邊長lm為半徑,三角形面元的任意頂點q0為球心,旋轉(zhuǎn)形成包含三角形面元的球形q;

      s1.2、建立三維直角坐標系o-xyz,假定三角形面元與入射射線qp的交點u在三角形面元最大邊長的一頂點上,以三角形面元最大邊長的另一頂點q0為球心,假定三角形面元最大邊長恰好垂直于入射射線qp,即uq0與qp垂直,此時為入射射線與三角形相交情況,球心q0距離入射射線為最遠距離lm,過q0作與平面yoz平行的直線h0q0,h0q0與入射射線qp交點為h0,則在h0q0與op平行時,h0q0取最大值r1=lm/sin(sita),其中,sita表示∠qpo;

      s1.3、排除由所有三角形面元形成的h0q0超過邊界值r1的三角形面元,將保留下來的三角形面元確定為初始三角形面元集。

      優(yōu)選地,步驟s3具體包括如下子步驟:

      s3.1、將入射射線qp的從q到p的方向作為觀測方向,將q作為觀測點,以三角形面元的三個頂點v0,v1,v2為起點,沿著觀測方向作3條互相平行的射線,則入射射線qp平行于3條互相平行的射線構(gòu)成的三棱柱;

      s3.2、以yoz平面截取三棱柱與入射射線qp得到三角形v0'v1'v2'以及入射射線qp與yoz平面的交點p,其中,三角形v0'v1'v2'由三角形面元中的三個頂點v0,v1,v2在yoz平面中的三個投影點v0',v1',v2'所構(gòu)成;

      s3.2、判斷p是否在三角形v0'v1'v2'內(nèi)。

      按照本發(fā)明的另一方面,提供了一種快速的射線追蹤系統(tǒng),包括:

      第一級拒絕檢測模塊,用于對于每個三角形面元,構(gòu)造能夠包含三角形面元的球形,若入射射線在球形外,則排除該球形所包含的三角形面元,將保留下來的三角形面元確定為初始三角形面元集;

      第二級拒絕檢測模塊,用于過入射射線作兩個互不平行的平面,記為平面1與平面2,排除初始三角形面元集中不與平面1相交的三角形面元,然后再排除不與平面2相交的三角形面元,將保留下來的三角形面元確定為目標三角形面元集;

      線面相交檢測模塊,用于對于目標三角形面元集中的每個三角形面元,采用平行投影將三角形面元中的三個頂點投影至目標二維平面中,判斷入射射線與目標二維平面的交點是否在投影三角形內(nèi),其中,投影三角形是由三角形面元中的三個頂點在目標二維平面中的三個投影點所確定的三角形;

      軌跡追蹤模塊,用于在入射射線與目標二維平面的交點在投影三角形內(nèi)時,則入射射線與形成投影三角形的目標三角形面元相交,獲取入射射線與目標三角形面元交點的交點數(shù)據(jù),在所有交點中,選取與觀測點最近的交點作為目標點,根據(jù)目標點數(shù)據(jù)與入射射線求出反射射線,再將反射射線作為新的入射射線繼續(xù)追蹤,形成遞歸,從而實現(xiàn)射線軌跡追蹤,其中,觀測點為入射射線的起點。

      優(yōu)選地,所述第一級拒絕檢測模塊包括:

      第一繪圖模塊,用于對于每個三角形面元,以三角形面元的最大邊長lm為半徑,三角形面元的任意頂點q0為球心,旋轉(zhuǎn)形成包含三角形面元的球形q;

      閾值確定模塊,用于建立三維直角坐標系o-xyz,假定三角形面元與入射射線qp的交點u在三角形面元最大邊長的一頂點上,以三角形面元最大邊長的另一頂點q0為球心,假定三角形面元最大邊長恰好垂直于入射射線qp,即uq0與qp垂直,此時為入射射線與三角形相交情況,則球心q0距離入射射線為最遠距離lm,過q0作與平面yoz平行的直線h0q0,h0q0與入射射線qp交點為h0,則在h0q0與op平行時,h0q0取最大值r1=lm/sin(sita),其中,sita表示∠qpo;

      篩選模塊,用于排除由所有三角形面元形成的h0q0超過邊界值r1的三角形面元,將保留下來的三角形面元確定為初始三角形面元集。

      優(yōu)選地,所述線面相交檢測模塊包括:

      第二繪圖模塊,用于將入射射線qp的從q到p的方向作為觀測方向,將q作為觀測點,以三角形面元的三個頂點v0,v1,v2為起點,沿著觀測方向作3條互相平行的射線,則入射射線qp平行于3條互相平行的射線構(gòu)成的三棱柱;

      第二繪圖模塊,用于以yoz平面截取三棱柱與入射射線qp得到三角形v0'v1'v2'以及入射射線qp與yoz平面的交點p,其中,三角形v0'v1'v2'由三角形面元中的三個頂點v0,v1,v2在yoz平面中的三個投影點v0',v1',v2'所構(gòu)成;

      判斷模塊,用于判斷p是否在三角形v0'v1'v2'內(nèi)。

      總體而言,本發(fā)明方法與現(xiàn)有技術(shù)方案相比,能夠取得下列有益效果:

      (1)本發(fā)明先初步鎖定與射線相交的范圍,再較為精確的鎖定,最后對少量面元進行線面求交計算,雖然算法復雜度依次增加,但是越到后面,面元的數(shù)量越少,需要進行計算的面元數(shù)量大大減少,因此,本發(fā)明可以在保證不影響精確度的情況下,實現(xiàn)射線追蹤的加速。

      (2)本發(fā)明在確定初始三角形面元集時,直接以平行線h0q0的最大值為臨界閾值條件進行初步的篩選,減少了乘法次數(shù),提高了計算速度。

      (3)本發(fā)明在確定目標三角形面元集時,根據(jù)與射線相交的面元必定與過此射線的2個互不平行的平面相交的思想,進一步簡化了計算復雜度。

      (4)在線面相交計算中,將3維空間線面相交計算轉(zhuǎn)化為二維空間點面計算,此外,利用射線的方向性與一端有限性來彌補二維相交計算與三維空間計算的差距,避免了3維逆矩陣求解,大大降低了算法復雜度,提高了射線追蹤速度。

      附圖說明

      圖1為本發(fā)明實施例公開的一種快速的射線追蹤方法的流程示意圖;

      圖2為本發(fā)明實施例公開的一種球包含三角形,射線在球邊界時的示意圖;

      圖3為本發(fā)明實施例公開的一種h0q0的極大值與uq0的極大值之間關(guān)系的示意圖;

      圖4為本發(fā)明實施例公開的一種將三維空間的射線與三角形的關(guān)系通過三棱柱轉(zhuǎn)化為平面上三角形與點的關(guān)系的示意圖;

      圖5為本發(fā)明實施例公開的另一種將三維空間的射線與三角形的關(guān)系通過三棱柱轉(zhuǎn)化為平面上三角形與點的關(guān)系的示意圖。

      具體實施方式

      為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。

      本發(fā)明要從眾多三角形面元中計算出與射線相交的面元,首先采用第一級拒絕檢測算法排除遠離射線的三角形面元,初步鎖定范圍;再采用較為精確的拒絕檢測算法進一步排除,精確鎖定范圍;對剩下少量的面元,采用平行投影將三維空間中線面相交計算轉(zhuǎn)化到二維平面中點是否在三角形內(nèi)的計算上。先初步鎖定與射線相交的范圍,再較為精確的鎖定,最后對少量面元進行線面求交計算,雖然算法復雜度依次增加,但是越到后面,面元的數(shù)量越少。可以在保證不影響精確度的情況下,實現(xiàn)射線追蹤的加速。

      其中,在第一級拒絕檢測中,以三角形任意頂點為球心,最大邊為半徑的球必定包含了此三角形,即射線與三角形相交必定先與此球相交;在第二級拒絕檢測中,所述2個平面是任意過射線且互不平行的2個平面,三角形與射線相交必定先與2平面相交;在線面相交計算中,將3維空間線面相交計算轉(zhuǎn)化為二維空間點面計算,此外,利用射線的方向性與一端有限性來彌補二維相交計算與三維空間計算的差距。

      通常以原坐標系的原點到觀測點的方向為x軸建立新坐系,一般在yoz平面假設像素點矩陣,并以觀測點為起點,到各個像素點的方向為觀測射線方向,進行正式的射線追蹤。

      對物體表面進行三角形面元劃分,由物體內(nèi)指向物體外為三角形面元的法向量方向,首先計算觀測向量與三角形法向量的點乘符號,如果為負,就可以判斷出三角形對觀測點來說是可見的,排除不可見面元,再對可見面元采用本發(fā)明的方法進行判斷。

      如圖1所示為本發(fā)明實施例公開的一種快速的射線追蹤方法的流程示意圖,在圖1所示的方法中包括以下步驟:

      s1、第一級拒絕檢測:對于每個三角形面元,構(gòu)造能夠包含三角形面元的球形,若入射射線在球形外,則排除該球形所包含的三角形面元,將保留下來的三角形面元確定為初始三角形面元集;

      優(yōu)選地,步驟s1具體包括如下子步驟:

      s1.1、對于每個三角形面元,以三角形面元的最大邊長lm為半徑,三角形面元的任意頂點q0為球心,旋轉(zhuǎn)形成包含三角形面元的球形q;

      s1.2、建立三維直角坐標系o-xyz,假定三角形面元與入射射線qp的交點u在三角形面元最大邊長的一頂點上,以三角形面元最大邊長的另一頂點q0為球心,假定三角形面元最大邊長恰好垂直于入射射線qp,即uq0與qp垂直,此時為入射射線與三角形相交情況,球心q0距離入射射線為最遠距離lm,過q0作與平面yoz平行的直線h0q0,h0q0與入射射線qp交點為h0,則在h0q0與op平行時,h0q0取最大值r1=lm/sin(sita),其中,sita表示∠qpo;

      s1.3、排除由所有三角形面元形成的h0q0超過邊界值r1的三角形面元,將保留下來的三角形面元確定為初始三角形面元集。

      以圖2為例說明步驟s1的一種優(yōu)選的具體實現(xiàn)方式為:

      如圖2所示,在第一級拒絕檢測,事先計算出三角形面元的三邊長l1,l2,l3,保存其最大值為lm,取三角形任意頂點為球心(假定最大邊上的頂點),lm為半徑旋轉(zhuǎn)形成球,此球包含了三角形面元,如果射線與某一個三角形面元相交,那么射線必定通過此三角形面元形成的球,如果射線在球外,那么射線就不可能與三角形面元相交,直接排除不與射線相交的三角形面元,找出合適的邊界值即可做出判定,圖2恰好是邊界情況,抽取圖2的部分參數(shù),如圖3所示,此時為邊界情況,假定三角形面元與射線的交點u在最大邊長的一頂點上,以三角形最大邊長的另一頂點為球心q0,假定此時三角形最大邊長恰好垂直于射線,在相交情況下,此時球心距離射線最遠為lm,uq0與qp垂直,h0q0與yoz平面平行,當h0q0與op平行時,h0q0有最大值r1,r1=lm/sin(sita),因此h0q0超過r1的面元不可能與射線相交,立即排除。即間接判斷h0q0的距離取代球心到射線的距離,然后進一步取代,用h0,q0的坐標分量差來取代其距離,此外,適當情況下直接用lm近視替代r1。

      在本發(fā)明實施例中,構(gòu)造的能夠包含三角形面元的球形,在理論上球形越小越好,因此,球心不限于以上舉例中的三角形面元的頂點作為球心,也可以是三角形的幾何中心為球心,具體采用何種方式,本發(fā)明實施例不作唯一性限定。

      s2、第二級拒絕檢測:過入射射線作兩個互不平行的平面,記為平面1與平面2,排除初始三角形面元集中不與平面1相交的三角形面元,然后再排除不與平面2相交的三角形面元,將保留下來的三角形面元確定為目標三角形面元集;

      其中,第二級拒絕檢測的基本思想是:假定某一條射線,過此射線作2個互不平行的平面(記為平面1與平面2),那么,三角形面元與射線相交必定與通過該射線的平面1與2相交,在無數(shù)三角形面元中,首先判斷三角形面元是否與平面1相交,排除不相交的面元,再判斷三角形面元是否與平面2相交,排除不與平面2相交的面元。

      通過第一級拒絕檢測和第二級拒絕檢測可以排除一大部分不符合條件的三角形面元,具體實現(xiàn)包括以下步驟:

      步驟一、假設此時的觀測點q,此時在yoz平面要觀測的像素點為p,那么觀測方向d=p→q,觀測射線方程為:m(t)=q+t*d,某三角形面元的任意一頂點為q0,過q0作平行于yoz平面的平面,平面與觀測射線m(t)相交于h0。

      步驟二、先求解h0的坐標分量y,然后計算h0的y值與三角形頂點q0的y值之差d,如果d的絕對值大于此三角形的r1,直接排除,如果在允許范圍之內(nèi),繼續(xù)求解h0的坐標分量z值,同理計算h0的z值與三角形頂點q0的z值之差d,如果d的絕對值大于此三角形的r1,直接排除。循環(huán)里面只有1到2次乘法,其余乘法可以提到循環(huán)之外,算法復雜度優(yōu)于二級拒絕檢測。

      步驟三,此時的觀測點q,此時在yoz平面要觀測的像素點為p,在yoz平面取坐標原點o,上述3點構(gòu)成的平面1必定過射線d=p→q,求取平面1的法向量f,如果三角形的三個頂點分布于平面1的同側(cè),即三角形不與平面1相交,則直接排除,以法向量f,射線d構(gòu)造平面2,如果三角形的三個頂點分布于平面2的同側(cè),則直接排除此三角形面元。

      s3、一級線面相交計算:對于目標三角形面元集中的每個三角形面元,采用平行投影將三角形面元中的三個頂點投影至目標二維平面中,判斷入射射線與目標二維平面的交點是否在投影三角形內(nèi),其中,投影三角形是由三角形面元中的三個頂點在目標二維平面中的三個投影點所確定的三角形;

      優(yōu)選地,步驟s3具體包括如下子步驟:

      s3.1、將入射射線qp的從q到p的方向作為觀測方向,將q作為觀測點,以三角形面元的三個頂點v0,v1,v2為起點,沿著觀測方向作3條互相平行的射線,則入射射線qp平行于3條互相平行的射線構(gòu)成的三棱柱;

      s3.2、以yoz平面截取三棱柱與入射射線qp得到三角形v0'v1'v2'以及入射射線qp與yoz平面的交點p,其中,三角形v0'v1'v2'由三角形面元中的三個頂點v0,v1,v2在yoz平面中的三個投影點v0',v1',v2'所構(gòu)成;

      s3.2、判斷p是否在三角形v0'v1'v2'內(nèi)。

      以圖4與圖5為例說明步驟s3的一種優(yōu)選的具體實現(xiàn)方式為:

      通過以上2級拒絕檢測,已經(jīng)精確鎖定范圍。待定三角形面元都在射線附近,此處不用傳統(tǒng)的三維線面相交計算,而采用平行投影將其轉(zhuǎn)化為二維空間來計算,這樣避免了3階矩陣求逆。如圖4所示,假定觀測方向qp,觀測點q,某一三角形面元k的三頂點v0,v1,v2,以三角形的三個頂點為起點,觀測方向qp為方向,可得3條互相平行的射線,三條射線構(gòu)成空間的三棱柱,觀測射線qp必定平行于三棱柱,如果射線qp與剛才的三角形k不相交,那么觀測射線在三棱柱外面,平面yoz截取三棱柱與射線qp,產(chǎn)生一個三角形v0'v1'v2'與一個在三角形外的點p。

      其中,投影點的獲取方式為:觀測點q,像素點p,觀測方向d=p→q,假定某三角形面元的三個頂點為v0,v1和v2,以v0為起點,以d為方向的射線方程為v0+k0*d,射線與yoz平面相交于v0',以v1為起點,以d為方向的射線方程為v1+k1*d,射線與yoz平面相交與v1',同理v2投影為v2',q投影為點p。在yoz平面上的三角形的頂點v0',v1',v2'構(gòu)成2個向量e1=v1'-v0',e2=v2'-v0',假設u,v是e1和e2的權(quán)重,以v0'為起點的向量pp=p-v0'可以表示為u*e1+v*e2,聯(lián)立求解u,v,當u>=0,v>=0且u+v<=1時,點p在三角形v0'v1'v2'內(nèi),說明線面相交,否則不相交。而三維空間線面相交判斷條件為u>=0,v>=0,u+v<=1且t>0,上面求解的u,v與三維空間線面相交求取的u,v一模一樣,可以完全替代。此外可以先求解u,u滿足條件才求解v。利用射線的一端有界性與方向性代替三維空間線面求交判斷中的t。例如,如圖5所示,qp的x分量與qv0,qv1,qv2的x分量符號應該一致,類似于三維空間線面相交的t>0,其判斷甚至可以單獨分離,此方法避免了3維逆矩陣求解,將三維線面相交判斷進行降維與分解。如果到此處滿足條件的三角形面元有多個,選擇與觀測點最近的一個。射線會反射,迭代計算中,運用的方法類似。

      在圖5中,如果射線qp與剛才的三角形k相交,那么觀測射線在三棱柱里面,平面yoz截取三棱柱與射線qp,產(chǎn)生一個三角形v0'v1'v2'與一個在三角形里面的點p。于是空間的線面是否相交,變成了二維空間的點是否在三角形內(nèi),此外,必要時運用射線的方向性排除反方向的三角形面元來彌補二維的不足。

      s4、若入射射線與目標二維平面的交點在投影三角形內(nèi),則入射射線與形成投影三角形的目標三角形面元相交,獲取入射射線與目標三角形面元交點的交點數(shù)據(jù),在所有交點中,選取與觀測點最近的交點作為目標點,根據(jù)目標點數(shù)據(jù)與入射射線求出反射射線,再將反射射線作為新的入射射線繼續(xù)追蹤,形成遞歸,從而實現(xiàn)射線軌跡追蹤,其中,觀測點為入射射線的起點。

      為了更進一步地說明本發(fā)明的性能,現(xiàn)通過仿真實驗來對比傳統(tǒng)快速射線追蹤方法與本發(fā)明的射線追蹤方法(原快速射線追蹤采用一級拒絕檢測與3維空間線面求交),在win7系統(tǒng)下進行程序測試,輸入相同的三角形面元點陣(20716個點組成41436個三角形面元),最大坐標值10m,觀測距離20000m,輸出相同的結(jié)果,2種方法運行的時間依次是28.5秒與23.2秒(采用控制變量法,其他預備程序一樣,只是核心算法部分改變),可見本發(fā)明提出的方法在原有快速射線追蹤算法的基礎(chǔ)上,進一步減少了程序運行的時間,此外,隨著目標面元數(shù)量的增加,觀測距離的減少,提升速度更加明顯。

      本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。

      當前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1