国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2023-11-28 01:53:08郭德全羅德寧譚敏堯
工程科學(xué)與技術(shù) 2023年6期
關(guān)鍵詞:管理器樣條全局

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

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

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

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

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

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

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

1 全局實(shí)例化繪制方法

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

1.1 方法概述

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

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

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

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

1.2 布設(shè)樣條線

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

1.3 全局實(shí)例化繪制對(duì)象

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

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

1.4 更新動(dòng)態(tài)實(shí)例

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

2 全局實(shí)例化車流與車輛繪制方法

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

2.1 布設(shè)車流線

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

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

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

2.2 全局實(shí)例化移動(dòng)車輛

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

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

圖2 全局實(shí)例化移動(dòng)車輛流程圖Fig.2 Global instance moving vehicle flowchart

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

2.3 更新實(shí)例車輛位置

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

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

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

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

3 實(shí)驗(yàn)結(jié)果與分析

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

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

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

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

圖5 實(shí)例化1 976個(gè)路燈的 nDC 對(duì)比Fig.5 DC comparison of instantiating 1 976 streetlights

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

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

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

4 結(jié)論及展望

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

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

猜你喜歡
管理器樣條全局
Cahn-Hilliard-Brinkman系統(tǒng)的全局吸引子
一元五次B樣條擬插值研究
量子Navier-Stokes方程弱解的全局存在性
應(yīng)急狀態(tài)啟動(dòng)磁盤(pán)管理器
Windows文件緩沖處理技術(shù)概述
落子山東,意在全局
金橋(2018年4期)2018-09-26 02:24:54
三次參數(shù)樣條在機(jī)床高速高精加工中的應(yīng)用
三次樣條和二次刪除相輔助的WASD神經(jīng)網(wǎng)絡(luò)與日本人口預(yù)測(cè)
軟件(2017年6期)2017-09-23 20:56:27
基于樣條函數(shù)的高精度電子秤設(shè)計(jì)
高集成度2.5A備份電源管理器簡(jiǎn)化鋰離子電池備份系統(tǒng)
大关县| 龙江县| 济阳县| 祥云县| 白玉县| 大关县| 井陉县| 固始县| 荃湾区| 昌邑市| 金塔县| 共和县| 景泰县| 涞水县| 虹口区| 松溪县| 上虞市| 七台河市| 无锡市| 西青区| 班玛县| 松潘县| 太康县| 锦州市| 浮山县| 东兰县| 五台县| 通江县| 象山县| 道孚县| 宿州市| 喀喇| 乌海市| 晋江市| 团风县| 巴中市| 合作市| 泽库县| 遵义市| 读书| 澎湖县|