虛擬實境下的海量模型數據動態調度與實時異步加載方法
2023-05-03 02:27:36 1
虛擬實境下的海量模型數據動態調度與實時異步加載方法
【專利摘要】本發明公開一種虛擬實境下的海量模型數據動態調度與實時異步加載方法,包括如下步驟:(一)3D模型場景數據的預處理;(二)對模型場景整體的切割分塊;(三)多線程並行分布加載;(四)視錐體裁剪。本方法基於視錐體和地形區域求交點的視錐體裁剪算法,實現了動態調度中基於地形區域的實時裁剪,採用模型數據分塊調度和渲染管線的多線程處理機制,使不同介質之間的動態調度與繪製管線和數據處理調度管線能異步加載,從而實現了在有限內存,處理器等硬體環境下對海量場景模型數據加載和表現效率的動態平衡。
【專利說明】虛擬實境下的海量模型數據動態調度與實時異步加載方法
【技術領域】
[0001]本發明屬於地質勘探領域,具體是一種虛擬實境下的海量模型數據動態調度與實時異步加載方法。
【背景技術】
[0002]傳統的虛擬實境系統中,由於系統架構,模型結構,網絡帶寬,計算機硬體CPU和GTO運算能力,內存,顯存大小等限制,三維場景時採用靜態方式預先加載到系統內存中,無法實時的對模型進行動態的組織,調度等複雜操作,而海量的模型數據更不可能加載進入系統,部分實現動態調度的系統也會因為海量的場景模型數據和有限的網絡帶寬或者GPU運行能力造成嚴重的數據讀寫延遲和數據堵塞,從而降低了三維虛擬場景模型的載入流暢性和操作的連貫性,大大降低了用戶的使用和操作體驗。
【發明內容】
[0003]本發明的目的是為了克服現有技術的不足,提供一種虛擬實境下的海量模型數據動態調度與實時異步加載方法,該方法是基於視錐體和地形區域求交點的視錐體裁剪算法,實現了動態調度中基於地形區域的實時裁剪,採用模型數據分塊調度和渲染管線的多線程處理機制,使不同介質之間的動態調度與繪製管線和數據處理調度管線能異步加載,從而實現了在有限內存,處理器等硬體環境下對海量場景模型數據加載和表現效率的動態平衡。
[0004]為了實現上述目的,本發明是通過以下技術方案實現的:
一種虛擬實境下的海量模型數據動態調度與實時異步加載方法,包括如下步驟:
(一)3D模型場景數據的預處理;
(二)對模型場景整體的切割分塊;
(三)多線程並行分布加載;
(四)視錐體裁剪。
[0005]作為進一步的說明,以上所述預處理,其步驟為:
1)優化VR場景模型的幾何面數
VR場景模型的優化是要對每個獨立的模型面數進行精簡,還需要對模型的個數進行精
簡;
2)優化VR場景獨立模型對象的數量
將相同材質的物共用好材質;調整好各自的貼圖坐標;然後再將這些相同材質的物體進行合併以減少模型個數;
3)優化VR場景模型的貼圖量和貼圖細節;
將單獨的模型對象紋理全部烘焙在一張紋理上,重新定位紋理坐標,貼圖格式轉換為dds格式,能夠直接通過顯卡計算,加快載入速度;
作為進一步的說明,以上所述對模型場景整體的切割分塊, 1)對海量模型數據進行分塊;
海量模型數據對應較大空間範圍廣度的模型場景內容,根據VR系統的漫遊器操作設定對三維空間視錐體,視錐體的分析,計算出平面內可見場景空間的範圍值,依照此範圍值確定對應分塊空間的極限值,然後將場景空間的笛卡爾坐標系的高位坐標截取作為塊號,低位坐標極限值為視錐體可見範圍極限值;
2)對分塊排序並建立索引表;
依照高位坐標值生成的塊號的空間關係,將整個場景分塊生成的分塊號序列進行排序,並保存在外部文件中,每條塊號記錄文件包括:塊號ID,塊號名,塊號坐標,塊號備註;
3)將分塊數據打包;
將原始場景的模型數據分塊切割後,對每個分塊後的模型數據塊添加塊號ID,此塊號ID對應分塊索引表中塊號記錄文件中的塊號ID,通過此ID進行關聯,實現遍歷索引表找到對應ID的分塊數據包功能,然後將分塊數據包壓縮打包成二進位流文件。
[0006]作為進一步的說明,以上所述多線程並行分布加載,其步驟為:
其步驟為:1)使用預加載線程載入場景分塊索引表;
在VR系統初始化階段,啟動線程載入場景分塊索引表,當海量模型數據時,索引表體積偏大,使用線程加載能保證在VR系統初始化中其他操作不受影響;
2)使用異步加載線程動態的加載場景分塊;
在場景漫遊器初始化完成後,操作漫遊器視錐體進行場景漫遊時,開始計算當前視錐體與場景的交點區域,確定分塊後,啟動異步加載線程動態加載當前分塊號對應的場景分塊模型數據包;
3)使用渲染線程渲染模型場景紋理和模型頂點結構;
加載完模型數據進內存後,啟動渲染線程渲染場景紋理和模型頂點幾何數據;
作為進一步的說明,以上所述視錐體裁剪,其步驟為:1)計算當前視錐體與場景相交區
域;
將地形檢測的塊狀物體放到場景裡面進行設置,每一個檢測塊都對應著一塊分塊號,位置與其對應的地形一致。當漫遊器視錐體的自身Z軸方向與某個檢測塊發生碰撞之後,及獲得視錐體所需顯示的當前區域模型分塊號。
[0007]2)遍歷模型分塊索引表獲得當前相交區域塊號;
獲得當前視錐體範圍對應塊號後,遍歷模型分塊索引表,通過分塊ID查找到對應場景模型分塊包數據,然後從本地硬碟或網絡異步加載分塊包中數據到內存中,將模型分塊索引表中獲得的快號對象的高位坐標值同場景模型分塊包中數據的低位坐標值進行拼接,得到最終的完整坐標,然後顯示在場景中;
3)動態調度塊號對應的模型數據包,加載進當前場景;
將該區塊的分塊數據包載入到內存中,異步克隆其主資源中各個子物體到其相應的位置。當整個場景中加載的區塊數目超出一個事先設定的值時或系統的內存監控消耗達到臨界值時,就會調用動態調度優化處理算法,計算距離漫遊器視錐體中心區域最遠的地塊區域,獲取地塊的分塊ID和對應的內存中分塊數據進行釋放,從而降低系統內存負載。
[0008]與現有技術相比,本發明的有益效果是:通過使用建模結構頂點和紋理數據的優化,歸一化處理;對模型場景整體的切割分塊技術;多線程並行分布加載技術;視錐體裁剪技術等多種技術實現了海量數據動態調度和實時異步加載模型數據技術,解決了以往VR系統中模型場景限制,無法在同個場景中展現大規模模型數據的瓶頸問題。拓廣了 VR系統表現整體場景規模的能力。
【具體實施方式】
[0009]下面結合實施例對本發明作進一步詳細的描述,但本發明的實施方式並不局限於實施例表示的範圍。
[0010]實施例:
1.3D模型場景數據的預處理,優化過程 I)優化VR場景模型的幾何面數
模型的優化是要對每個獨立的模型面數進行精簡,還需要對模型的個數進行精簡,這兩個數據都是影響最終運行速度的重要參數,這些優化操作是必須的,也是提升載入速度的重要方面。
[0011]2)優化VR場景獨立模型對象的數量
VR場景的模型個數過多也會直接影響到VR場景的導出及VR場景的顯示速度。如果當前的VR場景裡的模型個數過多,計算機可能會因為計算不過來,而造成部分物體無法加載進去,最終得到的VR場景模型是不完整的,零碎,有模型丟失等現象;如果計算機勉強將VR場景裡的所有模型加載進去了,其運行速度也會很慢。為了避免以上問題的出現,解決方法是:將相同材質的物共用好材質;調整好各自的貼圖坐標;然後再將這些相同材質的物體進行合併以減少模型個數。
[0012]3)優化VR場景模型的貼圖量和貼圖細節;
當3D模型用於視頻演示或者結構渲染作用,貼圖的大小和數量是沒有控制和優化的,在VR系統中特別是海量數據載入中,必須對貼圖量和貼圖細節質量進行控制,將單獨的模型對象紋理全部烘焙在一張紋理上,重新定位紋理坐標,貼圖格式轉換為dds格式,能夠直接通過顯卡計算,加快載入速度。
[0013]2.對模型場景整體的切割分塊過程 I)對海量模型數據進行分塊;
海量模型數據一般會對應較大空間範圍廣度的模型場景內容,根據VR系統的漫遊器操作設定對三維空間視錐體,視錐體的分析,計算出平面內可見場景空間的範圍值,依照此範圍值確定對應分塊空間的極限值,然後將場景空間的笛卡爾坐標系的高位坐標截取作為塊號,低位坐標極限值為視錐體可見範圍極限值。
[0014]2)對分塊排序並建立索引表;
依照高位坐標值生成的塊號的空間關係,將整個場景分塊生成的分塊號序列進行排序,並保存在外部文件中,每條塊號記錄文件包括:塊號ID,塊號名,塊號坐標,塊號備註。
[0015]3)將分塊數據打包;
將原始場景的模型數據分塊切割後,對每個分塊後的模型數據塊添加塊號ID,此塊號ID對應分塊索引表中塊號記錄文件中的塊號ID,通過此ID進行關聯,實現遍歷索引表找到對應ID的分塊數據包功能,然後將分塊數據包壓縮打包成二進位流文件,有利於網絡環境傳輸,並加快載入速度。[0016]3.多線程並行分布加載技術;
O使用預加載線程載入場景分塊索引表;
在VR系統初始化階段,啟動線程載入場景分塊索引表,當海量模型數據時,索引表體積偏大,使用線程加載能保證在VR系統初始化中其他操作不受影響,保證了系統的啟動速度。
[0017]2)使用異步加載線程動態的加載場景分塊;
在場景漫遊器初始化完成後,用戶操作漫遊器視錐體進行場景漫遊時,開始計算當前視錐體與場景的交點區域,確定分塊後,啟動異步加載線程動態加載當前分塊號對應的場景分塊模型數據包,實現了漫遊器不受動態加載模型IO操作的影響,漫遊器始終流暢運行的效果。
[0018]3)使用渲染線程渲染模型場景紋理和模型頂點結構;
加載完模型數據進內存後,啟動渲染線程渲染場景紋理和模型頂點幾何數據,實現了在模型渲染階段,系統其它操作和漫遊器漫遊不受渲染速度的影響和限制,確保了良好地用戶使用體驗。
[0019]4.視錐體裁剪技術。
[0020]I)計算當前視錐體與場景相交區域;
將地形檢測的塊狀物體放到場景裡面進行設置,每一個檢測塊都對應著一塊分塊號,位置與其對應的地形一致。當我們的漫遊器視錐體的自身Z軸方向與某個檢測塊發生碰撞之後,及獲得視錐體所需顯示的當前區域模型分塊號。
[0021]2)遍歷模型分塊索引表獲得當前相交區域塊號;
獲得當前視錐體範圍對應塊號後,遍歷模型分塊索引表,通過分塊ID查找到對應場景模型分塊包數據,然後從本地硬碟或網絡異步加載分塊包中數據到內存中,將模型分塊索引表中獲得的快號對象的高位坐標值同場景模型分塊包中數據的低位坐標值進行拼接,得到最終的完整坐標,然後顯示在場景中。
[0022]3)動態調度塊號對應的模型數據包,加載進當前場景;
便將該區塊的分塊數據包載入到內存中,異步克隆其主資源中各個子物體到其相應的位置。當整個場景中加載的區塊數目超出一個事先設定的值時或系統的內存監控消耗達到臨界值時,就會調用動態調度優化處理算法,計算距離漫遊器視錐體中心區域最遠的地塊區域,獲取地塊的分塊ID和對應的內存中分塊數據進行釋放,從而降低系統內存負載。
【權利要求】
1.一種虛擬實境下的海量模型數據動態調度與實時異步加載方法,其特徵在於,包括如下步驟: (一)3D模型場景數據的預處理; (二)對模型場景整體的切割分塊; (三)多線程並行分布加載; (四)視錐體裁剪。
2.根據權利要求1所述的虛擬實境下的海量模型數據動態調度與實時異步加載方法,其特徵在於:所述預處理,其步驟為: 1)優化VR場景模型的幾何面數 VR場景模型的優化是要對每個獨立的模型面數進行精簡,還需要對模型的個數進行精簡; 2)優化VR場景獨立模型對象的數量 將相同材質的物共用好材質;調整好各自的貼圖坐標;然後再將這些相同材質的物體進行合併以減少模型個數; 3)優化VR場景模型的貼圖量和貼圖細節; 將單獨的模型對象紋理全部烘焙在一張紋理上,重新定位紋理坐標,貼圖格式轉換為dds格式,能夠直接通過顯卡計算,加快載入速度。
3.根據權利要求1所述的虛擬實境下的海量模型數據動態調度與實時異步加載方法,其特徵在於:所述對模型場景整體的切割分塊, 1)對海量模型數據進行分塊; 海量模型數據對應較大空間範圍廣度的模型場景內容,根據VR系統的漫遊器操作設定對三維空間視錐體,視錐體的分析,計算出平面內可見場景空間的範圍值,依照此範圍值確定對應分塊空間的極限值,然後將場景空間的笛卡爾坐標系的高位坐標截取作為塊號,低位坐標極限值為視錐體可見範圍極限值; 2)對分塊排序並建立索引表; 依照高位坐標值生成的塊號的空間關係,將整個場景分塊生成的分塊號序列進行排序,並保存在外部文件中,每條塊號記錄文件包括:塊號ID,塊號名,塊號坐標,塊號備註; 3)將分塊數據打包; 將原始場景的模型數據分塊切割後,對每個分塊後的模型數據塊添加塊號ID,此塊號ID對應分塊索引表中塊號記錄文件中的塊號ID,通過此ID進行關聯,實現遍歷索引表找到對應ID的分塊數據包功能,然後將分塊數據包壓縮打包成二進位流文件。
4.根據權利要求1所述的虛擬實境下的海量模型數據動態調度與實時異步加載方法,其特徵在於:所述多線程並行分布加載,其步驟為: 其步驟為:1)使用預加載線程載入場景分塊索引表; 在VR系統初始化階段,啟動線程載入場景分塊索引表,當海量模型數據時,索引表體積偏大,使用線程加載能保證在VR系統初始化中其他操作不受影響; 2)使用異步加載線程動態的加載場景分塊; 在場景漫遊器初始化完成後,操作漫遊器視錐體進行場景漫遊時,開始計算當前視錐體與場景的交點區域,確定分塊後,啟動異步加載線程動態加載當前分塊號對應的場景分塊模型數據包; 3)使用渲染線程渲染模型場景紋理和模型頂點結構; 加載完模型數據進內存後,啟動渲染線程渲染場景紋理和模型頂點幾何數據。
5.根據權利要求1所述的虛擬實境下的海量模型數據動態調度與實時異步加載方法,其特徵在於:所述視錐體裁剪,其步驟為:1)計算當前視錐體與場景相交區域; 將地形檢測的塊狀物體放到場景裡面進行設置,每一個檢測塊都對應著一塊分塊號,位置與其對應的地形一致;當漫遊器視錐體的自身Z軸方向與某個檢測塊發生碰撞之後,及獲得視錐體所需顯示的當前區域模型分塊號; 2)遍歷模型分塊索引表獲得當前相交區域塊號; 獲得當前視錐體範圍對應塊號後,遍歷模型分塊索引表,通過分塊ID查找到對應場景模型分塊包數據,然後從本地硬碟或網絡異步加載分塊包中數據到內存中,將模型分塊索引表中獲得的快號對象的高位坐標值同場景模型分塊包中數據的低位坐標值進行拼接,得到最終的完整坐標,然後顯示在場景中; 3)動態調度塊號對應的模型數據包,加載進當前場景; 將該區塊的分塊數據包載入到內存中,異步克隆其主資源中各個子物體到其相應的位置;當整個場景中加載的區塊數目超出一個事先設定的值時或系統的內存監控消耗達到臨界值時,就會調用動態調度優化處理算法,計算距離漫遊器視錐體中心區域最遠的地塊區域,獲取地塊的分塊ID和對應的內存中分塊數據進行釋放,從而降低系統內存負載。
【文檔編號】G06T17/00GK103914868SQ201310708102
【公開日】2014年7月9日 申請日期:2013年12月20日 優先權日:2013年12月20日
【發明者】陳金龍, 伍軼斌, 胡俊鑫, 覃祖茂, 謝燕武, 伍正中, 張利學, 李勇, 吳旻馨, 馬永麗 申請人:柳州騰龍煤電科技股份有限公司