通過具有核內存儲器并耦接至一個或多個核外存儲裝置的計算系統的計算機制作的場景進行明暗處理。所述場景包括在所述場景中的對象的表面元素上的明暗處理位置。產生場景的點云示意。根據所述場景的所述點云示意來產生八叉樹數據結構。為了產生八叉樹數據結構,針對所述場景的所述點云示意中的每個點計算莫頓碼。隨后,根據莫頓碼來對點進行排序,遞歸地對點進行細分以便最多找到閾值個數的點,以及將所述節點寫入所述一個或多個核外存儲裝置。根據寫入所述一個或多個核外存儲裝置的所述節點來對位置進行明暗處理。
【技術實現步驟摘要】
本專利技術涉及計算機圖形,更具體地說涉及用于利用核外基于點的全局照明(out-of-core point-based global illumination)來有效 宣染(render)場景的計算機系統和處理器。
技術介紹
全局照明是計算機圖形中用來為場景添加更真實的采光的技術。已知的一種全局照明方案是基于點的全局照明(PBGI)方案(請參見Per H. Christensen,“Point-basedapproximate color bleeding,,,Pixar Technical Memo#08-01 (July 2008),下文稱為“Christensen 2008,,)。PBGI 通常涉及用于間接照明整合(illumination integral)和吸 收整合(occlusion integral)的解決方案。利用PBGI,場景中被直接照亮的幾何區域由點云示意來表示,通常在對場景進行渲染之前在預計算階段產生該點云示意。點云中的一個點是包含能量信息的三維空間中的一個位置。在一個示例中,點可以是面元(surfel)的數據示意,面元是虛構出場景中的不同對象的小型圓盤形表面元素。如Christensen 2008中所描述的那樣,不同對象的表面被細分成小型微多邊形,并且利用每個點存儲從每個微多邊形發射出來的光能(例如輻射)。點還可存儲其它信息,包括位置、表面法線、有效面積、點半徑等。如Christensen 2008中所描述的那樣,點中存儲的有效面積以及點半徑不是同樣的東西;相反,它們是點尺寸的不同表達。點半徑定義了點所表示的微多邊形。這就確保了表面完全被點覆蓋,其間不存在縫隙。有效面積是點的實際面積,實際面積小于與點半徑相對應的面積。為了有效地利用PBGI解決照明整合,所產生的點云進一步組織成多分辨率詳細程度的層次結構。例如,八叉樹(Octree)結構可用于通過遞歸地將空間細分成八個八分圓來劃分點云所表示的三維空間。八叉樹數據結構是其中每個內部節點具有多達八個子節點的樹數據結構。八叉樹中的葉節點存儲了針對葉節點中的各個點所覆蓋的空間體積的點云中的各個點和點簇。葉節點之外的每個節點存儲了作為處于特定體積內的點的集合的近似的點簇。例如,點簇示意包括針對簇的平均位置、以及從各個方向看到的簇的突出區域和發生能量(分別是指向突出區域以及指向發射能量)。在產生八叉樹層次結構之后,全點云和八叉樹層次結構隨后都可用來計算間接虛擬相機看到的“明暗處理(shading)位置”處的照明整合和吸收整合。但是,不是八叉樹的所有結構都必須用來計算特定明暗處理位置處的整合。例如,當對象遠離場景中的明暗處理位置時,八叉樹的較少的提煉出來的節點被用來計算各種整合。當對象靠近時,可使用更多的提煉的節點或者甚至各個節點。但是,使用更多的提煉的節點來計算整合意味著更長的明暗處理時間。上述八叉樹成簇技術顯著地降低了解決實際整合的復雜度。然而,用來建立八叉樹簇的算法所需的執行時間的量具有至少0(n log η)的復雜度級別,并且存儲前述數據結構的存儲器的量具有至少0(η)的復雜度級別,其中η是點云中輸入點的數量。并且,PBGI在制造中被用來渲染復雜場景,從而點云中的點以及八叉樹結構中主存儲器(或機器中的內置存儲器)中的存儲快速地變成對點云中的點數的限制因素。高質量動畫片中使用的渲染的圖像必須是畫面真實的。增大畫面真實度的一種方法是增大點云中的點數。但是,如上所述,點數受到可用的主(核內)存儲器的容量的限制。因此,需要一種采用有限的存儲器量同時實現點云中增多的點數的技術。
技術實現思路
在此描述了針對核外PBGI的方法、系統和設備,其可在用戶指定的存儲器容量(memory cap)中操作。核外PBGI通過一致地對壓縮以便明暗處理期間的后續訪問的盤上數據進行排序和存儲來使用核外存儲器。并且,通過利用空間填充曲線的特性,可以通過兩種通道來預先處理數據排序通道和八叉樹結構通道。在產生點云示意之后,可根據其莫頓次序來對點云中的點進行排序。可針對點云 中的點來構建八叉樹結構。排序允許八叉樹數據結構被內置在通過該點的單個流通道中。八叉樹數據結構中的點和節點隨后可寫入一個或多個核外存儲裝置。在最終的明暗處理期間,可以通過對八叉樹執行深度優先遍歷、并選擇適當的詳細等級,來對每個明暗處理位置進行明暗處理。由于存儲方法,所以明暗處理所不要求的八叉樹的一部分無需載入主存儲器中,從而釋放了用于對場景進行明暗處理的主存儲器要求。在一個示例實施例中,利用用于存儲八叉樹數據結構的一個或多個核外存儲裝置來對計算機制作的場景進行明暗處理。所述場景包括在所述場景中的對象的表面元素上的明暗處理位置。產生場景的點云示意。根據所述場景的所述點云示意來產生八叉樹數據結構。為了產生八叉樹數據結構,針對場景的點云示意中的每個點計算針對場景的點云示意中的每一個點計算空間填充曲線上的位置。隨后,根據所述空間填充曲線來對所述點進行排序。遞歸地對點進行細分以便最多找到閾值個數的點,隨后將點作為節點寫入所述一個或多個核外存儲裝置。根據寫入所述一個或多個核外存儲裝置的所述節點來對位置進行明暗處理。附圖說明通過結合附圖來參考下面的說明,本申請將得到最好的理解,附圖中相似的部分以相似的標號標示。圖I圖示了采用核外PBGI產生的示例性場景。圖2圖示了用于渲染場景的示例性處理。圖3圖示了產生場景的點云示意的示例性示意圖。圖4圖示了 Z-曲線的示意圖。圖5圖不了用于構建核外八叉樹的不意圖。圖6圖示了用于利用分塊(chunking)來構建核外八叉樹的示意圖。圖7圖示了使二進制樹分塊的示意圖。圖8圖示了利用核外PBGI產生的示例性場景。圖9圖示了示例性計算系統。具體實施例方式下述說明闡述了多種具體結構、參數等。但是,應該認識到,該說明并非是對本專利技術范圍的限制,相反其被提供作為對示例性實施例的描述。圖I圖示了采用PBGI渲染的示例性場景100。為了以圖像真實的方式渲染場景100,點云要求927百萬個點,從而導致具有203百萬個節點的八叉樹。這些點可占據27. 6GB的空間,同時八叉樹要求另外的22. 7GB。為了利用Christensen 2008所描述的PBGI技術渲染場景,需要訪問整個場景,并將其置于主(核內)存儲器中。如今,很難在主存儲器中存儲超過50GB的數據。因此,可替換地利用核外PBGI產生場景100。總之,核外處理被設計來處理多到不能裝入一次性地裝置的主存儲器的數據。相反,他們利用核外存儲裝置,例如次級存儲器、外部存儲器、硬盤、閃存、固態驅動器、云存儲、磁帶驅動器等,從而有效地去除并訪問處理所需的數據。圖2圖示了用于利用核外PBGI渲染場景的示例性處理200。用來產生場景的處理可以是核外八叉樹建立方法,其要求最小量的輸入/輸出(I/o)并且在一個或多個核外存儲裝置中前后一致地存儲點和八叉樹節點。在處理200的步驟210中,產生場景的點云示意。諸如Christensen 2008中所描述的PBGI方法之類的PBGI方法可用來產生點云。圖3提供了產生場景的點云示意的示例性示意。包括茶壺310的場景300可表示看見茶壺的虛擬世界的虛擬相機370拍攝的快照。茶壺310的點云示意360可被計算出來。為本文檔來自技高網...
【技術保護點】
一種對場景進行明暗處理的計算機實現方法,所述場景包括在所述場景中的對象的表面元素上的明暗處理位置,由具有核內存儲器并耦接至一個或多個核外存儲裝置的計算系統執行所述方法,所述方法包括:產生所述場景的點云示意,其中通過將所述場景中的對象的表面劃分成一個或多個微多邊形、并將針對每個微多邊形的信息存儲至所述點云中的一個或多個點的點中來產生所述場景的所述點云示意;根據所述場景的所述點云示意來產生所述八叉樹數據結構,其中所述八叉樹數據結構將所述場景的所述點云示意中的所述一個或多個點存儲為頁節點,并且其中產生所述八叉樹數據結構包括:針對所述場景的所述點云示意中的每個點計算莫頓碼,根據基于所計算出來的莫頓碼的莫頓次序來對點進行排序,遞歸地對所述點進行細分以便最多找到閾值個數的點,其中所述點將被存儲在節點中,以及將所述節點寫入所述一個或多個核外存儲裝置;以及根據寫入所述一個或多個核外存儲裝置的所述節點來對位置進行明暗處理。
【技術特征摘要】
...
【專利技術屬性】
技術研發人員:J·M·康特卡嫩,E·特貝廖內,R·S·奧弗貝克,
申請(專利權)人:太平洋數據影像有限責任公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。