亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        全局實例化的大規(guī)模數(shù)字孿生場景對象高效繪制方法

        2023-11-28 01:53:08郭德全羅德寧譚敏堯
        工程科學(xué)與技術(shù) 2023年6期

        郭德全,羅德寧,楊 強(qiáng),譚敏堯,楊 莉

        (成都信息工程大學(xué) 自動化學(xué)院,四川 成都 610225)

        在數(shù)字孿生城市場景[1]中,需要構(gòu)建大量的建筑、植被、道路、路燈等靜態(tài)繪制對象,以及行駛在道路上的車輛等動態(tài)繪制對象。路燈、車輛等對象具有重復(fù)性和空間位置規(guī)律性等特點,當(dāng)繪制規(guī)模較小時,可以使用傳統(tǒng)方法[1]在樣條線上生成每個對象,這樣的場景中每個對象都是一個獨立的網(wǎng)格體。在繪制過程中,由CPU發(fā)送指令,GPU執(zhí)行指定的渲染任務(wù),即為一次繪制調(diào)用[2]。使用傳統(tǒng)方法的每個網(wǎng)格體需要執(zhí)行至少一次繪制調(diào)用。然而,當(dāng)大規(guī)模對象的繪制采用上述方法時,在網(wǎng)格體數(shù)量過多的情況下繪制調(diào)用會非常高,將造成網(wǎng)格幀率低下,以致無法在數(shù)字孿生場景中準(zhǔn)確表達(dá)大規(guī)模對象的繪制效果。實例化技術(shù)[3]能解決繪制調(diào)用高的問題,但任意樣條線上實現(xiàn)大規(guī)模靜態(tài)或動態(tài)對象的實例化技術(shù)研究還非常少。

        實例化技術(shù)目前已內(nèi)置于一些圖形繪制引擎中,如Unreal Engine、Unity中常用的實例化靜態(tài)網(wǎng)格體和層級實例化靜態(tài)網(wǎng)格體方法[4]等,但在大規(guī)模對象實時繪制上還缺少更多的理論研究。前期已經(jīng)開展了實時生成技術(shù)研究[5],實例技術(shù)目前的研究方向主要在群體動畫[6]、網(wǎng)格簡化[7]等方面,常結(jié)合一些實際應(yīng)用展開。在GPU Gems 幾何體實例[8]中提到渲染由幾個多邊形組成的大量小對象,會給GPU帶來很大的繪制壓力,并且目前Direct3D和OpenGL等圖形API設(shè)計的目的不是每幀高效地渲染數(shù)千次少量多邊形,要解決這個問題的方法就是渲染相同幾何體的許多唯一實例。NVIDIA研究人員Bryan[9]使用實例化技術(shù)減少繪制調(diào)用,通過狀態(tài)更改和緩沖區(qū)更新的數(shù)量來降低CPU開銷,提高大量動態(tài)繪制對象的渲染效率。一些學(xué)者開展了大規(guī)模虛擬人群[10-11]實時繪制研究與應(yīng)用,半透明材質(zhì)渲染[12]與超越模糊的凹坑渲染[13]研究也得到發(fā)展。但是基于實例化的群體動畫實時渲染[14]方面的研究仍然較少。

        在網(wǎng)格簡化方面,Azim等[15]在壓縮實例化文件過程中,提出實例化感知簡化(IAS)算法可有效地簡化實例化3D網(wǎng)格,從而減小傳輸文件大小,保留更高的視覺質(zhì)量。在實際應(yīng)用研究上[16],采用實例化技術(shù)能夠顯著減少對建筑物、植物、道路等場景對象[17-19]的渲染批次,實現(xiàn)一次GPU繪制調(diào)用,渲染一大批物體。Ding等[20]建立了實時可視的城市道路網(wǎng)絡(luò)中的車輛排放,Jung等[21]對樹與植被進(jìn)行了3D實例化研究,這些方法對于本文采用全局實例化方法提供了研究依據(jù)。

        近年來,面向智慧城市的數(shù)字孿生城市是國家提倡數(shù)字化改革的重要應(yīng)用領(lǐng)域。潘志庚等[22]提出了面向?qū)嵨锝换サ目臻g增強(qiáng)現(xiàn)實數(shù)字孿生法配準(zhǔn)技術(shù),在數(shù)字空間建立與物理空間一致的對象數(shù)字模型。陶飛等[23]提出的數(shù)字孿生5維模型為相關(guān)領(lǐng)域踐行數(shù)字孿生理念與技術(shù)提供了參考。同時,樣條線在建模方面優(yōu)勢突出,既能創(chuàng)造出復(fù)雜的模型,又能提高效率和質(zhì)量[24-25]。例如,混合整數(shù)二次規(guī)劃的多元自適應(yīng)回歸樣條[26],Cao等[27]提出了V-Spline方法,可進(jìn)行平滑樣條的軌跡重建。

        大規(guī)模對象繪制會占用較多的內(nèi)存、CPU、GPU等計算資源,如果處理不好就難以表達(dá)真實的效果。通常繪制開銷并不取決于場景中的多邊形數(shù)量,而是取決于繪制調(diào)用次數(shù)。因此,在數(shù)字孿生城市的實例,常用空間相鄰、材質(zhì)相同、渲染狀態(tài)相同的小模型合并成一個大模型,或者采用實例化技術(shù)。因此,本文利用全局實例化方法研究大規(guī)模靜態(tài)和動態(tài)對象的繪制,通過全局實例化管理器維護(hù)所有大規(guī)模場景對象的繪制,降低DC數(shù)量,提高繪制性能。

        1 全局實例化繪制方法

        全局實例化繪制方法不僅適用于靜態(tài)對象的繪制,也適用于動態(tài)對象的繪制。動態(tài)對象的繪制主要增加了實例對象位置的更新過程,因此,在介紹全局實例化繪制方法時,對動態(tài)對象的繪制進(jìn)行整體闡釋,其過程涵蓋了靜態(tài)對象的繪制。

        1.1 方法概述

        實例化網(wǎng)格體可高效渲染同一個網(wǎng)格體的多個實例,尤其適用于程序化創(chuàng)建的場景,不必在場景中放置成百上千個網(wǎng)格體,只需放置一個實例化網(wǎng)格體,就能添加該網(wǎng)格體的多個實例,大幅降低性能開銷。本文曾對金字塔模型(868個三角形)在20 m范圍內(nèi)隨機(jī)生成200個實例后的nDC進(jìn)行測試,從未實例化的436次DC減少為實例化的233次。實例化技術(shù)已有較成熟的實現(xiàn)過程[3,8,15],因此本文對增加、刪除、清除、移動實例的底層實現(xiàn)過程不再贅述。

        圖1為全局實例化繪制流程圖。首先,全局實例化場景所布設(shè)樣條線上相同的繪制對象,即場景中相同繪制對象共享同一網(wǎng)格體;其次,在每條樣條線上以一定規(guī)則分配全局實例化對象實例; 最后,根據(jù)唯一標(biāo)識符對更新樣條線上的動態(tài)實例,如實現(xiàn)車輛的移動。

        圖1 全局實例化繪制流程圖Fig.1 Global instance rendering flowchart

        本文提出的全局實例化方法采用全局實例化管理器維護(hù)大規(guī)模場景對象的繪制,因為存在不同樣條線上不同的實例繪制對象,因此面臨大量不同實例化對象管理上的挑戰(zhàn)。首先,全局實例化整個場景中所布設(shè)樣條線上相同的繪制對象;其次,在每條樣條線上以一定規(guī)則分配全局實例化繪制對象的實例;最后,根據(jù)唯一標(biāo)識符對樣條線上的動態(tài)實例進(jìn)行更新。下面分別從布設(shè)樣條線、全局實例化繪制對象、更新動態(tài)實例3個關(guān)鍵過程進(jìn)行闡釋。

        1.2 布設(shè)樣條線

        樣條線是經(jīng)過一系列給定點的光滑曲線,因此,通過樣條線能夠程序化創(chuàng)建場景中重復(fù)和有規(guī)律的對象,如路燈、移動車輛等。因此,全局實例化繪制方法首先在場景中生成多個樣條線對象,每條樣條線能夠靈活地表達(dá)和管理場景對象;其次,在樣條線對象上設(shè)置多個樣條點(特別是轉(zhuǎn)彎、上坡、下坡等環(huán)境下便于更準(zhǔn)確地構(gòu)建光滑曲線);再次,設(shè)置樣條點上切線進(jìn)入方向和離開方向,從而控制每個樣條點處的曲線;最后,根據(jù)繪制對象所占長度和樣條線總長度計算樣條線需要繪制的對象數(shù)量。

        1.3 全局實例化繪制對象

        全局實例化繪制對象過程包括全局實例化繪制對象和分配實例。在場景中生成一個全局實例化管理器對象,全局實例化管理器將維護(hù)實例化靜態(tài)網(wǎng)格體組件數(shù)組,在系統(tǒng)開始運行的時候就會執(zhí)行實例化功能,根據(jù)指定的靜態(tài)網(wǎng)格體數(shù)量,生成相同數(shù)量的實例化靜態(tài)網(wǎng)格體組件,每一個靜態(tài)網(wǎng)格體對應(yīng)一個實例化靜態(tài)網(wǎng)格體組件。

        全局實例化管理器還會維護(hù)繪制對象樣條線數(shù)組,用于保存在場景中生成的所有樣條線對象,在系統(tǒng)開始運行的時候會遍歷該樣條線數(shù)組,根據(jù)每條樣條線計算得出當(dāng)前樣條線所需繪制對象的數(shù)量來生成相同數(shù)量的實例。每生成一個實例,全局實例化管理器都會將這個實例的唯一標(biāo)識符對傳遞給樣條線對象,以便保存樣條線的實例信息數(shù)組。每一個實例都是由實例化靜態(tài)網(wǎng)格體組件生成,而每一個實例化靜態(tài)網(wǎng)格體組件都是在全局實例化管理器內(nèi)的實例化靜態(tài)網(wǎng)格體組件數(shù)組中隨機(jī)選取,因此只需要將實例化靜態(tài)網(wǎng)格體組件的序號以及由該組件生成的實例的序號賦值給樣條線對象的實例信息數(shù)組,依據(jù)樣條線對象里保存的唯一標(biāo)識符對在全局實例化管理器里可查找到每一個實例,從而方便于后續(xù)的動態(tài)實例更新。

        1.4 更新動態(tài)實例

        對于動態(tài)對象的繪制,樣條線對象會逐幀遍歷所維護(hù)的實例信息數(shù)組,從中獲取唯一標(biāo)識符對,再在全局實例化管理器里查詢對應(yīng)實例,然后通過預(yù)先設(shè)定的移動方式計算下一幀新位置完成實例更新。對于靜態(tài)對象的繪制,全局實例化的繪制方法也將在實驗中進(jìn)行展現(xiàn)和分析。

        2 全局實例化車流與車輛繪制方法

        全局實例化的移動車輛繪制主要以布設(shè)車流線、全局實例化移動車輛、更新實例車輛位置3個方面展開。布設(shè)車流線車輛需要經(jīng)過的指定路線、計算需要生成的車輛數(shù)量以及更新車輛位置,全局實例化不同移動車輛并分配車輛實例到車流線上,并根據(jù)車輛運動規(guī)律更新實例車輛位置。

        2.1 布設(shè)車流線

        為了更靈活地布設(shè)車流線,場景由多個車流線對象組成。每個車流線對象維護(hù)一個樣條線組件、一個車輛信息數(shù)組、一個車輛速度值、一個全局實例化管理器引用對象。樣條線組件通過設(shè)置多個樣條點,并在樣條點上設(shè)置切線進(jìn)入方向和離開方向,連接所有的樣條點即可形成一條自定義曲線,該曲線上所有位置都可以通過樣條線組件的參數(shù)計算得到,因此能夠模擬車輛運動過程。

        首先,在場景中生成多個車流線對象;其次,根據(jù)每條道路特點,在樣條線組件上設(shè)置多個樣條點,便于模擬車輛運動路徑;再次,設(shè)置樣條點上切線進(jìn)入和離開方向,更好地表達(dá)轉(zhuǎn)彎、上坡、下坡等道路;最后,計算需要生成車輛數(shù)量及初始化車輛信息數(shù)組,根據(jù)車輛模型所占長度及樣條線總長度計算出共需要多少車輛才能將車流線占滿。每一輛車最初在車流線上的位置和世界位置會被保存到車輛信息數(shù)組中。從而完成車流線的布設(shè)。

        車輛信息數(shù)組保存每一輛車的唯一標(biāo)識符對、在樣條線上的位置和世界位置。唯一標(biāo)識符對由車輛類型實例ID及實例ID組成,車輛類型實例ID是不同車輛類型的實例化組件,實例ID是對應(yīng)實例化組件具體實例索引。在樣條線上的位置便于計算移動車輛下一個世界位置。

        2.2 全局實例化移動車輛

        根據(jù)全局實例化管理器配置的不同車輛類型總數(shù)進(jìn)行實例化,每一車輛類型生成實例化組件,同時指定相應(yīng)車輛模型,即場景中相同的移動車輛共享同一個網(wǎng)格體,從而降低nDC,提高繪制性能。

        全局實例化移動車輛流程如圖2所示。在場景中生成一個全局實例化管理器對象,全局實例化管理器維護(hù)一個實例化靜態(tài)網(wǎng)格體組件數(shù)組,在系統(tǒng)開始運行的時候就會執(zhí)行實例化的功能,根據(jù)指定的車輛靜態(tài)網(wǎng)格體個數(shù),全局實例化會生成相同個數(shù)的實例化靜態(tài)網(wǎng)格體組件,每一個車輛靜態(tài)網(wǎng)格體對應(yīng)一個實例化靜態(tài)網(wǎng)格體組件。全局實例化管理器還會維護(hù)一個車流線數(shù)組,用于保存所有在場景中生成的車流線對象,全局實例化管理器在系統(tǒng)開始運行的時候會遍歷該車流線數(shù)組,根據(jù)每條車流線計算得出當(dāng)前車流線所需車輛數(shù)量來生成相同數(shù)量的實例。

        圖2 全局實例化移動車輛流程圖Fig.2 Global instance moving vehicle flowchart

        每生成一個實例,全局實例化管理器都會將這個實例的唯一標(biāo)識符對傳遞給車流線對象,供車輛信息數(shù)組保存。每一個車輛實例由實例化靜態(tài)網(wǎng)格體組件生成,而該組件都是在全局實例化管理器內(nèi)的實例化靜態(tài)網(wǎng)格體組件數(shù)組中隨機(jī)選取,因此只需要將實例化靜態(tài)網(wǎng)格體組件的序號(車輛類型實例ID)以及由該組件生成的實例序號(實例ID)賦值車流線對象的車輛信息數(shù)組,即可通過車流線對象里保存的唯一標(biāo)識符對在全局實例化管理器里查找到每一個車輛實例。

        2.3 更新實例車輛位置

        圖3為更新實例車輛位置流程圖。車流線對象會逐幀遍歷所維護(hù)的車輛信息數(shù)組,從每個車輛信息數(shù)組里獲取唯一標(biāo)識符對,再用唯一標(biāo)識符對在全局實例化管理器里查詢到對應(yīng)的車輛實例,然后從車輛信息里獲取到車輛實例在車流線上距起始點的距離,再獲取預(yù)先設(shè)定好的車輛速度,通過在車輛當(dāng)前距原點的距離上增加車輛行駛路程,即可計算得到車輛下一幀距離車流線原點的距離,即車輛實例新位置,新位置計算方法如式(1)所示:

        圖3 車輛實例位置更新流程圖Fig.3 Flowchart of vehicle instance location update

        式中, Δt表示一幀的時間,r(t)表示車輛的當(dāng)前位置,v表示車輛的速度, Δr表示路程, Δr′表示樣條線上的路程,r(t+Δt)表示車輛下一幀位置。

        全局實例化管理器提供了更新車輛實例所在位置的方法,最后利用唯一標(biāo)識符對、車輛實例新位置即可持續(xù)更新車輛實例在場景里的位置。

        3 實驗結(jié)果與分析

        本文實驗數(shù)據(jù)處理及車流線繪制效果對比圖都是在同一配置環(huán)境下進(jìn)行。實驗平臺采用AMD Ryzen 9 12-Core 3.80 GHz處理器,N Nvidia GeForce RTX 2070 SUPER 8 GB圖形顯卡及3 200 MHz 32 GB內(nèi)存,實驗中測試分辨率均為1 920×1 080。在全局實例化移動車輛繪制實驗,場景中布設(shè)了29條樣條線,如圖4(a)所示,其中4條帶轉(zhuǎn)彎曲線。選取6類車輛在樣條線上生成車輛,各車輛三角形數(shù)量見表1。表1中,ntris為視口中三角形繪制個數(shù),即繪制的三角形總數(shù)量(繪制圖元次數(shù))。根據(jù)車輛長度和樣條線長度隨機(jī)在29條樣條線上各方法生成605輛車輛,如圖4(b)所示。

        表1 樣條線上6類車輛信息Tab.1 Vehicles information of six types on the spline line

        圖4 布設(shè)樣條線和車流線繪制結(jié)果Fig.4 Rendering results of layout splines and traffic lines

        在每條樣條的實例化,即局部實例化[28-29]中比較各方法的性能開銷。傳統(tǒng)方法[30]、局部實例化方法[31]、本文方法(全局實例化方法)和層級實例化方法[4]各指標(biāo)對比見表2,所用車輛數(shù)為 605輛。每秒傳輸幀數(shù)(fFPS)表示每秒幀率,反映繪制流暢度,一般幀數(shù)越高繪制越流暢。表2中,tMS表示每幀繪制時間,時間越短,繪制效率越高;fFPS/tMS比值代表繪制性能。從表2中可知,前3類方法在統(tǒng)一視口下繪制的三角形次數(shù)基本相同,但繪制調(diào)用差異非常明顯,全局實例化相比傳統(tǒng)方法nDC減少了97.4%,因此性能提升了28.4%,顯著減少了CPU在處理繪制調(diào)用上的時間花費。雖然局部實例化方法相比傳統(tǒng)方法nDC減少了71.1%,但僅在每條樣條線上進(jìn)行實例化,會產(chǎn)生大量的實例化對象,頻繁切換渲染狀態(tài),對CPU的消耗比DC還大,因此其性能反而降低。針對層級實例化在動態(tài)對象上的應(yīng)用也作了對比實驗,雖然三角形繪制數(shù)量和nDC減少,但性能并未提升,這是因為每幀需要更新層次實例化中管理實例數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)體,大量車輛在運動過程每幀對該結(jié)構(gòu)體更新造成CPU開銷很大,雖然nDC減少但性能降低。

        表2 4種方法指標(biāo)對比Tab.2 Indicators comparison of four methods

        對于數(shù)字孿生城市場景中植被模型、交通設(shè)施模型、景觀模型等重復(fù)靜態(tài)對象的繪制,采用全局實例化方法能夠極大減少nDC。圖5為1 976個路燈實例化前后的nDC對比圖,本文將DC數(shù)量進(jìn)行了對比。從圖5可知,實例化比未實例化減少了96%的繪制調(diào)用。這是因為未實例化前,路燈模型(646個三角形,2個材質(zhì)通道),每次繪制調(diào)用時,CPU需要向GPU發(fā)送場景中每個路燈的數(shù)據(jù)、狀態(tài)、命令等內(nèi)容,每個路燈相互獨立構(gòu)成大量的繪制調(diào)用,會頻繁地占用CPU和GPU繪制資源,存在較大的性能開銷;實例化后,對于重復(fù)靜態(tài)對象,能夠共享網(wǎng)格體頂點數(shù)組,對于不同副本的靜態(tài)對象,只改變頂點數(shù)組的變換矩陣(位置、旋轉(zhuǎn)、縮放),從而減少nDC。

        圖5 實例化1 976個路燈的 nDC 對比Fig.5 DC comparison of instantiating 1 976 streetlights

        圖6為本方法應(yīng)用于實際數(shù)字孿生城市的場景,包括商業(yè)、學(xué)校、居民樓等建筑,還有大量交通設(shè)施、水系、植被、地形地貌等實景3維場景。圖7為采用全局實例化方法與傳統(tǒng)方法在圖6場景道路漫游過程中的幀率對比。在每條道路上都布設(shè)了大量移動車輛,采用全局實例化方法比傳統(tǒng)方法幀率提升了18%~43%。特別是在復(fù)雜對象場景的繪制中,如果不采用降低DC數(shù)量的繪制方法,將難以支持大規(guī)模數(shù)字孿生城市場景的繪制。因此,采用本文的方法能夠高效繪制大量移動車輛、靜態(tài)路燈等場景,滿足大規(guī)模靜態(tài)、動態(tài)對象的實時繪制需求。

        圖6 全局實例化方法在數(shù)字孿生城市場景中的應(yīng)用Fig.6 Global instance method applied in digital twin city scene

        圖7 傳統(tǒng)方法與全局實例化方法漫游幀率對比Fig.7 Frame rate comparison between traditional method and global instance method

        4 結(jié)論及展望

        對于利用樣條線繪制大量靜態(tài)或動態(tài)對象的物體,采用全局實例化方法不僅能夠大大減少繪制調(diào)用量,提高繪制效率。相比傳統(tǒng)的繪制方法,通過全局實例化的繪制方法能夠平均提升30%的繪制性能。因此,本文提出了一種全局實例化方法以一定規(guī)則在3維場景中布設(shè)的樣條線上分配實例化對象,并構(gòu)建全局實例化管理器進(jìn)行所有場景對象的繪制管理。同時,本方法可用于動態(tài)對象繪制,根據(jù)唯一標(biāo)識符對在樣條線上實現(xiàn)動態(tài)實例更新。

        然而,本方法對于動態(tài)對象的繪制,還存在每幀大量移動對象位置的計算過程,對性能開銷影響較大,因此,在未來的工作,將引入多線程的方式對移動對象位置更新進(jìn)行計算,減少主線程的繪制負(fù)載,提升整體繪制性能。

        丝袜美腿福利视频在线| 中文字幕一区二区人妻出轨| 欧美zozo另类人禽交| 精品久久中文字幕一区| 日韩乱码人妻无码系列中文字幕| 亚洲av麻豆aⅴ无码电影| 欧美韩日亚洲影视在线视频| 黑人免费一区二区三区| 中文字幕久久久人妻人区| 国精品人妻无码一区免费视频电影| 粗了大了 整进去好爽视频| 黄网站欧美内射| 日本不卡视频免费的| 日韩av一区在线播放| 我要看免费久久99片黄色| 久久精品无码一区二区三区免费| 亚洲无码专区无码| 五月天亚洲av优女天堂| av免费播放网站在线| 人人摸人人操| 无码av免费永久免费永久专区| 美腿丝袜网址亚洲av| 日本三级香港三级人妇99| 国产成人乱色伦区| 在线观看av国产自拍| 亚洲肥婆一区二区三区| 成人免费无码视频在线网站| 成人做爰69片免费看网站| www.尤物视频.com| 国产高潮流白浆视频在线观看| 日本乱偷人妻中文字幕| 国产在视频线精品视频www666| 日本不卡的一区二区三区| 国产在线观看一区二区三区av| 亚洲av中文无码乱人伦在线视色 | 少妇脱了内裤让我添| 日本中文字幕一区二区高清在线| 免费精品人妻一区二区三区| 蜜桃视频国产一区二区| 色一情一乱一伦一视频免费看| 伴郎粗大的内捧猛烈进出视频观看|