国产精品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>

      一種基于GPU的不可見對(duì)象剔除方法及系統(tǒng)

      文檔序號(hào):40278977發(fā)布日期:2024-12-11 13:15閱讀:11來源:國知局
      一種基于GPU的不可見對(duì)象剔除方法及系統(tǒng)

      本發(fā)明屬于計(jì)算機(jī)圖形學(xué),尤其涉及一種基于gpu的不可見對(duì)象剔除方法及系統(tǒng)。


      背景技術(shù):

      1、不可見對(duì)象剔除是計(jì)算機(jī)圖形學(xué)研究的一個(gè)基本問題。如今,用戶對(duì)于3d圖形系統(tǒng)的畫面要求越來越高,畫面繪制越來越精致,需要在硬件配置有限的情況下保證交互體驗(yàn)的實(shí)時(shí)性。因而在計(jì)算機(jī)的圖形繪制中,將一些最終在畫面上因被其他物體遮擋而看不見的物體提前去除,再交給硬件渲染,是行之有效的一種優(yōu)化方式。

      2、不可見對(duì)象剔除的常用手段為背面剔除、視錐剔除和遮擋剔除三方面。幾乎所有的渲染引擎都會(huì)內(nèi)置這些剔除手段。背面剔除是指將背面朝向攝像機(jī)的三角形剔除,因?yàn)閷?duì)最終畫面的生成沒有貢獻(xiàn),在渲染引擎中都已實(shí)現(xiàn),只需要開啟api即可。而視錐剔除會(huì)將觀察攝像機(jī)視錐體外的模型剔除,通常是將物體的軸對(duì)齊包圍盒與視錐體進(jìn)行檢測(cè),判斷視錐體的六個(gè)平面方程法向量與包圍盒頂點(diǎn)坐標(biāo)進(jìn)行點(diǎn)乘,如果包圍盒頂點(diǎn)坐標(biāo)與某一個(gè)平面方程的點(diǎn)乘信息皆為正或負(fù)值,代表該物體不在視錐體內(nèi)部。當(dāng)涉及遮擋剔除時(shí),核心思想是從后續(xù)處理流程中排除那些因?yàn)槠渌矬w遮擋而變得不可見的物體。這一方案有幾種主要的技術(shù)手段來實(shí)現(xiàn),包括潛在可視集方法、遮擋查詢方法以及層次化z緩沖區(qū)等方法。

      3、傳統(tǒng)的層次化z緩沖區(qū)方案,通過八叉樹對(duì)空間進(jìn)行分割,并通過對(duì)z緩沖值降采樣的方法來生成一個(gè)層次z緩沖結(jié)構(gòu),也稱為z金字塔,對(duì)物體的剔除可以從分辨率低到高作層級(jí)遮擋查詢和剔除,效率相比直接對(duì)分辨率最高的深度圖進(jìn)行比對(duì)更高。

      4、但是,上述視錐剔除和層次化z緩沖區(qū)剔除的一大問題在cpu上計(jì)算量大,對(duì)cpu的負(fù)載過大?,F(xiàn)有的一些用于優(yōu)化計(jì)算的方案有使用數(shù)據(jù)結(jié)構(gòu)優(yōu)化計(jì)算速度的;也有提前預(yù)計(jì)算一部分?jǐn)?shù)據(jù)減少實(shí)時(shí)消耗的,但效果仍然不甚理想。在低端平臺(tái)上運(yùn)行依舊占據(jù)較大性能。

      5、因此,為了使視錐剔除與層次z緩沖遮擋剔除方案得到更廣泛的應(yīng)用,需要有一種高效的計(jì)算提高剔除效率,減少對(duì)cpu的負(fù)擔(dān),使低端設(shè)備也能較快運(yùn)行上述剔除手段。


      技術(shù)實(shí)現(xiàn)思路

      1、針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種基于gpu的不可見對(duì)象剔除方法和系統(tǒng),系統(tǒng)包括視錐剔除和遮擋剔除兩個(gè)模塊。該發(fā)明的技術(shù)方案是通過一下內(nèi)容來實(shí)現(xiàn)的:

      2、本發(fā)明的第一方面:一種基于gpu的不可見對(duì)象剔除方法,該方法包括以下步驟:

      3、(1)構(gòu)建模型:構(gòu)建不可見對(duì)象剔除模型,所述模型包括視錐剔除和遮擋剔除兩個(gè)部分;

      4、(2)視錐剔除:計(jì)算觀察攝像頭定義的視錐體的六個(gè)平面方程及每個(gè)觀察物體在世界坐標(biāo)系中的位置;通過分析每個(gè)物體的坐標(biāo)位置相對(duì)于各視錐平面的空間關(guān)系,即判斷坐標(biāo)點(diǎn)是位于各平面的正向還是反向;若物體對(duì)所有相關(guān)平面均位于正向或反向,則確認(rèn)其處于視錐體之外,從渲染隊(duì)列中剔除;

      5、(3)遮擋剔除:通過當(dāng)前幀的深度圖在gpu中生成層次化z緩沖區(qū)數(shù)據(jù),并把物體的包圍盒信息和坐標(biāo)信息傳遞給gpu與層次化z緩沖區(qū)數(shù)據(jù)進(jìn)行計(jì)算,將被完全遮擋的物體從渲染隊(duì)列中剔除。

      6、進(jìn)一步地,,所述步驟(2)中視錐體的六個(gè)平面方程具體獲得方法為:

      7、(2.1)獲得視錐體近平面和遠(yuǎn)平面的點(diǎn)坐標(biāo);

      8、(2.2)獲得觀察攝像機(jī)的拍攝向量;

      9、(2.3)通過步驟(2.2)得到的拍攝向量以及步驟(1)得到的近平面和遠(yuǎn)平面的坐標(biāo),通過法向量與點(diǎn)的計(jì)算公式得到近平面和遠(yuǎn)平面的方程,計(jì)算公式如下:

      10、nxx+nyy+nzz-(nxx0+nyy0+nzz0)=0;

      11、其中x,y,z表示平面的變量;nx,ny,nz表示觀察攝像機(jī)的拍攝向量,x0,y0,z0表示近平面或遠(yuǎn)平面上點(diǎn)的位置坐標(biāo)。

      12、(2.4)通過視錐體遠(yuǎn)平面的四個(gè)點(diǎn)坐標(biāo),以及攝像機(jī)坐標(biāo),通過叉乘公式獲得三點(diǎn)所在平面的法向量,再通過法向量以及一個(gè)坐標(biāo)由步驟(3.3)公式獲得上下左右的平面方程,法向量n的計(jì)算公式如下:

      13、

      14、其中ax,ay,az、bx,by,bz、cx,cy,cz代表平面的三個(gè)坐標(biāo),為ax,ay,az、bx,by,bz兩坐標(biāo)形成的向量,為ax,ay,az、cx,cy,cz兩坐標(biāo)形成的向量,n為法向量。

      15、進(jìn)一步地,所述步驟(2)分析每個(gè)物體的坐標(biāo)位置相對(duì)于各視錐平面的空間關(guān)系,即為判斷坐標(biāo)點(diǎn)是位于各平面的正向還是反向,具體為:

      16、(3.1)通過物體的自身坐標(biāo)信息和物體的大小獲得物體的包圍盒信息;

      17、(3.2)將包圍盒的八個(gè)頂點(diǎn)坐標(biāo)從自身坐標(biāo)轉(zhuǎn)換到世界坐標(biāo);

      18、(3.3)通過所述視錐體的六個(gè)平面方程法向量與包圍盒頂點(diǎn)坐標(biāo)進(jìn)行點(diǎn)乘,如果包圍盒頂點(diǎn)坐標(biāo)與某一個(gè)平面方程的點(diǎn)乘信息皆為正或負(fù)值,則代表該物體不在視錐體內(nèi)部。

      19、具體地,所述步驟(3)中的當(dāng)前幀的深度圖為在渲染管線中的光柵化階段時(shí)得到,利用gpu計(jì)算的不透明物體的網(wǎng)格在對(duì)應(yīng)像素上的深度,取值范圍為0到1的浮點(diǎn)數(shù)。

      20、具體地,所述步驟(3)生成層次化z緩沖區(qū)數(shù)據(jù)為當(dāng)前幀的深度圖通過降采樣的方法獲得的層次化深度圖數(shù)據(jù),以當(dāng)前幀的深度圖作為初始,使用當(dāng)前降采樣的深度圖,每次取2*2的像素深度最大的深度值作為采樣值,以此類推,直到無法繼續(xù)降采樣。

      21、進(jìn)一步地,所述步驟(3)物體的包圍盒信息和坐標(biāo)信息傳遞給gpu與層次化z緩沖區(qū)數(shù)據(jù)進(jìn)行計(jì)算,具體為:

      22、(3.1)通過物體包圍盒坐標(biāo)信息計(jì)算該物體的深度值;

      23、(3.2)通過物體包圍盒坐標(biāo)信息獲得該物體在屏幕上覆蓋的像素區(qū)域范圍;

      24、(3.3)根據(jù)上述的物體深度值與對(duì)應(yīng)層級(jí)的深度圖進(jìn)行比對(duì),如果深度值比深度圖位置的深度值大,代表該物體被遮擋,將該物體從渲染隊(duì)列中剔除。

      25、進(jìn)一步地,所述步驟(3.1)中通過物體包圍盒坐標(biāo)信息計(jì)算該物體的深度值,具體為:

      26、(3.1.1)計(jì)算物體包圍盒各個(gè)頂點(diǎn)在歸一化設(shè)備坐標(biāo)空間中的坐標(biāo)值;

      27、(3.1.2)通過包圍盒頂點(diǎn)的歸一化設(shè)備坐標(biāo),重新生成坐標(biāo)軸平行包圍盒;

      28、(3.1.3)找到以觀察坐標(biāo)系為法線的距離更近的平面,該平面的z值為該物體的深度值。

      29、進(jìn)一步地,所述步驟(3.2)中通過物體包圍盒坐標(biāo)信息獲得該物體在屏幕上覆蓋的像素區(qū)域范圍,具體為:

      30、(3.2.1)由上述步驟(3.1.3)中找到的以觀察坐標(biāo)系為法線的距離更近的平面,計(jì)算其面積,能夠獲取到該平面在歸一化設(shè)備坐標(biāo)空間中所占的像素區(qū)域大?。?/p>

      31、(3.2.2)將該大小與圖片初始分辨率相乘,獲得原本坐標(biāo)軸平行包圍盒覆蓋的屏幕像素區(qū)域。

      32、本發(fā)明的第二方面:提供了一種基于gpu的中不可見對(duì)象剔除系統(tǒng),該系統(tǒng)包括以下模塊:

      33、構(gòu)建模型模塊:構(gòu)建不可見對(duì)象剔除模型,所述模型包括視錐剔除和遮擋剔除兩個(gè)部分;

      34、視錐剔除模塊:計(jì)算觀察攝像頭定義的視錐體的六個(gè)平面方程及每個(gè)觀察物體在世界坐標(biāo)系中的位置;通過分析每個(gè)物體的坐標(biāo)位置相對(duì)于各視錐平面的空間關(guān)系,即判斷坐標(biāo)點(diǎn)是位于各平面的正向還是反向;若物體對(duì)所有相關(guān)平面均位于正向或反向,則確認(rèn)其處于視錐體之外,從渲染隊(duì)列中剔除;

      35、遮擋剔除模塊:通過當(dāng)前幀的深度圖在gpu中生成層次化z緩沖區(qū)數(shù)據(jù),并把物體的包圍盒信息和坐標(biāo)信息傳遞給gpu與層次化z緩沖區(qū)數(shù)據(jù)進(jìn)行計(jì)算,將被完全遮擋的物體從渲染隊(duì)列中剔除。

      36、本發(fā)明的有益效果如下:

      37、該系統(tǒng)使用gpu在實(shí)時(shí)渲染場(chǎng)景下做到快速剔除觀察攝像頭內(nèi)不可見物體。提高了渲染效率,降低了cpu的計(jì)算負(fù)擔(dān),使使視錐剔除與層次z緩沖遮擋剔除方案得到更廣泛的應(yīng)用。

      38、該系統(tǒng)和渲染步驟可用在cpu負(fù)載較大的渲染應(yīng)用上,如城市游覽應(yīng)用,游戲客戶端,因?yàn)槊恳粠夹枰獔?zhí)行人物等復(fù)雜模型的物理、動(dòng)畫計(jì)算,以及相關(guān)的特效、業(yè)務(wù)邏輯,存在較大的開銷,所以可以通過gpu的高效并行計(jì)算性能,快速剔除觀察攝像機(jī)不可見的物體,提升性能。

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