亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

三維場景管理方法及三維場景管理系統(tǒng)與流程

文檔序號:12157957閱讀:549來源:國知局
三維場景管理方法及三維場景管理系統(tǒng)與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體而言,涉及一種三維場景管理方法和一種三維場景管理系統(tǒng)。



背景技術(shù):

傳統(tǒng)的三維圖形文件一般采用單個(gè)文件或少數(shù)幾個(gè)文件描述三維顯示,如廣聯(lián)達(dá)算量GCL文件,Autodesk Revit文件,其特點(diǎn)是用一個(gè)文件保存所有的業(yè)務(wù)數(shù)據(jù)和三維圖形數(shù)據(jù),這樣非常方便文件的復(fù)制和點(diǎn)對點(diǎn)傳輸,但隨著移動(dòng)互聯(lián)網(wǎng)和云計(jì)算的發(fā)展,人們對三維圖形的需求越來越多,越來越多的應(yīng)用都需要在Web端和移動(dòng)端顯示三維數(shù)據(jù),如此傳統(tǒng)的單個(gè)的大文件滿足不了在Web端和移動(dòng)端的輕量化顯示:通常文件只有在全部傳輸完成后才能夠被解析,但由于移動(dòng)設(shè)備和瀏覽器的內(nèi)存和計(jì)算能力的限制,無法解析較大的模型,用戶需要等待較長的時(shí)間才能下載和顯示三維場景。

相關(guān)技術(shù)中,比較流行的三維場景的輕量化描述技術(shù)有GLTF(GL Transmission Format,GL的描述格式)和Autodesk A360的顯示格式,其均是采用單一JSON文件保存場景文件,因此需要下載完整的文件才能解析,當(dāng)遇到構(gòu)件數(shù)目較多的情況下,生成的JSON文件很大,會(huì)影響傳輸和解析效率,甚至有因?yàn)樘蠖鴮?dǎo)致瀏覽器無法加載的情況。



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

本發(fā)明正是基于上述技術(shù)問題至少之一,提出了一種新的三維場景管理方案,基于樹結(jié)構(gòu)實(shí)現(xiàn)對三維場景的輕量化描述,滿足了移動(dòng)端和互聯(lián)網(wǎng)應(yīng)用對三維場景的輕量化顯示需求。

有鑒于此,本發(fā)明提出了一種三維場景管理方法,包括:預(yù)先基于樹結(jié)構(gòu)對目標(biāo)三維場景中的主場景進(jìn)行劃分,以獲取與所述樹結(jié)構(gòu)的每個(gè)葉子節(jié)點(diǎn)對應(yīng)的子場景,其中,所述主場景中存儲(chǔ)有所述樹結(jié)構(gòu),每個(gè)所述葉子節(jié)點(diǎn)對應(yīng)的子場景中存儲(chǔ)有渲染對象,每個(gè)所述葉子節(jié)點(diǎn)中存儲(chǔ)有與其對應(yīng)的子場景的索引標(biāo)識(shí);在加載所述目標(biāo)三維場景的過程中,基于每個(gè)所述葉子節(jié)點(diǎn)存儲(chǔ)的索引標(biāo)識(shí)查找對應(yīng)的子場景,并對其進(jìn)行加載顯示。

在該技術(shù)方案中,通過預(yù)先基于樹結(jié)構(gòu)對目標(biāo)三維場景中的主場景進(jìn)行劃分,以獲取與樹結(jié)構(gòu)的每個(gè)葉子節(jié)點(diǎn)對應(yīng)的子場景,其中,主場景中存儲(chǔ)有樹結(jié)構(gòu),每個(gè)葉子節(jié)點(diǎn)中存儲(chǔ)有與其對應(yīng)的子場景的索引標(biāo)識(shí),在后續(xù)加載過程中,基于每個(gè)葉子節(jié)點(diǎn)存儲(chǔ)的索引標(biāo)識(shí)查找對應(yīng)的子場景以對其進(jìn)行加載顯示,將主場景劃分為多個(gè)子場景,減小主場景本身的大小,以支持更大的三維場景,滿足了移動(dòng)端和互聯(lián)網(wǎng)應(yīng)用對三維場景的輕量化顯示需求,同時(shí)由于主場景被劃分為多個(gè)子場景,無需一次性全部進(jìn)行加載,可邊加載邊解析顯示,提高了整體的處理速度。

在上述技術(shù)方案中,優(yōu)選地,還包括:基于所述主場景中的渲染對象的總個(gè)數(shù)和所述主場景的總尺寸,確定每個(gè)所述葉子節(jié)點(diǎn)的容量。

在該技術(shù)方案中,通過基于主場景中的渲染對象的總個(gè)數(shù)和主場景的總尺寸來確定每個(gè)葉子節(jié)點(diǎn)的容量,使得從體上控制葉子節(jié)點(diǎn)的個(gè)數(shù)和樹結(jié)構(gòu)的深度,其中,樹結(jié)構(gòu)的深度一般不超過8,對于建筑場景,葉子節(jié)點(diǎn)的尺寸可以劃分為5m×5m×5m。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,在任一所述葉子節(jié)點(diǎn)對應(yīng)有多個(gè)子場景的情況下,所述三維場景管理方法還包括:獲取所述多個(gè)子場景中每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值;計(jì)算所述每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值的比例值;將所述多個(gè)子場景中比例值處于第一預(yù)設(shè)范圍內(nèi)的子場景作為大組子場景;將所述多個(gè)子場景中比例值處于第二預(yù)設(shè)范圍內(nèi)的子場景作為中組子場景;將所述多個(gè)子場景中比例值處于第三預(yù)設(shè)范圍內(nèi)的子場景作為小組子場景;其中,所述每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值均包括:包圍盒的體積或包圍盒的最長邊。

在該技術(shù)方案中,通過計(jì)算每個(gè)子場景的渲染對象的包圍盒參考值和任一葉子節(jié)點(diǎn)的包圍盒參考值的比例值,對多個(gè)子場景進(jìn)行分組,為后續(xù)選擇性加載或釋放子場景提供必要前提保障。其中,第一預(yù)設(shè)范圍可為[0.5,1],包括端點(diǎn)值0.5和1,第二預(yù)設(shè)范圍可為[0.2,0.5),包括端點(diǎn)值0.2,第三預(yù)設(shè)范圍為(0,0.2)。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,還包括:在加載任一所述葉子節(jié)點(diǎn)對應(yīng)的所述多個(gè)子場景的過程中,當(dāng)任一所述葉子節(jié)點(diǎn)處于視錐裁剪范圍外時(shí),釋放所述多個(gè)子場景;當(dāng)任一所述葉子節(jié)點(diǎn)處于視錐裁剪范圍內(nèi)時(shí),根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對所述多個(gè)子場景進(jìn)行加載。

在該技術(shù)方案中,在任一葉子節(jié)點(diǎn)處于視錐裁剪范圍外時(shí),即便加載顯示該葉子節(jié)點(diǎn)對應(yīng)的子場景,用戶也無法觀察到,所以此時(shí)釋放該葉子節(jié)點(diǎn)對應(yīng)的子場景,降低系統(tǒng)的運(yùn)行負(fù)荷,在當(dāng)任一葉子節(jié)點(diǎn)處于視錐裁剪范圍內(nèi)時(shí),再根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對多個(gè)子場景進(jìn)行加載,以提高子場景的載入速度。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對所述多個(gè)子場景進(jìn)行加載的步驟,具體包括:在所述距離處于第一距離區(qū)間內(nèi)時(shí),加載所述大組子場景;在所述距離處于第二距離區(qū)間內(nèi)時(shí),加載所述中組子場景;在所述距離處于第三距離區(qū)間內(nèi)時(shí),加載所述小組子場景;其中,所述第一距離區(qū)間、所述第一距離區(qū)間和所述距離區(qū)間為依次減小的距離區(qū)間。

在該技術(shù)方案中,通過相機(jī)與任一葉子節(jié)點(diǎn)之間的距離遠(yuǎn)近來選擇性加載子場景,具體地,相機(jī)與任一葉子節(jié)點(diǎn)之間的距離較遠(yuǎn)時(shí),若加載小組子場景和中組子場景,用戶也不易觀察,此時(shí)加載大組子場景,便于用戶觀察,當(dāng)相機(jī)與任一葉子節(jié)點(diǎn)之間的距離較小時(shí),再加載中組子場景和小組子場景,確保用戶看到的位于子場景中的大渲染對象先顯示,小渲染對象后顯示,在提高子場景的載入速度的同時(shí),更貼合實(shí)際的使用需求。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,還包括:將每個(gè)所述葉子節(jié)點(diǎn)對應(yīng)的子場景中的渲染對象的模型數(shù)據(jù)以文件形式單獨(dú)存儲(chǔ),并在存儲(chǔ)有所述渲染對象的子場景中保留所述渲染對象的模型數(shù)據(jù)的索引標(biāo)識(shí)。

在該技術(shù)方案中,通過以文件形式單獨(dú)存儲(chǔ)渲染對象的模型數(shù)據(jù),子場景中僅保留模型數(shù)據(jù)的索引標(biāo)識(shí),在需要模型數(shù)據(jù)時(shí)再根據(jù)索引標(biāo)識(shí)進(jìn)行查找,減小了子場景的大小,進(jìn)一步加快了子場景的載入速度,其中,渲染對象的模型數(shù)據(jù)包括頂點(diǎn)位置、三角形頂點(diǎn)索引、頂點(diǎn)法向量數(shù)據(jù),文件形式可以是二進(jìn)制形式的文件。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述樹結(jié)構(gòu)包括八叉樹結(jié)構(gòu)。

在該技術(shù)方案中,八叉樹結(jié)構(gòu)是一種用于描述三維空間的樹狀數(shù)據(jù)結(jié)構(gòu),八叉樹的每個(gè)節(jié)點(diǎn)表示一個(gè)正方體的體積元素,每個(gè)節(jié)點(diǎn)有八個(gè)子節(jié)點(diǎn),將八個(gè)子節(jié)點(diǎn)所表示的體積元素加在一起就等于父節(jié)點(diǎn)的體積。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述目標(biāo)三維場景包括建筑場景。

根據(jù)本發(fā)明的第二方面,提出了一種三維場景管理系統(tǒng),包括:處理單元,用于預(yù)先基于樹結(jié)構(gòu)對目標(biāo)三維場景中的主場景進(jìn)行劃分,以獲取與所述樹結(jié)構(gòu)的每個(gè)葉子節(jié)點(diǎn)對應(yīng)的子場景,其中,所述主場景中存儲(chǔ)有所述樹結(jié)構(gòu),每個(gè)所述葉子節(jié)點(diǎn)對應(yīng)的子場景中存儲(chǔ)有渲染對象,每個(gè)所述葉子節(jié)點(diǎn)中存儲(chǔ)有與其對應(yīng)的子場景的索引標(biāo)識(shí);加載單元,用于在加載所述目標(biāo)三維場景的過程中,基于每個(gè)所述葉子節(jié)點(diǎn)存儲(chǔ)的索引標(biāo)識(shí)查找對應(yīng)的子場景,并對其進(jìn)行加載顯示。

在該技術(shù)方案中,通過預(yù)先基于樹結(jié)構(gòu)對目標(biāo)三維場景中的主場景進(jìn)行劃分,以獲取與樹結(jié)構(gòu)的每個(gè)葉子節(jié)點(diǎn)對應(yīng)的子場景,其中,主場景中存儲(chǔ)有樹結(jié)構(gòu),每個(gè)葉子節(jié)點(diǎn)中存儲(chǔ)有與其對應(yīng)的子場景的索引標(biāo)識(shí),在后續(xù)加載過程中,基于每個(gè)葉子節(jié)點(diǎn)存儲(chǔ)的索引標(biāo)識(shí)查找對應(yīng)的子場景以對其進(jìn)行加載顯示,將主場景劃分為多個(gè)子場景,減小主場景本身的大小,以支持更大的三維場景,滿足了移動(dòng)端和互聯(lián)網(wǎng)應(yīng)用對三維場景的輕量化顯示需求,同時(shí)由于主場景被劃分為多個(gè)子場景,無需一次性全部進(jìn)行加載,可邊加載邊解析顯示,提高了整體的處理速度。

在上述技術(shù)方案中,優(yōu)選地,還包括:確定單元,用于基于所述主場景中的渲染對象的總個(gè)數(shù)和所述主場景的總尺寸,確定每個(gè)所述葉子節(jié)點(diǎn)的容量。

在該技術(shù)方案中,通過基于主場景中的渲染對象的總個(gè)數(shù)和主場景的總尺寸來確定每個(gè)葉子節(jié)點(diǎn)的容量,使得從體上控制葉子節(jié)點(diǎn)的個(gè)數(shù)和樹結(jié)構(gòu)的深度,其中,樹結(jié)構(gòu)的深度一般不超過8,對于建筑場景,葉子節(jié)點(diǎn)的尺寸可以劃分為5m×5m×5m。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,在任一所述葉子節(jié)點(diǎn)對應(yīng)有多個(gè)子場景的情況下,所述三維場景管理系統(tǒng)還包括:獲取單元,用于獲取所述多個(gè)子場景中每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值;計(jì)算單元,用于計(jì)算所述每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值的比例值;分組單元,用于將所述多個(gè)子場景中比例值處于第一預(yù)設(shè)范圍內(nèi)的子場景作為大組子場景,將所述多個(gè)子場景中比例值處于第二預(yù)設(shè)范圍內(nèi)的子場景作為中組子場景,將所述多個(gè)子場景中比例值處于第三預(yù)設(shè)范圍內(nèi)的子場景作為小組子場景;其中,所述每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值均包括:包圍盒的體積或包圍盒的最長邊。

在該技術(shù)方案中,通過計(jì)算每個(gè)子場景的渲染對象的包圍盒參考值和任一葉子節(jié)點(diǎn)的包圍盒參考值的比例值,對多個(gè)子場景進(jìn)行分組,為后續(xù)選擇性加載或釋放子場景提供必要前提保障。其中,第一預(yù)設(shè)范圍可為[0.5,1],包括端點(diǎn)值0.5和1,第二預(yù)設(shè)范圍可為[0.2,0.5),包括端點(diǎn)值0.2,第三預(yù)設(shè)范圍為(0,0.2)。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述加載單元包括:第一控制單元,用于在加載任一所述葉子節(jié)點(diǎn)對應(yīng)的所述多個(gè)子場景的過程中,當(dāng)任一所述葉子節(jié)點(diǎn)處于視錐裁剪范圍外時(shí),釋放所述多個(gè)子場景;第二控制單元,用于當(dāng)任一所述葉子節(jié)點(diǎn)處于視錐裁剪范圍內(nèi)時(shí),根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對所述多個(gè)子場景進(jìn)行加載。

在該技術(shù)方案中,在任一葉子節(jié)點(diǎn)處于視錐裁剪范圍外時(shí),即便加載顯示該葉子節(jié)點(diǎn)對應(yīng)的子場景,用戶也無法觀察到,所以此時(shí)釋放該葉子節(jié)點(diǎn)對應(yīng)的子場景,降低系統(tǒng)的運(yùn)行負(fù)荷,在當(dāng)任一葉子節(jié)點(diǎn)處于視錐裁剪范圍內(nèi)時(shí),再根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對多個(gè)子場景進(jìn)行加載,以提高子場景的載入速度。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述第二控制單元具體用于:在所述距離處于第一距離區(qū)間內(nèi)時(shí),加載所述大組子場景;在所述距離處于第二距離區(qū)間內(nèi)時(shí),加載所述中組子場景;在所述距離處于第三距離區(qū)間內(nèi)時(shí),加載所述小組子場景;其中,所述第一距離區(qū)間、所述第一距離區(qū)間和所述距離區(qū)間為依次減小的距離區(qū)間。

在該技術(shù)方案中,通過相機(jī)與任一葉子節(jié)點(diǎn)之間的距離遠(yuǎn)近來選擇性加載子場景,具體地,相機(jī)與任一葉子節(jié)點(diǎn)之間的距離較遠(yuǎn)時(shí),若加載小組子場景和中組子場景,用戶也不易觀察,此時(shí)加載大組子場景,便于用戶觀察,當(dāng)相機(jī)與任一葉子節(jié)點(diǎn)之間的距離較小時(shí),再加載中組子場景和小組子場景,確保用戶看到的位于子場景中的大渲染對象先顯示,小渲染對象后顯示,在提高子場景的載入速度的同時(shí),更貼合實(shí)際的使用需求。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,還包括:存儲(chǔ)單元,用于將每個(gè)所述葉子節(jié)點(diǎn)對應(yīng)的子場景中的渲染對象的模型數(shù)據(jù)以文件形式單獨(dú)存儲(chǔ),并在存儲(chǔ)有所述渲染對象的子場景中保留所述渲染對象的模型數(shù)據(jù)的索引標(biāo)識(shí)。

在該技術(shù)方案中,通過以文件形式單獨(dú)存儲(chǔ)渲染對象的模型數(shù)據(jù),子場景中僅保留模型數(shù)據(jù)的索引標(biāo)識(shí),在需要模型數(shù)據(jù)時(shí)再根據(jù)索引標(biāo)識(shí)進(jìn)行查找,減小了子場景的大小,進(jìn)一步加快了子場景的載入速度,其中,渲染對象的模型數(shù)據(jù)包括頂點(diǎn)位置、三角形頂點(diǎn)索引、頂點(diǎn)法向量數(shù)據(jù),文件形式可以是二進(jìn)制形式的文件。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述樹結(jié)構(gòu)包括八叉樹結(jié)構(gòu)。

在該技術(shù)方案中,八叉樹結(jié)構(gòu)是一種用于描述三維空間的樹狀數(shù)據(jù)結(jié)構(gòu),八叉樹的每個(gè)節(jié)點(diǎn)表示一個(gè)正方體的體積元素,每個(gè)節(jié)點(diǎn)有八個(gè)子節(jié)點(diǎn),將八個(gè)子節(jié)點(diǎn)所表示的體積元素加在一起就等于父節(jié)點(diǎn)的體積。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述目標(biāo)三維場景包括建筑場景。

通過以上技術(shù)方案,基于樹結(jié)構(gòu)實(shí)現(xiàn)對三維場景的輕量化描述,可支持更大的三維場景,滿足了移動(dòng)端和互聯(lián)網(wǎng)應(yīng)用對三維場景的輕量化顯示需求,同時(shí)無需一次性全部進(jìn)行加載,可邊加載邊解析顯示,提高了整體的處理速度。

附圖說明

圖1示出了根據(jù)本發(fā)明的實(shí)施例的三維場景管理方法的示意流程圖;

圖2示出了根據(jù)本發(fā)明的實(shí)施例的三維場景管理系統(tǒng)的示意框圖。

具體實(shí)施方式

為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請的實(shí)施例及實(shí)施例中的特征可以相互組合。

在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開的具體實(shí)施例的限制。

圖1示出了根據(jù)本發(fā)明的實(shí)施例的三維場景管理方法的示意流程圖。

如圖1所示,根據(jù)本發(fā)明的實(shí)施例的三維場景管理方法,包括:

步驟102,預(yù)先基于樹結(jié)構(gòu)對目標(biāo)三維場景中的主場景進(jìn)行劃分,以獲取與所述樹結(jié)構(gòu)的每個(gè)葉子節(jié)點(diǎn)對應(yīng)的子場景,其中,所述主場景中存儲(chǔ)有所述樹結(jié)構(gòu),每個(gè)所述葉子節(jié)點(diǎn)對應(yīng)的子場景中存儲(chǔ)有渲染對象,每個(gè)所述葉子節(jié)點(diǎn)中存儲(chǔ)有與其對應(yīng)的子場景的索引標(biāo)識(shí);

步驟104,在加載所述目標(biāo)三維場景的過程中,基于每個(gè)所述葉子節(jié)點(diǎn)存儲(chǔ)的索引標(biāo)識(shí)查找對應(yīng)的子場景,并對其進(jìn)行加載顯示。具體地,可通過多線程加載子場景。

在該技術(shù)方案中,通過預(yù)先基于樹結(jié)構(gòu)對目標(biāo)三維場景中的主場景進(jìn)行劃分,以獲取與樹結(jié)構(gòu)的每個(gè)葉子節(jié)點(diǎn)對應(yīng)的子場景,其中,主場景中存儲(chǔ)有樹結(jié)構(gòu),每個(gè)葉子節(jié)點(diǎn)中存儲(chǔ)有與其對應(yīng)的子場景的索引標(biāo)識(shí),在后續(xù)加載過程中,基于每個(gè)葉子節(jié)點(diǎn)存儲(chǔ)的索引標(biāo)識(shí)查找對應(yīng)的子場景以對其進(jìn)行加載顯示,將主場景劃分為多個(gè)子場景,減小主場景本身的大小,以支持更大的三維場景,滿足了移動(dòng)端和互聯(lián)網(wǎng)應(yīng)用對三維場景的輕量化顯示需求,同時(shí)由于主場景被劃分為多個(gè)子場景,無需一次性全部進(jìn)行加載,可邊加載邊解析顯示,提高了整體的處理速度。

在上述技術(shù)方案中,優(yōu)選地,還包括:基于所述主場景中的渲染對象的總個(gè)數(shù)和所述主場景的總尺寸,確定每個(gè)所述葉子節(jié)點(diǎn)的容量。

在該技術(shù)方案中,通過基于主場景中的渲染對象的總個(gè)數(shù)和主場景的總尺寸來確定每個(gè)葉子節(jié)點(diǎn)的容量,使得從體上控制葉子節(jié)點(diǎn)的個(gè)數(shù)和樹結(jié)構(gòu)的深度,其中,樹結(jié)構(gòu)的深度一般不超過8,對于建筑場景,葉子節(jié)點(diǎn)的尺寸可以劃分為5m×5m×5m。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,在任一所述葉子節(jié)點(diǎn)對應(yīng)有多個(gè)子場景的情況下,所述三維場景管理方法還包括:獲取所述多個(gè)子場景中每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值;計(jì)算所述每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值的比例值;將所述多個(gè)子場景中比例值處于第一預(yù)設(shè)范圍內(nèi)的子場景作為大組子場景;將所述多個(gè)子場景中比例值處于第二預(yù)設(shè)范圍內(nèi)的子場景作為中組子場景;將所述多個(gè)子場景中比例值處于第三預(yù)設(shè)范圍內(nèi)的子場景作為小組子場景;其中,所述每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值均包括:包圍盒的體積或包圍盒的最長邊。

在該技術(shù)方案中,通過計(jì)算每個(gè)子場景的渲染對象的包圍盒參考值和任一葉子節(jié)點(diǎn)的包圍盒參考值的比例值,對多個(gè)子場景進(jìn)行分組,為后續(xù)選擇性加載或釋放子場景提供必要前提保障。其中,包圍盒算法是用體積稍大且特性簡單的幾何體(即包圍盒)來近似替代復(fù)雜的幾何對象,第一預(yù)設(shè)范圍可為[0.5,1],包括端點(diǎn)值0.5和1,第二預(yù)設(shè)范圍可為[0.2,0.5),包括端點(diǎn)值0.2,第三預(yù)設(shè)范圍為(0,0.2)。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,還包括:在加載任一所述葉子節(jié)點(diǎn)對應(yīng)的所述多個(gè)子場景的過程中,當(dāng)任一所述葉子節(jié)點(diǎn)處于視錐裁剪范圍外時(shí),釋放所述多個(gè)子場景;當(dāng)任一所述葉子節(jié)點(diǎn)處于視錐裁剪范圍內(nèi)時(shí),根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對所述多個(gè)子場景進(jìn)行加載。

在該技術(shù)方案中,在任一葉子節(jié)點(diǎn)處于視錐裁剪范圍外時(shí),即便加載顯示該葉子節(jié)點(diǎn)對應(yīng)的子場景,用戶也無法觀察到,所以此時(shí)釋放該葉子節(jié)點(diǎn)對應(yīng)的子場景,降低系統(tǒng)的運(yùn)行負(fù)荷,在當(dāng)任一葉子節(jié)點(diǎn)處于視錐裁剪范圍內(nèi)時(shí),再根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對多個(gè)子場景進(jìn)行加載,以提高子場景的載入速度。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對所述多個(gè)子場景進(jìn)行加載的步驟,具體包括:在所述距離處于第一距離區(qū)間內(nèi)時(shí),加載所述大組子場景;在所述距離處于第二距離區(qū)間內(nèi)時(shí),加載所述中組子場景;在所述距離處于第三距離區(qū)間內(nèi)時(shí),加載所述小組子場景;其中,所述第一距離區(qū)間、所述第一距離區(qū)間和所述距離區(qū)間為依次減小的距離區(qū)間。

在該技術(shù)方案中,通過相機(jī)與任一葉子節(jié)點(diǎn)之間的距離遠(yuǎn)近來選擇性加載子場景,具體地,相機(jī)與任一葉子節(jié)點(diǎn)之間的距離較遠(yuǎn)時(shí),若加載小組子場景和中組子場景,用戶也不易觀察,此時(shí)加載大組子場景,便于用戶觀察,當(dāng)相機(jī)與任一葉子節(jié)點(diǎn)之間的距離較小時(shí),再加載中組子場景和小組子場景,確保用戶看到的位于子場景中的大渲染對象先顯示,小渲染對象后顯示,在提高子場景的載入速度的同時(shí),更貼合實(shí)際的使用需求。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,還包括:將每個(gè)所述葉子節(jié)點(diǎn)對應(yīng)的子場景中的渲染對象的模型數(shù)據(jù)以文件形式單獨(dú)存儲(chǔ),并在存儲(chǔ)有所述渲染對象的子場景中保留所述渲染對象的模型數(shù)據(jù)的索引標(biāo)識(shí)。

在該技術(shù)方案中,通過以文件形式單獨(dú)存儲(chǔ)渲染對象的模型數(shù)據(jù),子場景中僅保留模型數(shù)據(jù)的索引標(biāo)識(shí),在需要模型數(shù)據(jù)時(shí)再根據(jù)索引標(biāo)識(shí)進(jìn)行查找,減小了子場景的大小,進(jìn)一步加快了子場景的載入速度,其中,渲染對象的模型數(shù)據(jù)包括頂點(diǎn)位置、三角形頂點(diǎn)索引、頂點(diǎn)法向量數(shù)據(jù),文件形式可以是二進(jìn)制形式的文件。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述樹結(jié)構(gòu)包括八叉樹結(jié)構(gòu)。

在該技術(shù)方案中,八叉樹結(jié)構(gòu)是一種用于描述三維空間的樹狀數(shù)據(jù)結(jié)構(gòu),八叉樹的每個(gè)節(jié)點(diǎn)表示一個(gè)正方體的體積元素,每個(gè)節(jié)點(diǎn)有八個(gè)子節(jié)點(diǎn),將八個(gè)子節(jié)點(diǎn)所表示的體積元素加在一起就等于父節(jié)點(diǎn)的體積。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述目標(biāo)三維場景包括建筑場景。

圖2示出了根據(jù)本發(fā)明的實(shí)施例的三維場景管理系統(tǒng)的示意框圖。

如圖2所示,根據(jù)本發(fā)明的實(shí)施例的三維場景管理系統(tǒng)200,包括:處理單元202和加載單元204。

其中,處理單元202用于預(yù)先基于樹結(jié)構(gòu)對目標(biāo)三維場景中的主場景進(jìn)行劃分,以獲取與所述樹結(jié)構(gòu)的每個(gè)葉子節(jié)點(diǎn)對應(yīng)的子場景,其中,所述主場景中存儲(chǔ)有所述樹結(jié)構(gòu),每個(gè)所述葉子節(jié)點(diǎn)對應(yīng)的子場景中存儲(chǔ)有渲染對象,每個(gè)所述葉子節(jié)點(diǎn)中存儲(chǔ)有與其對應(yīng)的子場景的索引標(biāo)識(shí);加載單元204用于在加載所述目標(biāo)三維場景的過程中,基于每個(gè)所述葉子節(jié)點(diǎn)存儲(chǔ)的索引標(biāo)識(shí)查找對應(yīng)的子場景,并對其進(jìn)行加載顯示。

在該技術(shù)方案中,通過預(yù)先基于樹結(jié)構(gòu)對目標(biāo)三維場景中的主場景進(jìn)行劃分,以獲取與樹結(jié)構(gòu)的每個(gè)葉子節(jié)點(diǎn)對應(yīng)的子場景,其中,主場景中存儲(chǔ)有樹結(jié)構(gòu),每個(gè)葉子節(jié)點(diǎn)中存儲(chǔ)有與其對應(yīng)的子場景的索引標(biāo)識(shí),在后續(xù)加載過程中,基于每個(gè)葉子節(jié)點(diǎn)存儲(chǔ)的索引標(biāo)識(shí)查找對應(yīng)的子場景以對其進(jìn)行加載顯示,具體地,可通過多線程加載子場景,將主場景劃分為多個(gè)子場景,減小主場景本身的大小,以支持更大的三維場景,滿足了移動(dòng)端和互聯(lián)網(wǎng)應(yīng)用對三維場景的輕量化顯示需求,同時(shí)由于主場景被劃分為多個(gè)子場景,無需一次性全部進(jìn)行加載,可邊加載邊解析顯示,提高了整體的處理速度。

在上述技術(shù)方案中,優(yōu)選地,還包括:確定單元206,用于基于所述主場景中的渲染對象的總個(gè)數(shù)和所述主場景的總尺寸,確定每個(gè)所述葉子節(jié)點(diǎn)的容量。

在該技術(shù)方案中,通過基于主場景中的渲染對象的總個(gè)數(shù)和主場景的總尺寸來確定每個(gè)葉子節(jié)點(diǎn)的容量,使得從體上控制葉子節(jié)點(diǎn)的個(gè)數(shù)和樹結(jié)構(gòu)的深度,其中,樹結(jié)構(gòu)的深度一般不超過8,對于建筑場景,葉子節(jié)點(diǎn)的尺寸可以劃分為5m×5m×5m。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,在任一所述葉子節(jié)點(diǎn)對應(yīng)有多個(gè)子場景的情況下,所述三維場景管理系統(tǒng)200還包括:獲取單元208,用于獲取所述多個(gè)子場景中每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值;計(jì)算單元210,用于計(jì)算所述每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值的比例值;分組單元212,用于將所述多個(gè)子場景中比例值處于第一預(yù)設(shè)范圍內(nèi)的子場景作為大組子場景,將所述多個(gè)子場景中比例值處于第二預(yù)設(shè)范圍內(nèi)的子場景作為中組子場景,將所述多個(gè)子場景中比例值處于第三預(yù)設(shè)范圍內(nèi)的子場景作為小組子場景;其中,所述每個(gè)子場景的渲染對象的包圍盒參考值和任一所述葉子節(jié)點(diǎn)的包圍盒參考值均包括:包圍盒的體積或包圍盒的最長邊。

在該技術(shù)方案中,通過計(jì)算每個(gè)子場景的渲染對象的包圍盒參考值和任一葉子節(jié)點(diǎn)的包圍盒參考值的比例值,對多個(gè)子場景進(jìn)行分組,為后續(xù)選擇性加載或釋放子場景提供必要前提保障。其中,包圍盒算法是用體積稍大且特性簡單的幾何體(即包圍盒)來近似替代復(fù)雜的幾何對象,第一預(yù)設(shè)范圍可為[0.5,1],包括端點(diǎn)值0.5和1,第二預(yù)設(shè)范圍可為[0.2,0.5),包括端點(diǎn)值0.2,第三預(yù)設(shè)范圍為(0,0.2)。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述加載單元204包括:第一控制單元2042,用于在加載任一所述葉子節(jié)點(diǎn)對應(yīng)的所述多個(gè)子場景的過程中,當(dāng)任一所述葉子節(jié)點(diǎn)處于視錐裁剪范圍外時(shí),釋放所述多個(gè)子場景;第二控制單元2044,用于當(dāng)任一所述葉子節(jié)點(diǎn)處于視錐裁剪范圍內(nèi)時(shí),根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對所述多個(gè)子場景進(jìn)行加載。

在該技術(shù)方案中,在任一葉子節(jié)點(diǎn)處于視錐裁剪范圍外時(shí),即便加載顯示該葉子節(jié)點(diǎn)對應(yīng)的子場景,用戶也無法觀察到,所以此時(shí)釋放該葉子節(jié)點(diǎn)對應(yīng)的子場景,降低系統(tǒng)的運(yùn)行負(fù)荷,在當(dāng)任一葉子節(jié)點(diǎn)處于視錐裁剪范圍內(nèi)時(shí),再根據(jù)相機(jī)與任一所述葉子節(jié)點(diǎn)之間的距離,選擇性對多個(gè)子場景進(jìn)行加載,以提高子場景的載入速度。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述第二控制單元2044具體用于:在所述距離處于第一距離區(qū)間內(nèi)時(shí),加載所述大組子場景;在所述距離處于第二距離區(qū)間內(nèi)時(shí),加載所述中組子場景;在所述距離處于第三距離區(qū)間內(nèi)時(shí),加載所述小組子場景;其中,所述第一距離區(qū)間、所述第一距離區(qū)間和所述距離區(qū)間為依次減小的距離區(qū)間。

在該技術(shù)方案中,通過相機(jī)與任一葉子節(jié)點(diǎn)之間的距離遠(yuǎn)近來選擇性加載子場景,具體地,相機(jī)與任一葉子節(jié)點(diǎn)之間的距離較遠(yuǎn)時(shí),若加載小組子場景和中組子場景,用戶也不易觀察,此時(shí)加載大組子場景,便于用戶觀察,當(dāng)相機(jī)與任一葉子節(jié)點(diǎn)之間的距離較小時(shí),再加載中組子場景和小組子場景,確保用戶看到的位于子場景中的大渲染對象先顯示,小渲染對象后顯示,在提高子場景的載入速度的同時(shí),更貼合實(shí)際的使用需求。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,還包括:存儲(chǔ)單元214,用于將每個(gè)所述葉子節(jié)點(diǎn)對應(yīng)的子場景中的渲染對象的模型數(shù)據(jù)以文件形式單獨(dú)存儲(chǔ),并在存儲(chǔ)有所述渲染對象的子場景中保留所述渲染對象的模型數(shù)據(jù)的索引標(biāo)識(shí)。

在該技術(shù)方案中,通過以文件形式單獨(dú)存儲(chǔ)渲染對象的模型數(shù)據(jù),子場景中僅保留模型數(shù)據(jù)的索引標(biāo)識(shí),在需要模型數(shù)據(jù)時(shí)再根據(jù)索引標(biāo)識(shí)進(jìn)行查找,減小了子場景的大小,進(jìn)一步加快了子場景的載入速度,其中,渲染對象的模型數(shù)據(jù)包括頂點(diǎn)位置、三角形頂點(diǎn)索引、頂點(diǎn)法向量數(shù)據(jù),文件形式可以是二進(jìn)制形式的文件。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述樹結(jié)構(gòu)包括八叉樹結(jié)構(gòu)。

在該技術(shù)方案中,八叉樹結(jié)構(gòu)是一種用于描述三維空間的樹狀數(shù)據(jù)結(jié)構(gòu),八叉樹的每個(gè)節(jié)點(diǎn)表示一個(gè)正方體的體積元素,每個(gè)節(jié)點(diǎn)有八個(gè)子節(jié)點(diǎn),將八個(gè)子節(jié)點(diǎn)所表示的體積元素加在一起就等于父節(jié)點(diǎn)的體積。

在上述任一項(xiàng)技術(shù)方案中,優(yōu)選地,所述目標(biāo)三維場景包括建筑場景。

以下對本發(fā)明的技術(shù)方案作進(jìn)一步說明。

在本實(shí)施例中,把三維場景(指用于顯示三維對象的場景)分為一個(gè)主場景和多個(gè)子場景。主場景保存的是八叉樹空間加速結(jié)構(gòu),葉子節(jié)點(diǎn)保存的是子場景的索引ID,渲染對象保存按照空間和大小保存在子場景文件中,具體地:

(1)將三維場景里面的渲染對象根據(jù)其空間位置進(jìn)行等距離的八叉樹劃分。八叉樹葉子節(jié)點(diǎn)的容量根據(jù)三維場景中總的渲染對象總數(shù)和場景的總的尺寸計(jì)算獲得,在總體上控制葉子節(jié)點(diǎn)的個(gè)數(shù)和八叉樹的深度。一般八叉樹的深度不超過8,對于建筑場景,葉子節(jié)點(diǎn)的尺寸可以劃分為5m×5m×5m。

(2)將八叉樹葉子節(jié)點(diǎn)里的渲染對象依據(jù)其包圍盒的大小與葉子節(jié)點(diǎn)的包圍盒的比例進(jìn)行分組,生成子場景。比例計(jì)算可以按體積比例方法或按最長邊比例計(jì)算,比值在0.5~1之間分為“大”組,0.2~0.5之間為“中”組,小于0.2為“小”組。

(3)建立主場景和子場景的關(guān)系。把渲染對象分組保存在子場景中,葉子節(jié)點(diǎn)只是保存多個(gè)按大小分組的子場景的ID,根據(jù)子場景文件ID可以得到渲染對象。

(4)渲染對象的模型數(shù)據(jù)(如頂點(diǎn)位置、三角形頂點(diǎn)索引、頂點(diǎn)法向量數(shù)據(jù))以二進(jìn)制形式保存為單獨(dú)的文件,并且具有唯一的ID標(biāo)識(shí)。子場景文件只保留模型的ID,需要模型數(shù)據(jù)的時(shí)候根據(jù)ID查找。

在上述實(shí)施例中,能夠基于八叉樹空間加速結(jié)構(gòu)實(shí)現(xiàn)大的三維場景的輕量化表達(dá),更適用于移動(dòng)和互聯(lián)網(wǎng)環(huán)境下三維應(yīng)用,該方式具有以下優(yōu)點(diǎn):

(1)減少了主場景的大小,可以支持更大的三維場景。

(2)按照大小分組后,顯示引擎可以實(shí)現(xiàn)按需動(dòng)態(tài)加載和釋放子場景。比如根據(jù)相機(jī)的遠(yuǎn)近加載或這釋放子場景:在相機(jī)距離葉子節(jié)點(diǎn)比較遠(yuǎn)的地方,可以只加載保存較大的渲染對象的子場景;在距離較近的地方,再加載較小的子場景。當(dāng)某個(gè)葉子節(jié)點(diǎn)完全在視錐裁剪范圍外,可以把該葉子節(jié)點(diǎn)下的子場景釋放,在下次需要顯示的時(shí)候再加載。

(3)加快場景的載入速度。根據(jù)視錐剔除和葉子節(jié)點(diǎn)與相機(jī)的遠(yuǎn)近關(guān)系可以計(jì)算子場景加載的優(yōu)先級,讓看得見的大的物體先顯示,小物體后顯示。

(4)可以充分利用多線程加載子場景。場景被分離為若干子場景后,子場景之間解耦,可以利用多線程加載子場景。

以上結(jié)合附圖詳細(xì)說明了本發(fā)明的技術(shù)方案,本發(fā)明的技術(shù)方案提出了一種新的三維場景管理方案,基于樹結(jié)構(gòu)實(shí)現(xiàn)對三維場景的輕量化描述,可支持更大的三維場景,滿足了移動(dòng)端和互聯(lián)網(wǎng)應(yīng)用對三維場景的輕量化顯示需求,同時(shí)無需一次性全部進(jìn)行加載,可邊加載邊解析顯示,提高了整體的處理速度。

以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

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