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

      基于掃描射線的3d場景裁剪方法

      文檔序號:6365344閱讀:204來源:國知局
      專利名稱:基于掃描射線的3d場景裁剪方法
      基于掃描射線的3D場景裁剪方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種3D場景實時渲染時的裁剪方法,主要通過對場景中的模型進(jìn)行快速射線掃描檢測,解決3D場景模型的可見性判斷問題。
      背景技術(shù)
      3D場景是由一定數(shù)量的場景模型構(gòu)成,如何很好地表示出包含著成千上萬物體的復(fù)雜場景,因此需要場景管理,給場景提供良好的層次關(guān)系,以便更好地進(jìn)行篩選(Culling)和隱藏面消除(Hidden surface removal)。場景管理涉及到可視性處理(Visibility processing)和碰撞檢測(Collision detection),系統(tǒng)需要判斷場景的哪些部分在視見約束體之內(nèi)。目前對3D場景組織管理的成熟技術(shù)方案主要包括BSP (BinarySpace Partioning trees)、Portal、四叉樹、八叉樹等。這些技術(shù)要求在場景制作期對場景進(jìn)行空間分割,過程復(fù)雜。除Portal技術(shù)外,其他技術(shù)無法有效地處理空間遮擋關(guān)系,但Portal技術(shù)在開放式室外3D場景管理領(lǐng)域并不適用。對復(fù)雜的大型3D場景進(jìn)行實時渲染,要求有一個高效的3D場景裁剪單元,裁減的目的是盡可能減少需要渲染的場景模型數(shù)量,來降低圖形渲染壓力,提高程序的運行效率。

      發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題,在于提供一種基于掃描射線的3D場景裁剪方法,在運行期通過射線檢測體替代場景模型進(jìn)行快速射線掃描,有效解決了場景模型的可見性判斷問題,并且不受3D場景布局方式的限制,適用于絕大多數(shù)的室內(nèi)、室外3D場景管理。本發(fā)明是這樣實現(xiàn)的一種基于掃描射線的3D場景裁剪方法,包括如下步驟步驟10、建立原始3D場景,該3D場景由多個場景模型構(gòu)成;步驟20、針對每個場景模型建立一個射線檢測體,該射線檢測體是盡可能包裹住場景模型的幾何體;步驟30、建立每個射線檢測體與對應(yīng)場景模型的映射關(guān)系;步驟40、根據(jù)場景攝像機(jī)當(dāng)前的坐標(biāo)與朝向,建立一個均勻分布于場景攝像機(jī)視錐內(nèi)的射線簇,射線簇內(nèi)每條射線長度不小于攝像機(jī)遠(yuǎn)裁剪面的長度;步驟50、在當(dāng)前幀,按一定順序遍歷射線簇中的每一條射線,對射線檢測體進(jìn)行相交檢測,如果某個射線檢測體被射線命中,則將該射線檢測體存放于容器中,并針對該射線檢測體標(biāo)記當(dāng)前時刻,此時當(dāng)前時刻為初始值,記為to ;同時規(guī)定這個射線檢測體在一激活周期內(nèi)都不從容器中主動移除,該激活周期記為T,如果被命中的檢測體早已經(jīng)存在于容器中,則更新to值為最后一次命中的當(dāng)前時刻;步驟60、遍歷容器中的每一個射線檢測體,如果當(dāng)前時刻t < to+τ,則根據(jù)所述映射關(guān)系找到該射線檢測體對應(yīng)的場景模型,對場景模型進(jìn)行渲染;如果當(dāng)前時刻t > =to+T,則認(rèn)為該射線檢測體激活壽命超時,將該射線檢測體從容器中移除;步驟70、在下一幀,將射線簇向一預(yù)定方向偏移一定角度進(jìn)行掃描;;
      步驟80、重復(fù)步驟50到70,直到最右側(cè)的射線的達(dá)到視錐右邊界時結(jié)束。其中,所述射線檢測體形狀的復(fù)雜度是隨檢測精度、檢測效率的提高而提高。其中,所述射線檢測體的形狀可以是球形、AABB包圍盒、或OBB包圍盒。其中,所述步驟30建立每個射線檢測體與對應(yīng)場景模型的映射關(guān)系是使用哈希表來建立,哈希表的鍵是每個射線檢測體的內(nèi)存地址,值是場景模型的內(nèi)存地址或者是場景模型的文件路徑。其中,所述步驟70射線簇進(jìn)行掃描時是采用逐行掃描或逐列掃描的方式進(jìn)行本發(fā)明具有如下優(yōu)點在運 行期通過射線檢測體替代場景模型進(jìn)行快速射線掃描,能夠有效的處理場景模型之間的遮擋關(guān)系,制作期不需對模型空間進(jìn)行分割,從而有效解決了場景模型的可見性判斷問題,并且不受3D場景布局方式的限制,適用于絕大多數(shù)的室內(nèi)、室外3D場景管理。

      下面參照附圖結(jié)合實施例對本發(fā)明作進(jìn)一步的說明。圖I為本發(fā)明方法的流程框圖。圖2為本發(fā)明方法建立的一原始3D場景示意圖。圖3為本發(fā)明針對圖I中原始3D場景的每個場景模型建立一個射線檢測體示意圖。圖4為本發(fā)明射線簇掃描狀態(tài)示意圖。圖5為本發(fā)明射線簇逐行掃描過程原理示意圖。
      具體實施方式請參閱圖I至圖5所示,本發(fā)明提供一種基于掃描射線的3D場景裁剪方法,包括如下步驟步驟10、建立原始3D場景,如圖2所示,該3D場景由多個場景模型構(gòu)成。步驟20、針對每個場景模型建立一個射線檢測體,如圖3所示,該射線檢測體是盡可能包裹住場景模型的幾何體,但應(yīng)盡可能簡單;所述射線檢測體形狀的復(fù)雜度是隨檢測精度、檢測效率的提高而提高。在實際使用過程中,根據(jù)應(yīng)用需求和程序運行環(huán)境不同,該幾何體的形狀可以是球形、AABB包圍盒、或OBB包圍盒,在程序中可使用數(shù)學(xué)模型表述,如球方程、橢球方程或由多個平面方程描述的多面體;也可使用一簇頂點,借助DirectX (Direct extension,簡稱 DX)或 OpenGL (Open Graphics Library)等圖形庫構(gòu)造成為一個模型。其中DirectX是由微軟公司創(chuàng)建的多媒體編程接口,旨在使基于windows的計算機(jī)成為運行和顯示具有豐富多媒體元素(例如全色圖形、視頻、3D動畫和豐富音頻)的應(yīng)用程序的理想平臺。應(yīng)用程序可以通過使用DirectX API來訪問這些功能。OpenGL是一個專業(yè)的圖形程序接口,是一個功能強(qiáng)大,調(diào)用方便的底層圖形庫,是一個與硬件無關(guān)的軟件接口,可以在不同的平臺如Windows、Unix、Linux、Mac0S、0S/2之間進(jìn)行移植。應(yīng)用程序可使用DirectX和OpenGL的API來進(jìn)行圖形的繪制和模型的渲染。步驟30、建立每個射線檢測體與對應(yīng)場景模型的映射關(guān)系,其映射關(guān)系可使用哈希表來建立,哈希表的鍵是每個射線檢測體的內(nèi)存地址,哈希表的值是場景模型的內(nèi)存地址或者是場景模型的文件路徑。步驟40、如圖4所示,根據(jù)場景攝像機(jī)當(dāng)前的坐標(biāo)與朝向,建立一個均勻分布于場景攝像機(jī)視錐內(nèi)的射線簇,射線簇內(nèi)每條射線長度不小于攝像機(jī)遠(yuǎn)裁剪面的長度;所述場景攝像機(jī)是在3D場景中用于拍攝場景的虛擬攝像機(jī)。對同一個3D場景來說,通過調(diào)整攝像機(jī)的坐標(biāo),拍攝角度,最大拍攝距離等參數(shù),可拍攝3D場景的不同部分,并得到不同的3D畫面。DirectX和OpenGL均有對應(yīng)的API來獲得及設(shè)定虛擬攝像機(jī)。視錐是場景攝像機(jī)當(dāng)前能拍攝的錐體范圍。步驟50、在當(dāng)前幀,按一定順序遍歷射線簇中的每一條射線,對射線檢測體進(jìn)行相交檢測,如果某個射線檢測體被射線命中,則將該射線檢測體存放于容器中,并針對該射線 檢測體標(biāo)記當(dāng)前時刻,此時當(dāng)前時刻為初始值,記為to ;同時規(guī)定這個射線檢測體在一激活周期內(nèi)都不從容器中主動移除,該激活周期記為T,如果被命中的檢測體早已經(jīng)存在于容器中,則更新to值為最后一次命中的當(dāng)前時刻;本發(fā)明的容器是程序設(shè)計中用于存儲多個程序?qū)ο蟮拇鎯Y(jié)構(gòu),不同的編程語言提供不同的容器。例如在C/C++語言中,可使用一個數(shù)組來存放多個同類型的對象或基礎(chǔ)類型變量,這個數(shù)組即稱為容器;也可使用STL (標(biāo)準(zhǔn)模板庫)中的諸如vector、Iist、hash_map等多種存儲結(jié)構(gòu)來存放同類型的程序?qū)ο?這些也稱為容器。步驟60、遍歷容器中的每一個射線檢測體,如果當(dāng)前時刻t < tO+T,則根據(jù)所述映射關(guān)系找到該射線檢測體對應(yīng)的場景模型,調(diào)用圖形繪制引擎的API,對場景模型進(jìn)行渲染;未在容器中的模型,不參加渲染。如果當(dāng)前時刻t>=tO+T,則認(rèn)為該射線檢測體激活壽命超時,將該射線檢測體從容器中移除;步驟70、在下一巾貞,將射線簇向一預(yù)定方向偏移一定角度進(jìn)行掃描;掃描時可按照CRT顯像管電子槍的發(fā)射原理,CRT顯像管的電子槍的發(fā)射原理顯像管是一個真空管,內(nèi)部有一個(或多個)電子槍,電子槍發(fā)射出電子束,電子束射到真空管前屏幕表面的內(nèi)側(cè)時,屏幕內(nèi)側(cè)的發(fā)光涂料受到電子束的擊打而發(fā)光產(chǎn)生圖像。步驟80、重復(fù)步驟50到70,直到最右側(cè)的射線的達(dá)到視錐右邊界時結(jié)束。其中,掃描時可采用逐行掃描或逐列掃描,電子槍發(fā)射的電子束順序地一行接著一行連續(xù)掃描或一列接著一列的連續(xù)進(jìn)行,方向可以不限,這種掃描方式稱為逐行掃描或逐列掃描。如圖5所示,本發(fā)明射線簇逐行掃描過程原理示意圖,掃描時,射線簇中每條射線均逐行掃描一個小方框的范圍,每個小方框內(nèi)可以從左上角的位置開始,從左向右進(jìn)行掃描,一行結(jié)束后,另起一行,直到小方框的最右下角的位置結(jié)束。綜上所述,本發(fā)明是在運行期通過射線檢測體替代場景模型進(jìn)行快速射線掃描,能夠有效的處理場景模型之間的遮擋關(guān)系,制作期不需對模型空間進(jìn)行分割,從而有效解決了場景模型的可見性判斷問題,并且不受3D場景布局方式的限制,適用于絕大多數(shù)的室內(nèi)、室外3D場景管理。雖然以上描述了本發(fā)明的具體實施方式
      ,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實施例只是說明性的,而不是用于對本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。
      權(quán)利要求
      1.ー種基于掃描射線的3D場景裁剪方法,其特征在于包括如下步驟 步驟10、建立原始3D場景,該3D場景由多個場景模型構(gòu)成; 步驟20、針對每個場景模型建立ー個射線檢測體,該射線檢測體是盡可能包裹住場景模型的幾何體; 步驟30、建立每個射線檢測體與對應(yīng)場景模型的映射關(guān)系; 步驟40、根據(jù)場景攝像機(jī)當(dāng)前的坐標(biāo)與朝向,建立一個均勻分布于場景攝像機(jī)視錐內(nèi)的射線簇,射線簇內(nèi)每條射線長度不小于攝像機(jī)遠(yuǎn)裁剪面的長度; 步驟50、在當(dāng)前幀,按一定順序遍歷射線簇中的每一條射線,對射線檢測體進(jìn)行相交檢測,如果某個射線檢測體被射線命中,則將該射線檢測體存放于容器中,并針對該射線檢測體標(biāo)記當(dāng)前時刻,此時當(dāng)前時刻為初始值,記為to ;同時規(guī)定這個射線檢測體在ー激活周期內(nèi)都不從容器中主動移除,該激活周期記為T,如果被命中的檢測體早已經(jīng)存在于容器中,則更新to值為最后一次命中的當(dāng)前時刻; 步驟60、遍歷容器中的每ー個射線檢測體,如果當(dāng)前時刻t < tO+T,則根據(jù)所述映射關(guān)系找到該射線檢測體對應(yīng)的場景模型,對場景模型進(jìn)行渲染;如果當(dāng)前時刻t > = tO+T,則認(rèn)為該射線檢測體激活壽命超時,將該射線檢測體從容器中移除; 步驟70、在下ー幀,將射線簇向ー預(yù)定方向偏移一定角度進(jìn)行掃描; 步驟80、重復(fù)步驟50到70,直到最右側(cè)的射線的達(dá)到視錐右邊界時結(jié)束。
      2.根據(jù)權(quán)利要求I所述的基于掃描射線的3D場景裁剪方法,其特征在于所述射線檢測體形狀的復(fù)雜度是隨檢測精度、檢測效率的提聞而提聞。
      3.根據(jù)權(quán)利要求I所述的基于掃描射線的3D場景裁剪方法,其特征在于所述射線檢測體的形狀是球形、AABB包圍盒、或OBB包圍盒。
      4.根據(jù)權(quán)利要求I所述的基于掃描射線的3D場景裁剪方法,其特征在于所述步驟30建立每個射線檢測體與對應(yīng)場景模型的映射關(guān)系是使用哈希表來建立,哈希表的鍵是每個射線檢測體的內(nèi)存地址,值是場景模型的內(nèi)存地址或者是場景模型的文件路徑。
      5.根據(jù)權(quán)利要求I所述的基于掃描射線的3D場景裁剪方法,其特征在于所述步驟70射線簇進(jìn)行掃描時是采用逐行掃描或逐列掃描的方式進(jìn)行。
      全文摘要
      本發(fā)明提供一種基于掃描射線的3D場景裁剪方法,其是針對3D場景中場景模型建立一個射線檢測體,該射線檢測體盡可能包裹住場景模型;建立每個射線檢測體與對應(yīng)場景模型的映射關(guān)系;根據(jù)場景攝像機(jī)當(dāng)前的坐標(biāo)與朝向,建立一個均勻分布于場景攝像機(jī)視錐內(nèi)的射線簇,射線簇內(nèi)每條射線長度不小于攝像機(jī)遠(yuǎn)裁剪面的長度;在當(dāng)前幀,按一定順序遍歷射線簇中的每一條射線,對射線檢測體進(jìn)行相交檢測,如果某個射線檢測體被射線命中,則將該射線檢測體存放于容器中,遍歷容器中的每一個射線檢測體,則根據(jù)所述映射關(guān)系找到該射線檢測體對應(yīng)的場景模型,對場景模型進(jìn)行渲染。本發(fā)明在運行期通過射線檢測體替代場景模型進(jìn)行快速射線掃描,適用于各種3D場景管理。
      文檔編號G06T15/30GK102629389SQ201210044448
      公開日2012年8月8日 申請日期2012年2月24日 優(yōu)先權(quán)日2012年2月24日
      發(fā)明者羅丁 申請人:福建天趣網(wǎng)絡(luò)科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1