999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于UNITY三維虛擬仿真的內(nèi)存優(yōu)化研究

2022-08-22 13:40:04汪華健汪志鋒
計(jì)算機(jī)仿真 2022年7期
關(guān)鍵詞:資源實(shí)驗(yàn)模型

汪華健,汪志鋒

(上海第二工業(yè)大學(xué)工學(xué)部,上海 201209)

1 引言

Unity引擎由Unity Technologies 開(kāi)發(fā),是一個(gè)能夠多平臺(tái)開(kāi)發(fā)的綜合型專業(yè)游戲引擎。其從2005年發(fā)布到今天的十幾年的時(shí)間里,Unity 游戲引擎已經(jīng)演變成一個(gè)方便易用的、可跨平臺(tái)的高度集成開(kāi)發(fā)環(huán)境,成為游戲市場(chǎng)的主流的開(kāi)發(fā)引擎之一[1]。隨著Unity愈發(fā)火熱,Unity引擎在三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫(huà)、仿真系統(tǒng)開(kāi)發(fā)等各個(gè)方面都有著廣泛的應(yīng)用。

隨著Unity應(yīng)用越來(lái)越廣泛,Unity在進(jìn)行開(kāi)發(fā)時(shí)也發(fā)現(xiàn)一些問(wèn)題,如使用Unity引擎對(duì)大型三維場(chǎng)景進(jìn)行處理時(shí),經(jīng)常出現(xiàn)卡頓、內(nèi)存不足等問(wèn)題;針對(duì)這些問(wèn)題,學(xué)者們也開(kāi)始針對(duì)Unity內(nèi)存管理機(jī)制中進(jìn)行一些研究,并提出了在編程方式、三維模型管理以及動(dòng)態(tài)內(nèi)存加載機(jī)制等幾個(gè)方面的優(yōu)化方法[2]。而在三維模型動(dòng)態(tài)調(diào)度方面最典型的應(yīng)用是將四叉樹(shù)算法運(yùn)用到地形加載中[3],此外,還有基于Docker容器的調(diào)度優(yōu)化策略等[4]。

本文主要通過(guò)資源動(dòng)態(tài)調(diào)度來(lái)完成使用Unity進(jìn)行虛擬仿真系統(tǒng)開(kāi)發(fā)中內(nèi)存問(wèn)題的優(yōu)化,通過(guò)引入四叉樹(shù)算法,并對(duì)當(dāng)前算法中的一些問(wèn)題進(jìn)行優(yōu)化,實(shí)驗(yàn)證明,優(yōu)化后的算法在Unity內(nèi)存占用上產(chǎn)生了良好的反饋,使應(yīng)用在不損失效果的情況下將內(nèi)存的消耗更低。

2 Unity內(nèi)存機(jī)制

Unity3D 引擎使用的內(nèi)存類型共有三種:程序代碼段、托管堆( Managed Heap) 以及本機(jī)堆(Native Heap)[2]。“代碼段”存儲(chǔ)可執(zhí)行文件的指令;也有可能包含一些運(yùn)行的依賴庫(kù)文件等。“本機(jī)堆”是Unity指的是對(duì)本地資源進(jìn)行申請(qǐng)和操作,其中資源指的是音效、圖片和三維模型等一些文件。“托管堆”是一段內(nèi)存,由項(xiàng)目腳本運(yùn)行時(shí)(Mono或IL2CPP)的內(nèi)存管理器自動(dòng)管理。

Unity官方說(shuō)明中明確指出內(nèi)存全部都是由系統(tǒng)托管,其內(nèi)存管理機(jī)制的基本理念是:如果某個(gè)場(chǎng)景(scenes)里需要某個(gè)資源(Resources),那么在運(yùn)行時(shí)加載到內(nèi)存。而將資源加載至場(chǎng)景中有多種調(diào)用方式,且不同的調(diào)用方式在內(nèi)存的占用過(guò)程也不一致;其中加載預(yù)設(shè)的方式有三種,第一種是聲明公有變量,其中變量的值可通過(guò)在Inspector中修改;二是采用Resources.Load()方法加載;三是采用AssetBundle.Load()方法;三種加載方式在加載后都需要然后在相應(yīng)腳本中用Instantiate()方法實(shí)例化。其中第三種加載方式在加載過(guò)程中會(huì)直接加載預(yù)設(shè)全部依賴資源,在實(shí)例化過(guò)程中只是進(jìn)行克隆操作。

而在Unity資源的卸載和銷毀過(guò)程中,Destory()函數(shù)釋放資源有限,只對(duì)資源的引用或復(fù)制,不釋放已加載至內(nèi)存的紋理、材質(zhì)等資源。UnloadAsset()釋放區(qū)域中指定的資源。此外還有UnloadUnusedAssets()方法能夠卸載當(dāng)前所有沒(méi)有被占用的資源。

通過(guò)上述分析可知在虛擬仿真時(shí)采用AssetBundle()加載方式能同時(shí)加載預(yù)設(shè)的紋理、材質(zhì)信息,此方法能夠避免加載和卸載中掉幀的現(xiàn)象。卸載時(shí)使用Destory()函數(shù)銷毀物體對(duì)象后,在資源卸載完成后調(diào)用UnloadUnusedAssets()函數(shù)將未被占用的紋理、貼圖資源徹底卸載以實(shí)現(xiàn)內(nèi)存回收。

3 四叉樹(shù)算法

3.1 基本思想

四叉樹(shù)算法的基本思想是將空間遞歸劃分為不同層次的樹(shù)結(jié)構(gòu)。如圖2所示它將已知范圍的空間分成四個(gè)子空間,如此遞歸下去,遞歸的次數(shù)稱為四叉樹(shù)的層數(shù),直至樹(shù)的層數(shù)達(dá)到一定深度后停止分割。

圖2 四叉樹(shù)結(jié)構(gòu)

四叉樹(shù)算法的應(yīng)用方向很多,常見(jiàn)的如:稀疏數(shù)據(jù)、圖像處理、空間數(shù)據(jù)索引以及物體碰撞檢測(cè)等,而將其運(yùn)用到虛擬仿真中進(jìn)行動(dòng)態(tài)調(diào)度是屬于空間數(shù)據(jù)索引方面的一個(gè)應(yīng)用;四叉樹(shù)算法的結(jié)構(gòu)比較簡(jiǎn)單,并且當(dāng)空間數(shù)據(jù)對(duì)象分布比較均勻時(shí),具有比較高的查詢效率和空間數(shù)據(jù)插入,因此四叉樹(shù)算法也是常用的空間索引算法之一。

3.2 四叉樹(shù)在unity中的建立

假設(shè)虛擬仿真場(chǎng)景如圖3所示,整個(gè)空間內(nèi)(矩形內(nèi))存在三維模型a-j。

圖3 Unity場(chǎng)景內(nèi)三維模型分布

首先對(duì)空間區(qū)域(類別)進(jìn)行劃分,然后給每一個(gè)子節(jié)點(diǎn)都編號(hào),那么每個(gè)子節(jié)點(diǎn)會(huì)繼承父節(jié)點(diǎn)的編號(hào)為前綴,并在此基礎(chǔ)上有相對(duì)其兄弟節(jié)點(diǎn)的獨(dú)特編號(hào)。如果給左上、右上、左下、右下四個(gè)子節(jié)點(diǎn)分別編號(hào)為1、2、3、4,那么1節(jié)點(diǎn)內(nèi)的左上、右上、左下、右下四個(gè)子節(jié)點(diǎn)分別編號(hào)為11、12、13、14.以此類推,當(dāng)節(jié)點(diǎn)內(nèi)模型資源較少時(shí),可以不劃分;則可得到如圖4所示的區(qū)域劃分圖。

圖4 區(qū)域劃分圖

對(duì)應(yīng)上述三維模型進(jìn)行區(qū)域劃分后,將四叉樹(shù)中所有的三維模型對(duì)象都存儲(chǔ)在各個(gè)最底層的子節(jié)點(diǎn)上,如圖5所示,此時(shí),如果2節(jié)點(diǎn)有劃分,則c、f三維模型不能存儲(chǔ)在2上,應(yīng)該存儲(chǔ)在對(duì)應(yīng)的子節(jié)點(diǎn)上,該模型也稱為滿四叉樹(shù)。

圖5 四叉樹(shù)示意圖

3.3 非滿四叉樹(shù)

滿四叉樹(shù)結(jié)構(gòu)是自父節(jié)點(diǎn)(根)向下逐步劃分的一種樹(shù)狀的層次結(jié)構(gòu),每次索引的深度將隨著四叉樹(shù)的層數(shù)大大的增多,但隨著四叉樹(shù)的層數(shù)會(huì)不斷地加深,三維模型資源不斷的增加,四叉樹(shù)索引的缺點(diǎn)也更加明顯,首先,索引查詢的時(shí)候效率會(huì)比較低下;其次存儲(chǔ)空間的浪費(fèi);最后樹(shù)的結(jié)構(gòu)會(huì)變得不平衡。

而針對(duì)滿四叉樹(shù)結(jié)構(gòu)的不足,也有相應(yīng)的改進(jìn):將數(shù)據(jù)信息可以存儲(chǔ)在它的每一個(gè)節(jié)點(diǎn)中,如圖6所示,并且將同時(shí)存在于兩個(gè)節(jié)點(diǎn)的三維模型存儲(chǔ)到這兩個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn);如12和14節(jié)點(diǎn)都有三維模型b,將其存儲(chǔ)到1節(jié)點(diǎn),每個(gè)三維模型資源只在樹(shù)中存儲(chǔ)一次,通過(guò)改進(jìn)可以加快插入的速度,并且不存在一個(gè)三維模型資源存儲(chǔ)在多個(gè)節(jié)點(diǎn)的現(xiàn)象,這種結(jié)構(gòu)為非滿四叉樹(shù)結(jié)構(gòu)。

圖6 非滿四叉樹(shù)

非滿四叉樹(shù)為每個(gè)節(jié)點(diǎn)(包括父節(jié)點(diǎn))需要添加一個(gè)“容量”的屬性,在四叉樹(shù)初始化時(shí)只有一個(gè)父節(jié)點(diǎn),并且該根節(jié)點(diǎn)也可以存儲(chǔ),在插入數(shù)據(jù)時(shí),如果一個(gè)節(jié)點(diǎn)內(nèi)的數(shù)據(jù)量大于了節(jié)點(diǎn)“容量”,再將節(jié)點(diǎn)進(jìn)行分裂。在查詢時(shí),只有找到了位置對(duì)應(yīng)的節(jié)點(diǎn),那么節(jié)點(diǎn)下的所有點(diǎn)都會(huì)是此位置的附近點(diǎn),更小的“容量”意味著每個(gè)節(jié)點(diǎn)內(nèi)點(diǎn)越少,也就意味著查詢的精度會(huì)越高。并且可以保證每個(gè)節(jié)點(diǎn)內(nèi)都存儲(chǔ)著數(shù)據(jù),避免了內(nèi)存空間的浪費(fèi)。

4 實(shí)驗(yàn)驗(yàn)證

4.1 實(shí)驗(yàn)方法

實(shí)驗(yàn)中將場(chǎng)景中的攝像機(jī)和Player綁定,使得攝像機(jī)始終處于中心位置,而周圍仿真模型始終隨著攝像機(jī)視野移動(dòng)而實(shí)時(shí)進(jìn)行動(dòng)態(tài)調(diào)度。而針對(duì)Unity內(nèi)存管理機(jī)制,通過(guò)對(duì)三維模型進(jìn)行預(yù)設(shè)實(shí)例化和預(yù)設(shè)銷毀完成相應(yīng)的內(nèi)存管理。設(shè)計(jì)了如圖7所示的流程的動(dòng)態(tài)調(diào)度方法。

圖7 實(shí)驗(yàn)流程圖

1)程序初始化時(shí)將資源建立四叉樹(shù),并根據(jù)攝像機(jī)初始位置加載初始視野內(nèi)的仿真模型,并將載入的模型資源存入列表CurrentList(保存當(dāng)前已加載三維模型)。

2)Unity生命周期表到達(dá)Update幀刷新階段,判斷攝像機(jī)位置是否改變,若未發(fā)生變化則不處理,否則進(jìn)入三維模型動(dòng)態(tài)調(diào)度。

3)運(yùn)用四叉樹(shù)算法通過(guò)變化后攝像機(jī)位置來(lái)計(jì)算視野內(nèi)三維模型資源,將其存入列表RefreshList(保存幀更新后三維模型)。

4)根據(jù)每一幀幀更新前后的三維模型列表差值(CurrentList和RefreshList的差值)計(jì)算出需要加載和卸載的三維模型。

5)完成調(diào)度后,將RefreshList賦值給CurrentList,即更新當(dāng)前仿真模型資源列表。

結(jié)合圖7知,列表RefreshList比CurrentList的多出來(lái)的三維模型則代表需要加載的三維模型,而CurrentList比RefreshList的多出來(lái)的三維模型則代表需要卸載的三維模型。完成地形塊的動(dòng)態(tài)加載和卸載之后,執(zhí)行UnloadUnusedAssets()函數(shù)釋放其它紋理、材質(zhì)等內(nèi)存三維模型,并更新當(dāng)前列表后進(jìn)入下一幀循環(huán),由此則完成整個(gè)場(chǎng)景中三維模型的動(dòng)態(tài)調(diào)度過(guò)程。在整個(gè)幀循環(huán)過(guò)程中,內(nèi)存中只需要加載攝像機(jī)視野中的三維模型從而占用更少的內(nèi)存。

4.2 方法改進(jìn)

實(shí)驗(yàn)中三維模型需要通過(guò)四叉樹(shù)查找攝像機(jī)(Player)周圍的編碼塊不斷刷新,但是加載視野周圍的資源時(shí)需要搜索周圍資源是否在范圍內(nèi),若范圍內(nèi)某個(gè)點(diǎn)周圍的資源都加載的話,還是會(huì)占用大量的內(nèi)存空間,并且現(xiàn)率提升不明顯。而啟發(fā)式搜索就是在狀態(tài)空間中的搜索對(duì)每一個(gè)搜索的位置進(jìn)行評(píng)估,得到最好的位置,再?gòu)倪@個(gè)位置進(jìn)行搜索直到目標(biāo)。這樣可以省略大量無(wú)謂的搜索路徑,從而進(jìn)一步提升效率。用于評(píng)價(jià)節(jié)點(diǎn)重要性的函數(shù)稱為估價(jià)函數(shù),其一般形式為

f(n)=g(n)+h(n)

在該算法中,根據(jù)估價(jià)函數(shù)值,按由小到大的次序?qū)pen表(被考慮視野內(nèi)有效資源的位置集合)中的節(jié)點(diǎn)進(jìn)行重新排序,此時(shí)的Open表是一個(gè)按節(jié)點(diǎn)的啟發(fā)估價(jià)函數(shù)值的大小為序排列的一個(gè)優(yōu)先隊(duì)。

該算法首先需要將初始攝像機(jī)節(jié)點(diǎn)S0放入Open表中;如果Open表為空,則退出,當(dāng)其不為空,把Open表的第一個(gè)節(jié)點(diǎn)取出,放入到Closed表(不被考慮視野內(nèi)模型資源的位置集合)中,并把該資源節(jié)點(diǎn)記為節(jié)點(diǎn)n;如果節(jié)點(diǎn)n是視野邊緣節(jié)點(diǎn),則搜索成功,求得一個(gè)解,退出;再對(duì)節(jié)點(diǎn)n進(jìn)行拓展,生成一組子節(jié)點(diǎn),對(duì)不在Open表和Closed表中的資源節(jié)點(diǎn)計(jì)算出相應(yīng)的估價(jià)函數(shù)值;再把節(jié)點(diǎn)n的子節(jié)點(diǎn)放到Open表中并進(jìn)行排序;最后重復(fù)步驟直到退出。

實(shí)驗(yàn)中在四叉樹(shù)的基礎(chǔ)上引入A*算法,A*算法一般用于最佳路徑問(wèn)題,而用于此處主要作用找出攝像機(jī)當(dāng)前位置所需要加載的最佳模型組合;由于四叉樹(shù)已經(jīng)將地圖分割,主要考慮通過(guò)估價(jià)函數(shù)找出最佳的三維模型資源組合,稱之為可采納性。A*算法是一個(gè)可采納的最好優(yōu)先算法。A*算法的估價(jià)函數(shù)為:

f′(n)=g′(n)+h′(n)

式中:g′ (x)為從攝像機(jī)節(jié)點(diǎn)到視野內(nèi)節(jié)點(diǎn)x的最佳資源組合所付出的代價(jià);h′ (x)是從視野內(nèi)節(jié)點(diǎn)x到邊緣節(jié)點(diǎn)的最佳資源組合所付出的代價(jià);f′ (x)是從初始節(jié)點(diǎn)開(kāi)始一直加載節(jié)點(diǎn)x到達(dá)邊緣節(jié)點(diǎn)的最佳路徑的總代價(jià)。

對(duì)于每個(gè)節(jié)點(diǎn)的資源,都有自己的g′ (x)、h′ (x)、f′ (x)。其中g(shù)(x)是對(duì)g*(x)的估計(jì),且g(x)>0;h(x)是h*(x)的下界,即對(duì)任意節(jié)點(diǎn)x均有h(x)≤h*(x)

A星算法并不去遍歷整個(gè)場(chǎng)景,而是只遍歷了視野內(nèi)的點(diǎn)和其周圍的點(diǎn),所以得到的是一種近似最優(yōu)解的集合。

4.3 實(shí)驗(yàn)步驟

實(shí)驗(yàn)中電腦的配置如表1。

表1 電腦配置表

由于攝像機(jī)的視野為四棱錐狀,首先在Unity中創(chuàng)建一個(gè)矩形空間,并在矩形空間中預(yù)設(shè)一定量的三維模型文件,建立場(chǎng)景如圖8所示。

圖8 Unity場(chǎng)景

研究中將三維空間降為二維研究,則三維模型資源可理想化為點(diǎn)集,如圖9所示,圖中O點(diǎn)為攝像機(jī),三角形OAB為俯視視圖中攝像機(jī)的視野,為更加直觀看出四叉樹(shù)的視覺(jué)效果,在Untiy空間中使用Gizmos.DrawWireCube()來(lái)繪制四叉樹(shù)劃分的區(qū)域。

圖9 Unity中建立四叉樹(shù)

4.3 代碼實(shí)現(xiàn)

在整個(gè)場(chǎng)景中攝像機(jī)綁定在玩家Player上,可通過(guò)鍵盤(pán)鼠標(biāo)控制Player移動(dòng),即鍵盤(pán)上WASD控制Player前后左右移動(dòng)、空格跳躍以及鼠標(biāo)控制攝像機(jī)的上下左右旋轉(zhuǎn);其實(shí)現(xiàn)方法為在Update()方法中通過(guò)判斷Input.GetKey() 獲取按鍵信息,并使用進(jìn)行攝像機(jī)的移動(dòng)(WASD控制攝像機(jī)移動(dòng)),部分代碼如下:

void Update () {

if(Input.GetKey (KeyCode.W)){

transform.Translate(Vector3.forward * Time.deltaTime * Speed);}}

在加載過(guò)程中完成四叉樹(shù)的創(chuàng)建,主要通過(guò)一下代碼(部分)完成四叉樹(shù)的創(chuàng)建,如果還可以擁有下一層子節(jié)點(diǎn)且未創(chuàng)建,則創(chuàng)建下一層子節(jié)點(diǎn),且只有一個(gè)子節(jié)點(diǎn)時(shí)則可以包含該物體,即該物體屬于子節(jié)點(diǎn):

public void InsertObj(ObjData obj){

Node node=null;

bool bChild=false;

if(depth < belongTree.maxDepth && childList==null) {

CerateChild();}

if(childList!=null){

for (int i=0; i < childList.Length;++i)

Node item=childList[i];

if (item==null){

break;}}}

if (bChild){

node.InsertObj(obj);}

else{

objList.Add(obj);}}}}

通過(guò)A*尋找邊緣節(jié)點(diǎn)代碼如下

while (openList.Count > 0) {

AStarNode curNode=openList [0];

for (int i=0; i < openList.Count; i++) {

if (openList [i].CostF < curNode.CostF && openList [i].costH < curNode.costH) {

curNode=openList [i];}}

openList.Remove (curNode);

closeList.Add (curNode);

已經(jīng)找到邊緣節(jié)點(diǎn)后獲取當(dāng)前點(diǎn)的周圍點(diǎn),

if (curNode==end) {

Debug.Log (″>>″);

GetPathWithPos (startPos,endPos);

return;}

List nodeItemGroup= aStarMap.GetAroundNodes(curNode);

最后遍歷當(dāng)前點(diǎn)周圍的NodeItem 對(duì)其進(jìn)行過(guò)濾并且計(jì)算f(n)、g(n)、h (n)并進(jìn)行賦值。

foreach (AStarNode nodeCell in nodeItemGroup) {

if (nodeCell.isWall || closeList.Contains (nodeCell)) {

continue;}

if (newCostg <=nodeCell.costG

||!openList.Contains (nodeCell)) {

nodeCell.costG=newCostg;

nodeCell.costH=GetDistance (nodeCell,end);

nodeCell.parentNode=curNode;

if (!openList.Contains (nodeCell)) {

openList.Add (nodeCell); }}

在實(shí)驗(yàn)中將建立不同層數(shù)的四叉樹(shù)來(lái)進(jìn)行實(shí)驗(yàn)對(duì)比驗(yàn)證,在Unity中設(shè)定層數(shù)后,通過(guò)Unity Profile性能分析工具來(lái)觀察Unity中各種參數(shù)的變化,如圖10所示,由性能分析器的內(nèi)存占用曲線可以看出,在進(jìn)行動(dòng)態(tài)調(diào)度時(shí),仿真模型的加載和卸載過(guò)程占用時(shí)間很短,而且內(nèi)存始終維持在穩(wěn)定水平。

圖10 性能分析工具

4.4 實(shí)驗(yàn)結(jié)果

實(shí)驗(yàn)中三維模型中的部分包含PNG格式貼圖,模型的預(yù)制體為24個(gè),地形文件1個(gè),在加載時(shí)隨機(jī)實(shí)例化預(yù)制體,使得場(chǎng)景中模型數(shù)量到10000,運(yùn)行場(chǎng)景后隨機(jī)運(yùn)動(dòng)Player不斷刷新場(chǎng)景,將場(chǎng)景的幀數(shù)、內(nèi)存占用以及首次加載時(shí)間進(jìn)行數(shù)據(jù)記錄,主要控制的變量為四叉樹(shù)深度,根據(jù)改變深度得到的數(shù)據(jù)來(lái)判斷應(yīng)用四叉樹(shù)算法后的效果,通過(guò)多次實(shí)驗(yàn)并整理得到的數(shù)據(jù)如表2所示。

表2 實(shí)驗(yàn)數(shù)據(jù)

由上表可見(jiàn),本實(shí)驗(yàn)中采用四叉樹(shù)進(jìn)行動(dòng)態(tài)調(diào)度之后,程序中的內(nèi)存占用均大大降低,而且?guī)室灿兴嵘5请S著四叉樹(shù)的深度的增大,該算法的引入仍然具有優(yōu)勢(shì),但優(yōu)化效率卻會(huì)下降,優(yōu)化并不理想并且會(huì)增加加載時(shí)間;實(shí)驗(yàn)表明,四叉樹(shù)深度在4-7為最佳(其它自變量不變時(shí))優(yōu)化效率(幀數(shù))可達(dá)38.21%。

5 結(jié)束語(yǔ)

虛擬仿真的相關(guān)引擎極大地方便了虛擬仿真的相關(guān)開(kāi)發(fā),而Unity其強(qiáng)大的功能特性、跨平臺(tái)支持等優(yōu)勢(shì)更是受到無(wú)數(shù)開(kāi)發(fā)者的青睞,而本研究針對(duì)使用Unity進(jìn)行開(kāi)發(fā)中的內(nèi)存在用問(wèn)題,

引入四叉樹(shù)算法進(jìn)行動(dòng)態(tài)調(diào)度,本文的研究具有以下特點(diǎn):

1)從資源加載的角度進(jìn)行優(yōu)化內(nèi)存占用,在大場(chǎng)景漫游過(guò)程能避免一次性加載、卸載過(guò)多導(dǎo)致的一些問(wèn)題,并保持瀏覽流暢度的同時(shí)降低計(jì)算機(jī)性能消耗。

2)詳細(xì)分析了在Unity中的仿真模型的加載和卸載過(guò)程,對(duì)于控制仿真對(duì)象的三維模型占用和優(yōu)化有重要作用

3)通過(guò)實(shí)驗(yàn)證明該算法的引入能夠顯著提升Unity在虛擬仿真時(shí)的幀率;同時(shí),能維持內(nèi)存消耗在較低水平。

4)四叉樹(shù)節(jié)點(diǎn)的分裂與合并比較頻繁,如果直接 new、delete,相對(duì)比較慢;簡(jiǎn)單的實(shí)例化一些對(duì)象,并組成一個(gè)對(duì)象池的話,內(nèi)存碎片會(huì)比較嚴(yán)重,在后續(xù)研究中需要時(shí),每次預(yù)先分配一大塊內(nèi)存。再在大塊內(nèi)存上,切出一個(gè)個(gè)對(duì)象地址,這樣可以比較有效的減緩內(nèi)存碎片現(xiàn)象。

猜你喜歡
資源實(shí)驗(yàn)模型
一半模型
記一次有趣的實(shí)驗(yàn)
基礎(chǔ)教育資源展示
重要模型『一線三等角』
一樣的資源,不一樣的收獲
重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
做個(gè)怪怪長(zhǎng)實(shí)驗(yàn)
資源回收
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
3D打印中的模型分割與打包
主站蜘蛛池模板: 无码精品国产VA在线观看DVD| 亚洲精品动漫在线观看| 亚洲无限乱码| 欧美成人亚洲综合精品欧美激情 | 国产成人a毛片在线| 国产自无码视频在线观看| 国产美女在线免费观看| 亚洲区第一页| 国产久草视频| 99国产精品国产高清一区二区| 亚洲精品国产日韩无码AV永久免费网| 日韩精品一区二区三区免费| 在线观看亚洲人成网站| 国产欧美一区二区三区视频在线观看| 91在线国内在线播放老师 | 91精品aⅴ无码中文字字幕蜜桃 | 精品视频一区二区观看| 米奇精品一区二区三区| 日韩精品一区二区三区中文无码| 欧美国产精品不卡在线观看 | 日韩欧美一区在线观看| 久久黄色免费电影| 香蕉视频在线观看www| 中文字幕va| 精品91自产拍在线| 国产欧美高清| 666精品国产精品亚洲| 99久久99视频| 91视频区| 亚洲欧美在线综合图区| 制服丝袜 91视频| 国产剧情国内精品原创| 亚洲欧美人成人让影院| 国产色爱av资源综合区| 国产91精品最新在线播放| 日本高清有码人妻| 亚洲午夜片| 亚洲美女视频一区| 全免费a级毛片免费看不卡| 国产成人精品午夜视频'| 一级毛片在线免费视频| 在线国产欧美| 国产一区亚洲一区| 中日韩欧亚无码视频| 干中文字幕| 国产XXXX做受性欧美88| 亚洲av无码久久无遮挡| 亚洲国产理论片在线播放| 无码国内精品人妻少妇蜜桃视频| 国精品91人妻无码一区二区三区| 日韩欧美国产成人| 国产精品男人的天堂| 国产精品妖精视频| 九色综合伊人久久富二代| 久久久久亚洲精品成人网| 1769国产精品视频免费观看| 亚洲成a人片77777在线播放| 手机在线国产精品| 国产精品尤物在线| 亚洲第一成网站| 女人18一级毛片免费观看| 亚洲AV永久无码精品古装片| 手机看片1024久久精品你懂的| 国产黄在线免费观看| 无码乱人伦一区二区亚洲一| 久久久久久国产精品mv| 久久婷婷五月综合色一区二区| 日韩av手机在线| 国产91视频免费观看| 人妻出轨无码中文一区二区| 国产午夜精品鲁丝片| 亚洲AV成人一区二区三区AV| 欧美成人看片一区二区三区| 91香蕉国产亚洲一二三区| 自拍偷拍欧美日韩| 国产夜色视频| 伊人色综合久久天天| 欧美第一页在线| 久青草免费在线视频| 国产内射一区亚洲| 91精品啪在线观看国产91九色| 免费中文字幕一级毛片|