本發(fā)明涉及圖像處理領域,具體而言,涉及一種靜態(tài)合并處理方法和裝置。
背景技術:
虛擬現(xiàn)實(Virtual Reality,簡稱為VR),是由美國VPL公司創(chuàng)建人拉尼爾(Jaron Lanier)在20世紀80年代初提出的。其具體內涵是:綜合利用計算機圖形系統(tǒng)和各種現(xiàn)實及控制等接口設備,在計算機上生成的、可交互的三維環(huán)境中提供沉浸感覺的技術。其中,計算機生成的、可交互的三維環(huán)境稱為虛擬環(huán)境(即Virtual Environment,簡稱VE)。虛擬現(xiàn)實技術是一種可以創(chuàng)建和體驗虛擬世界的計算機仿真系統(tǒng)的技術。它利用計算機生成一種模擬環(huán)境,利用多源信息融合的交互式三維動態(tài)視景和實體行為的系統(tǒng)仿真使用戶沉浸到該環(huán)境中。
因為VR要模擬現(xiàn)實中的感覺,因此延遲就成了一個很大的問題。這里的延遲是指,當你轉動頭部之后,屏幕上物理更新圖像相對于你本應看到的圖像之間的畫面延時。AMD的首席游戲科學家Richard Huddy認為,11毫秒或是更低的延遲對于互動性游戲來說是必需的,個別情況下20毫秒的延遲在一個360度的虛擬現(xiàn)實電影中移動也還可以接受。需要說明的是,延遲并非是作為一個硬件在性能方面的指標,而僅僅是硬件能否實現(xiàn)虛擬現(xiàn)實這種效果的一條基準線。
一般來說,一款PC/移動設備的幀率只需保持在30幀/秒以上,即可滿足玩家流暢游戲的需求。但對于沉浸式VR體驗來說,30幀/秒是遠遠不夠的。在此,需要先來解釋一下延遲度這個概念。所謂“延遲度”,是指從頭戴式設備的傳感器將方位信息傳入PC/移動設備開始,,經(jīng)過PC/移動設備的計算渲染最后傳回到顯示屏進行顯示的時間間隔。所以,用戶眼睛真正看到的實際上是幾十毫米之前的場景。
如果延遲度過長,則用戶實際看到的渲染場景是“一頓一頓”進行顯示的,進而增加了VR體驗的不適感,甚至讓人感到眩暈。一般來說,延遲度需要小于20ms且越小越好,這樣才能保證較好的VR體驗。如果想要延遲度小于20ms,則必須要保證幀率至少達到60幀/秒,甚至90幀/秒以上。而這種性能要求,即便是對于目前的主流手機來說來說,都是非常的苛刻了。
現(xiàn)有的游戲引擎一般會對場景中的模型會進行Static Batching,在引擎中被標記為Static的物體會在運行的時候,自動合并成一個物體,這樣可以降低運行時的DC。但是,Static Batching對物體的合并是基于物體在場景中渲染的先后順序,故合并具有很大隨機性,對普通游戲優(yōu)化的效果一般。但對于VR游戲,不但沒有效果,有時還會抵消視錐剔除的優(yōu)化,是性能變得更差。這是因為VR應用的具有高自由度的視角,隨機合并的兩個物體可能分別出現(xiàn)在用戶視角的前方和后方,本來在視錐剔除的情況下后方的物體不再被GPU渲染了。但在Static Batching后,前后兩個物體變成了一個物體,這時后面的物體無法被視錐剔除,使得GPU的負擔更加重了。同時每次合并的的幾何體數(shù)量無法控制,無法使得GPU的性能被平均分配到每一次渲染。
現(xiàn)有技術中還有一種方案是在建模工具合并幾何體,然后再導入3D引擎中使用。一般稱為手動合并。手動合并雖然可以防止抵消視錐剔除和導致較高的幾何體數(shù)量被渲染,但是需要借助建模工具合并比較耗時。同時需要人工估計用戶的角度來判斷哪些東西需要合并,會造成合并的不準確。并且無法在3D引擎中動態(tài)的修改幾何體的合并方式。
通常情況下3D應用的性能瓶頸大部分在渲染上,而場景又占了渲染的很大一部分性能,為了達到VR應用低延遲、高幀率的需求,針對場景的優(yōu)化在所難免。
針對相關技術中靜態(tài)合并導致的技術問題,目前尚未提出有效的解決方案。
技術實現(xiàn)要素:
本發(fā)明的主要目的在于提供一種靜態(tài)合并處理方法和裝置,以解決相關技術中場景渲染導致的技術問題。
為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種靜態(tài)合并處理方法,該方法包括:根據(jù)預先配置的參數(shù),將場景中的空間劃分為多個塊;在所述多個塊中的每一個塊內中,對標記為靜態(tài)的物體模型進行合并,生成新的模型;將所述塊中原有的物體模型進行隱藏或刪除。
進一步地,所述場景為自由視角場景,根據(jù)所述預先配置的參數(shù),將所述場景中的空間劃分為所述多個塊包括:在所述場景中,以用戶的位置為中心,將所述空間模擬為一個立體;根據(jù)所述預先配置的參數(shù),將所述立體劃分為所述多個塊。
進一步地,將所述場景中的空間劃分為所述多個塊包括:將所述空間根據(jù)視錐形劃分為多個視錐體,其中,每個所述視錐體作為一個塊,所述視錐體用于表示所述用戶的可見范圍。
進一步地,將所述空間根據(jù)視錐形劃分為多個所述視錐體包括:根據(jù)相機前剪裁平面和所述用戶的移動范圍確定所述視錐體的前剪裁平面;根據(jù)所述視錐體的前剪裁平面和相機后剪裁平面確定所述視錐體。
進一步地,所述用戶的移動范圍為所述用戶的最大可移動距離。
進一步地,將所述立體劃分為多個所述塊包括:將所述立體的頂部和底部劃分為單獨的塊;將所述立體除所述頂部和所述底部之外的部分劃分為多個所述塊。
進一步地,所述立體為一個球體,所述球體的半徑無限大,所述預先配置的參數(shù),包括以下至少之一:所述球體的半徑、開口角度;將所述空間劃分為多個所述塊包括:將所述空間的坐標轉換為球坐標系,根據(jù)所述預先配置的參數(shù)球坐標系將所述空間劃分為多個所述塊,得到每個塊的球坐標;在所述多個塊中的每一個塊中內,對標記為靜態(tài)的物體模型進行合并生成新的模型包括:將所述物體模型的坐標轉換為球坐標系,根據(jù)所述每一塊的球坐標和所述物體模型的球坐標判斷所述物體模型是否位于一個塊中,并對位于所述一個塊中的標記為靜態(tài)的物體模型進行合并。
進一步地,根據(jù)所述每一塊的球坐標和所述物體模型的球坐標判斷所述物體模型是否位于一個塊中,并對位于所述一個塊中的標記為靜態(tài)的物體模型進行合并,包括:判斷步驟,根據(jù)所述每一塊的球坐標和所述物體模型的球坐標判斷所述物體是否位于一個塊中,如果是,則將所述物體模型放入所述一個塊的合并隊列;循環(huán)步驟,重復執(zhí)行所述判斷步驟,遍歷所述場景中的所有物體模型;合并步驟,根據(jù)不同的類型將所述合并隊列里的物體模型拆分后,進行分類合并,所述類型包括以下至少之一:貼圖、材質、材質相關參數(shù)、網(wǎng)格、網(wǎng)格相關參數(shù)。
進一步地,將所述塊中原有的物體模型進行隱藏或刪除包括:判斷所述場景的展示效果是否達到預設條件;如果所述場景的展示效果沒有到達所述預設條件,則對所述原有的物體模型進行隱藏;如果所述場景的展示效果到達所述預設條件,則對所述原有的物體模型進行刪除。
為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,還提供了一種靜態(tài)合并處理裝置,該裝置包括:劃分單元,用于根據(jù)預先配置的參數(shù),將場景中的空間劃分為多個塊;合并單元,用于在所述多個塊中的每一個塊內中,對標記為靜態(tài)的物體模型進行合并,生成新的模型;隱藏單元,用于將所述塊中原有的物體模型進行隱藏或刪除。
進一步地,所述場景為自由視角場景,所述劃分單元包括:模擬模塊,用于在所述場景中,以用戶的位置為中心,將所述空間模擬為一個立體;劃分模塊,用于根據(jù)所述預先配置的參數(shù),將所述立體劃分為所述多個塊。
進一步地,所述劃分模塊用于:將所述空間根據(jù)視錐形劃分為多個視錐體,其中,每個所述視錐體作為一個塊,所述視錐體用于表示所述用戶的可見范圍。
進一步地,所述劃分模塊用于:根據(jù)相機前剪裁平面和所述用戶的移動范圍確定所述視錐體的前剪裁平面;根據(jù)所述視錐體的前剪裁平面和相機后剪裁平面確定所述視錐體。
進一步地,所述用戶的移動范圍為所述用戶的最大可移動距離。
進一步地,所述劃分模塊用于:將所述立體的頂部和底部劃分為單獨的塊;將所述立體除所述頂部和所述底部之外的部分劃分為多個所述塊。
進一步地,所述立體為一個球體,所述球體的半徑無限大,所述預先配置的參數(shù)包括以下至少之一:所述球體的半徑、開口角度,所述劃分單元用于:將所述空間的坐標轉換為球坐標系,根據(jù)所述預先配置的參數(shù)球坐標系將所述空間劃分為多個所述塊,得到每個塊的球坐標;所述合并單元用于:將所述物體模型的坐標轉換為球坐標系,根據(jù)所述每一塊的球坐標和所述物體模型的球坐標判斷所述物體模型是否位于一個塊中,并對位于所述一個塊中的標記為靜態(tài)的物體模型進行合并。
進一步地,所述合并單元包括:第一判斷模塊,用于執(zhí)行判斷步驟,根據(jù)所述每一塊的球坐標和所述物體模型的球坐標判斷所述物體模型是否位于一個塊中,如果是,則將所述物體模型放入所述一個塊的合并隊列;循環(huán)模塊,用于重復執(zhí)行所述判斷步驟,遍歷所述場景中的所有物體模型;合并模塊,用于根據(jù)不同的類型將所述合并隊列里的物體模型拆分后,進行分類合并,所述類型包括以下至少之一:貼圖、材質、材質相關參數(shù)、網(wǎng)格、網(wǎng)格相關參數(shù)。
進一步地,所述隱藏單元包括:第二判斷模塊,用于判斷所述場景的展示效果是否達到預設條件;隱藏模塊,用于在所述場景的展示效果沒有到達所述預設條件時,對所述原有的物體模型進行隱藏;刪除模塊,用于在所述場景的展示效果到達所述預設條件時,對所述原有的物體模型進行刪除。
本發(fā)明通過根據(jù)預先配置的參數(shù)將場景中的空間劃分為多個塊,在每一個塊內,對標記為靜態(tài)的物體進行合并生成新的模型;將所述塊中原有的物體模型進行隱藏或刪除,解決了相關技術中靜態(tài)合并導致的技術問題,進而達到了降低場景渲染的計算量的效果。
附圖說明
構成本申請的一部分的附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的一種靜態(tài)合并處理方法的流程圖;
圖2是根據(jù)本發(fā)明實施例的另一種靜態(tài)合并處理方法的流程圖;
圖3是根據(jù)本發(fā)明實施例的視錐體示意圖;
圖4a是根據(jù)本發(fā)明實施例的空間視錐體的示意圖;
圖4b是根據(jù)本發(fā)明實施例的另一種空間視錐體的示意圖;
圖5是根據(jù)本發(fā)明實施例的另一種靜態(tài)合并處理方法的流程圖;以及
圖6是根據(jù)本發(fā)明實施例的靜態(tài)合并處理裝置的示意圖。
具體實施方式
需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結合實施例來詳細說明本發(fā)明。
為了使本技術領域的人員更好地理解本申請方案,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分的實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本申請保護的范圍。
需要說明的是,本申請的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本申請的實施例。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
本發(fā)明實施例提供了一種靜態(tài)合并處理方法,圖1是根據(jù)本發(fā)明實施例的一種靜態(tài)合并處理方法的流程圖,如圖1所示,該方法包括以下步驟:
步驟S102,根據(jù)預先配置的參數(shù),將場景中的空間劃分為多個塊。
步驟S104,在多個塊中的每一個塊內,對標記為靜態(tài)的物體模型進行合并,生成新的模型。
步驟S106,將塊中原有的物體模型進行隱藏或刪除。
該實施例通過根據(jù)預先配置的參數(shù)將場景中的空間劃分為多個塊,對于每一個塊,有標記為靜態(tài)的物體,也可能有標記為動態(tài)的物體,將標記為靜態(tài)的物體模型進行合并,生成新的模型,將原有的物體模型隱藏或刪除。由于是按照塊來進行靜態(tài)物體的合并,與現(xiàn)有技術中的合并方式不同,因此解決了相關技術中靜態(tài)合并導致的技術問題,能夠降低場景渲染的計算量,能夠減輕電腦的圖形處理器(Graphics Processing Unit,簡稱為GPU)的負擔,提高場景優(yōu)化效果,減少了在渲染場景時延遲度大導致的顯示卡頓等問題,能夠滿足一些應用,例如虛擬現(xiàn)實(Virtual Reality,簡稱為VR)應用的低延遲、高幀率的要求。
在一個可選的實施方式中,以自由視角場景為例,將場景中的空間劃分為多個塊可以通過以下方式:在場景中,以用戶的位置為中心,將空間模擬為一個立體,然后根據(jù)預先配置的參數(shù),將立體劃分為多個塊。由于VR應用具有高自由度的視角,在自由視角場景中,將場景中的空間劃分為多個塊可以是以用戶的位置為中心,將空間模擬成一個立體,其中,立體可以是球體,也可以是其他形狀的立體,在將空間模擬為一個立體之后將場景中的空間劃分為多個塊。
在一個可選的實施方式中,將場景中的空間劃分為多個塊可以是:將空間根據(jù)視錐形劃分為多個視錐體,其中,每個視錐體作為一個塊,視錐體可以用于表示用戶的可見范圍。多個視錐體無縫拼接能夠構成立體空間,視錐體是場景中的可見的一個錐體范圍,視錐體可以由上、下、左、右、近、遠共六個面組成,一般情況下,在視錐體內的景物可見,視錐體外的不可見。
在一個可選的實施方式中,根據(jù)相機前剪裁平面和用戶的移動范圍確定視錐體的前剪裁平面,然后根據(jù)視錐體的前剪裁平面和相機后剪裁平面確定視錐體。根據(jù)相機前剪裁平面(Front Clipping Plane)和用戶的移動范圍可以確定視錐體的前剪裁平面,可選地,用戶的移動范圍可以是用戶的最大可移動距離,確定了視錐體的前剪裁平面之后,根據(jù)視錐體的前剪裁平面和相機后剪裁平面(Back Clipping Plane)確定視錐體。
在一個可選的實施方式中,將立體劃分為多個塊可以是:將立體的頂部和底部劃分為單獨的塊;將立體除頂部和底部之外的部分劃分為多個塊。在將立體劃分成多個塊時,立體的頂部和底部不進行分割,獨立成塊。
在一個可選的實施方式中,立體可以為一個球體,球體的半徑無限大,預先配置的參數(shù)包括球體的半徑、開口角度中的至少一個,球體的半徑、開口角度等參數(shù)直接影響空間的分塊數(shù)量,對于物體合并來說,起到的是間接影響,空間的分塊數(shù)量越多,合并體的總數(shù)量也會變多,將空間劃分為多個塊可以通過以下步驟:將空間的坐標轉換為球坐標系,根據(jù)預先配置的參數(shù)將空間劃分為多個塊,得到每個塊的球坐標;在每一個塊內,對標記為靜態(tài)的物體模型進行合并生成新的模型包括:將物體模型的坐標轉換為球坐標系,根據(jù)每一塊的球坐標和物體模型的球坐標判斷物體模型是否位于一個塊中,并對位于一個塊中的標記為靜態(tài)的物體模型進行合并。
在一個可選的實施方式中,根據(jù)每一塊的球坐標和物體模型的球坐標判斷物體模型是否位于一個塊中,并對位于一個塊中的標記為靜態(tài)的物體模型進行合并可以通過以下步驟:判斷步驟,根據(jù)每一塊的球坐標和物體模型的球坐標判斷物體模型是否位于一個塊中,如果是,則將物體模型放入一個塊的合并隊列;循環(huán)步驟,重復執(zhí)行上述判斷步驟,遍歷場景中的所有物體模型;合并步驟,根據(jù)不同的類型將合并隊列里的物體模型拆分后,進行分類合并,其中,類型包括以下至少之一:貼圖、材質、材質相關參數(shù)、網(wǎng)格、網(wǎng)格相關參數(shù)。
在一個可選的實施方式中,將塊中原有的物體模型進行隱藏或刪除可以通過以下方式:判斷場景的展示效果是否達到預設條件;如果場景的展示效果沒有到達預設條件,則對原有的物體模型進行隱藏;如果場景的展示效果到達預設條件,則對原有的物體模型進行刪除。預設條件可以是預設的表示場景展示效果的參數(shù)達到預設范圍,在達到預設條件時,場景的展示效果最好。在刪除或者隱藏原有物體的過程中,可以通過修改參數(shù)快速地重復合并的工作,從而可以調整到一個最好的優(yōu)化狀態(tài)。而在沒有達到最終效果之前可以僅僅對原場景中的物體模型進行隱藏,當達到最優(yōu)化的狀態(tài)后,就可以對場景的物體模型進行刪除了。通過判斷場景的展示效果是否達到預設條件,根據(jù)判斷結果進行場景模型的隱藏或刪除,能夠進一步提高靜態(tài)合并的效果,降低場景渲染的計算量。
以用戶的位置為中心將空間模擬為一個立體,可以是以用戶的位置為中心將空間模擬為一個球體,球體的半徑可以無限大,將場景中的空間劃分為多個塊可以是將空間的坐標轉換為球坐標系,將空間劃分為多個塊,可以得到每個塊的球坐標。因此,對于一個塊中的被標記為靜態(tài)的物體模型,將物體模型的坐標轉換為球坐標系,根據(jù)塊的球坐標和物體模型的球坐標判斷物體模型是否位于同一個塊中,如果判斷出物體模型位于同一個塊中,則將位于同一個塊中的被標記為靜態(tài)的物體模型合并。因此,本發(fā)明實施例與現(xiàn)有技術的合并方式不同,只對同一個塊中的靜態(tài)物體模型合并,因此能夠降低場景渲染的計算量。
該實施例利用球坐標系判斷物體在場景中所處的模塊,在判斷物體是否被視錐體包含時只需要做一個大小比較,不需要其他復雜計算,減少了計算量和理解的難度。該實施例的基于3D引擎的場景優(yōu)化技術能夠針對VR場景(也即自由視角場景),將空間模擬成一個球體,進行視錐分割,然后對每個視錐內部進行合并,這種優(yōu)化方式,不但滿足VR設備進行查看時能最大限度的減少渲染的計算量,同時還不破壞視錐剔除所帶來的性能優(yōu)化,因為視錐體正是模擬用戶所看到的范圍。并且,該實施例可以通過參數(shù)控制每個合并后的物體所包含幾何體的數(shù)量,從而避免了渲染瓶頸,同時又可以任意的改變幾何體的數(shù)量,重新合并,增加了合并的自由度和易用性。
圖2是根據(jù)本發(fā)明實施例的另一種靜態(tài)合并處理方法的流程圖,以球體為例對本發(fā)明的靜態(tài)合并處理方法進行說明,如圖2所示,該方法包括以下步驟:
步驟S201,將笛卡爾坐標系轉換為球坐標系。
當需要合并的場景擺放完之后,可以在編輯器中將場景進行優(yōu)化(也即靜態(tài)合并處理),優(yōu)化時,首先將笛卡爾坐標系轉換為球坐標系。
在一個可選的實施方式中,將場景空間以用戶為中心近似成一個無限大的球體,保持空間直角坐標系的原點位置不變,將空間變換到球坐標系,可以采用如下所示的變換公式:
步驟S202,利用視錐體將水平視角進行等分。
利用視錐體將水平視角進行等分也即進行視錐分割,將空間根據(jù)視錐形分割成多個視錐體,可選地,以視錐形的半徑,開口角度作為可選參數(shù)進行分割。分割完畢后球體空間被分割成多個視錐體,其中,在進行視錐分割時,底部和頂部不進行分割,獨立成塊。
步驟S203,遍歷需要合并的物體將其放到每塊的合并隊列中。
遍歷需要合并的物體,判斷需要合并批次的物體屬于哪個視錐體所在的空間,只需要將物體從直角坐標系變換到球坐標系,然后判斷屬于哪個視錐,將其放入該視錐體的合并隊列。
步驟S204,將隊列中的物體按照預設參數(shù)進行合并。
將隊列中的物體按照預設參數(shù)進行合并可以是將每個隊列里的物體模型根據(jù)不同的類型將物體模型拆分后,進行分類合并,其中,分類依據(jù)的類型可以是:貼圖、材質、材質相關參數(shù)、網(wǎng)格、網(wǎng)格相關參數(shù),當遇到不同材質的物體時,需要生成一個新的材質,保證材質數(shù)量等于材質的種類,以便達到最優(yōu)優(yōu)化,然后將新生成的物體模型變換直角坐標系,替換到原來的位置。可以采用如下公式進行變換:
步驟S205,合并完成,刪除或隱藏原有物體模型。
將隊列中的物體模型合并完成之后,刪除或者隱藏原有物體模型。在全部優(yōu)化完成之后,通過新生成的模型替代原有物體模型,原有的物體模型可以刪除,也可以隱藏。
在一個可選的實施方式中,進行視錐分割時,由于視錐體是一個三維體,位置和攝像機相關,視錐體的形狀決定了模型如何從攝像機空間(camera space)投影到屏幕上,其中,最常見的投影類型為透視投影。圖3是根據(jù)本發(fā)明實施例的視錐體示意圖,如圖3所示,在透視投影時,離攝像機近的物體投影后較大,而離攝像機較遠的物體投影后較小。透視投影使用棱錐作為視錐體(View Frustum),攝像機位于棱錐的椎頂。該棱錐被前后兩個平面截斷,形成一個棱臺,只有位于Frustum內部的模型才是可見的。
在劃分視錐體時,視錐體的前剪裁平面和后剪裁平面和場景中的相機一樣,可以模擬用戶所看到的真正場景。需要說明的是,當玩家可以小范圍移動時,前剪裁平面需要在場景相機設置的基礎上加上用戶的最大可移動距離,這樣才能將玩家近似成不運動的。其中,用戶的最大可移動距離可以是通過預設方式輸入的,例如,在操作面板上輸入用戶的最大可移動距離,用戶的最大可移動距離也可以不加,例如用戶不移動則可以不加用戶的最大可移動距離,通過加上用戶的最大可移動距離可以優(yōu)化合并插件的性能。在加上用戶的最大可移動距離之后,根據(jù)預設的參數(shù),將空間分割成幾個視錐體和一個上蓋、一個下蓋(頂部和頂部不進行分割,獨立成塊),也即將空間分割成6個視錐體。圖4a和圖4b是根據(jù)本發(fā)明實施例的空間視錐體的示意圖,以俯視的角度看到的空間模擬圖如圖4a所示,在場景中,以用戶的位置為中心,將空間模擬為一個球體,將球體劃分為多個塊。如圖4b所示,將空間根據(jù)視錐形劃分為多個視錐體,其中,每個視錐體作為一個塊,視錐體可以由上、下、左、右、近、遠共六個面組成。
本發(fā)明實施例針對VR場景(自由視角場景)在編輯器完成靜態(tài)場景的批次合并的自動化處理,同時保證視錐剔除正常剔除。用編輯器編輯場景時,在VR場景(自由視角場景)中,將用戶位置作為中心,先將空間模擬成一個球體。然后,假設玩家不運動或者只能在一定范圍內運動,按照預先設定好的參數(shù)進行視錐形分割。每個分割單元內的模型會根據(jù)預先設定好的參數(shù)進行自動合并生成新的模型,然后將原有模型進行隱藏。待到確認合并后的場景沒有問題后,刪除原有的場景,完成自動優(yōu)化工作。在進行空間立體模擬時,通過開放部分參數(shù),達到優(yōu)化的可控制性。這樣既可以控制合并的幾何體數(shù)量又可以在編輯器環(huán)境下隨意的改變合并的方式。
需要說明的是,本發(fā)明實施例的技術方案主要應用于VR場景(自由視角場景),但必須保證用戶的位置不發(fā)生改變或者僅僅在小范圍內運動。同時,視錐分割時只分割水平視角的一圈范圍,頂部和底部分別獨立成塊,不進行分割。主要原因是在長期的實踐中,頂部的天空和地面通常是一起顯示或者隱藏,因此沒有必要浪費性能去合并。
圖5是根據(jù)本發(fā)明實施例的另一種靜態(tài)合并處理方法的流程圖。判斷需要合并批次的物體是屬于哪個視錐體所在的空間,只需要將物體從直角坐標系變換到球坐標系,然后判斷屬于哪個視錐,將其放入該視錐體的合并隊列中。如圖5所示,該方法包括以下步驟:
步驟S501,將笛卡爾坐標系轉換為球坐標系。
步驟S502,判斷物體模長(r)是否屬于視錐體。
根據(jù)物體模長判斷該物體是否屬于該視錐體,如果判斷出屬于該視錐體,則執(zhí)行步驟S503,如果判斷出不屬于該視錐體,則執(zhí)行步驟S506。
步驟S503,判斷物體周角(θ)是否屬于視錐體。
根據(jù)物體周角判斷該物體是否屬于該視錐體,例如,可以判斷物體周角是否在預設范圍內,如果在預設范圍內則判斷屬于視錐體,如果判斷出屬于該視錐體,則執(zhí)行步驟S504,如果判斷出不屬于該視錐體,則執(zhí)行步驟S506。
步驟S504,判斷物體俯仰角(φ)是否屬于視錐體。
根據(jù)物體俯仰角判斷該物體是否屬于該視錐體,如果判斷出屬于該視錐體,則執(zhí)行步驟S505,如果判斷出不屬于該視錐體,則執(zhí)行步驟S506。
步驟S505,在視錐體內。
如果物體的模長,周角和俯仰角都屬于視錐體,則確定該物體屬于該視錐體。
步驟S506,不在視錐體內。
如果判斷出物體的模長,周角和俯仰角中的一個不屬于視錐體,則確定該物體不在視錐體內。
需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
本發(fā)明實施例提供了一種靜態(tài)合并處理裝置,該靜態(tài)合并處理裝置可以用于執(zhí)行本發(fā)明實施例的靜態(tài)合并處理方法。
圖6是根據(jù)本發(fā)明實施例的靜態(tài)合并處理裝置的示意圖,如圖6所示,該裝置包括:
劃分單元10,用于根據(jù)預先配置的參數(shù),將場景中的空間劃分為多個塊。
合并單元20,用于在多個塊中的每一個塊內中,對標記為靜態(tài)的物體模型進行合并,生成新的模型。
隱藏單元30,用于將塊中原有的物體模型進行隱藏或刪除。
在一個可選的實施方式中,場景為自由視角場景,劃分單元10包括:模擬模塊,用于在場景中,以用戶的位置為中心,將空間模擬為一個立體;劃分模塊,用于根據(jù)預先配置的參數(shù)將立體劃分為多個塊。
在一個可選的實施方式中,劃分模塊用于:將空間根據(jù)視錐形劃分為多個視錐體,其中,每個視錐體作為一個塊,視錐體用于表示用戶的可見范圍。
在一個可選的實施方式中,劃分模塊用于:根據(jù)相機前剪裁平面和用戶的移動范圍確定視錐體的前剪裁平面;根據(jù)視錐體的前剪裁平面和相機后剪裁平面確定視錐體。
在一個可選的實施方式中,用戶的移動范圍為用戶的最大可移動距離。
在一個可選的實施方式中,劃分模塊用于:將立體的頂部和底部劃分為單獨的塊;將立體除頂部和底部之外的部分劃分為多個塊。
在一個可選的實施方式中,立體為一個球體,球體的半徑無限大,預先配置的參數(shù)包括以下至少之一:球體的半徑、開口角度,劃分單元10用于:將空間的坐標轉換為球坐標系,根據(jù)預先配置的參數(shù)將空間劃分為多個塊,得到每個塊的球坐標;合并單元20用于:將物體的坐標轉換為球坐標系,根據(jù)每一塊的球坐標和物體的球坐標判斷物體模型是否位于一個塊中,并對位于一個塊中的標記為靜態(tài)的物體進行合并。
在一個可選的實施方式中,合并單元20包括:第一判斷模塊,用于執(zhí)行判斷步驟,根據(jù)每一塊的球坐標和物體模型的球坐標判斷物體是否位于一個塊中,如果是,則將物體模型放入一個塊的合并隊列;循環(huán)模塊,用于重復執(zhí)行判斷步驟,遍歷場景中的所有物體模型;合并模塊,用于根據(jù)不同的類型將合并隊列里的物體模型拆分后,進行分類合并,類型包括以下至少之一:貼圖、材質、材質相關參數(shù)、網(wǎng)格、網(wǎng)格相關參數(shù)。
在一個可選的實施方式中,隱藏單元30包括:第二判斷模塊,用于判斷場景的展示效果是否達到預設條件;隱藏模塊,用于在場景的展示效果沒有到達預設條件時,對原有的物體模型進行隱藏;刪除模塊,用于在場景的展示效果到達預設條件時,對原有的物體模型進行刪除。
該實施例采用劃分單元10根據(jù)預先配置的參數(shù)將場景中的空間劃分為多個塊,合并單元20在多個塊的每一個塊中,根據(jù)預先配置的參數(shù)對標記為靜態(tài)的物體進行合并生成新的模型,隱藏單元30將塊中原有的物體模型進行隱藏或刪除,從而解決了相關技術中靜態(tài)合并導致的技術問題,進而達到了降低場景渲染的計算量的效果。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
顯然,本領域的技術人員應該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。