Unity3d游戲場(chǎng)景優(yōu)化_第1頁(yè)
Unity3d游戲場(chǎng)景優(yōu)化_第2頁(yè)
Unity3d游戲場(chǎng)景優(yōu)化_第3頁(yè)
Unity3d游戲場(chǎng)景優(yōu)化_第4頁(yè)
Unity3d游戲場(chǎng)景優(yōu)化_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Unity3d游戲場(chǎng)景優(yōu)化涉及到Lod技術(shù)(Levels of Detail ,多細(xì)節(jié)層次),選擇剔除(Culling),光照貼圖(Lightmap)(一)光照貼圖動(dòng)態(tài)實(shí)時(shí)燈光相比靜態(tài)燈光,非常耗費(fèi)資源。所以除了能動(dòng)的角色和物體靜態(tài)的 地形和建筑,通通使用Lightmap。強(qiáng)大的Un it y內(nèi)置了一個(gè)強(qiáng)大的光照?qǐng)D烘焙工具Beast,這個(gè)東 東是Autodesk公司的產(chǎn)品(可怕的壟斷,感覺(jué)和3d沾邊的軟件丫都要插一手'空) 據(jù)說(shuō)用來(lái)制作過(guò)殺戮地帶和鏡之邊緣。鏡之邊緣建筑場(chǎng)景漂亮干凈的光影,Lightmap的效果在Unity中制作Lightmap很方便,調(diào)節(jié)幾個(gè)參數(shù)后直接烘焙即可。支持G

2、I,Skylight,效果一流! !當(dāng)然你需要一臺(tái)好點(diǎn)的機(jī)器,不然漫長(zhǎng)的烘焙過(guò)程你就有的等了。內(nèi)置的光照?qǐng)D烘焙工具BeastP場(chǎng)景準(zhǔn)備和光照?qǐng)D烘焙 點(diǎn)選 Window -> Lightmapping打開(kāi)光照?qǐng)D烘焙面板:1.確認(rèn)所有將要被用來(lái)烘焙光照貼圖的網(wǎng)格體UVs正確無(wú)誤.最簡(jiǎn)單的辦法是在meshimport setti ngs中選擇 Gen erate Lightmap UVs 選項(xiàng)(由 Beast 自動(dòng)分 uv)2.在Object面板中將所有網(wǎng)格體或地形標(biāo)注為static -這將告訴Unity,這些物體將不會(huì)被移動(dòng)和改變并且可以被賦予光照貼圖。0 InspectorLightnnD

3、ppinq1ObjectBakeMapss ViseRendererJStatic315匸泊亡 In Light mip1A(ltleaf Rak電I 5.£4?I ttKtli ptrnortd unh7 du-al lightnut1 fi. 7 MB 皿M3.為了控制光照貼圖的精度,進(jìn)入Bake面板并調(diào)整Resolution 的值.(為了更好的了解你的lightmap texels使用情況,在Scene視窗中找到 Lightmap Display小窗口并且選擇ShowResoluti on).1.點(diǎn)擊Bake按鈕。2. Unity Editor's會(huì)岀現(xiàn)一個(gè)進(jìn)度條,位置

4、處于右下角.3.當(dāng)烘焙結(jié)束,Lightmap Editor窗口會(huì)顯示已經(jīng)烘焙好的光照?qǐng)D .Scene和game視圖會(huì)同時(shí)自動(dòng)更新-現(xiàn)在你的場(chǎng)景已經(jīng)有了光照?qǐng)D的效果Un ity Lightmap的設(shè)置還有更詳細(xì)和更高端的內(nèi)容,請(qǐng)參考自帶的文檔!(二) LODLOD(_evel-of-detail)是最常用的游戲優(yōu)化技術(shù)。如果你的程序可以定制開(kāi)發(fā)應(yīng)用LOD的模塊,當(dāng)然是很美好的事情。不過(guò)如果沒(méi)有也沒(méi)關(guān)系,大家可以使用Un iLOD這個(gè)第三方的LOD插件。免費(fèi)共享的哦(向 UniLOD開(kāi)發(fā)者致敬,贊美偉大的共享精神! !)以下是簡(jiǎn)介:功能眾多,涉及到場(chǎng)景管理,模型優(yōu)化,資源管理員,及顯示效果變化,且

5、不需要腳本編寫(xiě), 全部通過(guò)編輯器實(shí)現(xiàn)!目前此un ity3d擴(kuò)展為開(kāi)源的,你可以下載到源代碼來(lái)研究學(xué)習(xí)。特色: 1.自動(dòng)簡(jiǎn)化網(wǎng)格體(Windows + Unity Pro only)根據(jù)用戶的設(shè)定自動(dòng)減面。 2.Level -of-detail 編輯器方便快捷的創(chuàng)建 LOD組件來(lái)切換不同的品質(zhì)級(jí)別或通過(guò)設(shè)定距離數(shù) 值來(lái)顯示或隱藏物體。創(chuàng)建你的LOD場(chǎng)景方便快捷的用 LOD 組件來(lái)替換現(xiàn)有組件將現(xiàn)有的場(chǎng)景轉(zhuǎn)換為擁有LOD管理的場(chǎng)景。將單個(gè)的 mesh 和貼圖成組來(lái)降低 draw calls 將場(chǎng)景存儲(chǔ)為 標(biāo)準(zhǔn) assets 或者 asset 包 3.場(chǎng)景管理Streaming 支持Stream

6、your scene as the player moves through the world資源自動(dòng) loaded/unloadedStream from resource folder, or asset bundlesMinimal performance impact with resource buffering可以根據(jù)需要調(diào)整 , 速度或者內(nèi)存Takes care of switching quality levels as the playermoves though the world充分優(yōu)化 , 使用最少的資源 4. 資源管理所有 asset bundles 和普通資源都以

7、標(biāo)準(zhǔn)方式載入。自動(dòng)釋放Keeps reference counts on your resources and 5. 完整植入 Unity 并只需要通過(guò) UnityEditor API 來(lái)操作。無(wú)需輸入代碼Sorry, 場(chǎng)景管理和資源管理的有些內(nèi)容沒(méi)搞懂就不亂翻譯了。鏈接:擴(kuò)展 beta 版本發(fā)布un ilod-beta-levelofdetail-a nd-stream in g-support當(dāng)然,Un ity3d自己的地形是自帶 LOD功能的,當(dāng)你刷好你的地形后,你只需要調(diào)整PixelError 這個(gè)參數(shù)即可。Unity3d會(huì)自動(dòng)計(jì)算生成地形的LOD無(wú)需你做其他的任何設(shè)置。要提醒朋友們的

8、是,如果你使用了Lightmap,那么同時(shí)使用LOD的時(shí)候會(huì)有一些麻煩,我們的辦法是制作模型的時(shí)候事先做好第二套u(yù)v(不使用Unity的自動(dòng)計(jì)算lightmapUV功能),而且所有LOD的第二套UV的分布位置都一致,很費(fèi)工。不知道有沒(méi)有更好的方法! ?。ㄈ┻x擇剔除 首先介紹下 draw call (這個(gè)東西越少你的游戲跑的越快): 在游戲中每一個(gè)被展示的獨(dú)立的部分都被放在了一個(gè)特別的包中, 我們稱(chēng)之為“描繪指令” ( draw call ),然后這個(gè)包傳遞到 3D 部分在屏幕上呈現(xiàn)出來(lái)。這就和你希望你的親友收到 準(zhǔn)備好的圣誕禮物需要包裝好然后穿過(guò)城市準(zhǔn)時(shí)放在他應(yīng)該出現(xiàn)的地方一樣沒(méi)什么不同。

9、你 的CPU來(lái)完成包裝和傳遞他們的活, 同時(shí)會(huì)消耗很多的帶寬, 所以最終分配好這些關(guān)鍵性資 源很重要。 目前, 真正可怕的事情是從描繪指令消耗遠(yuǎn)景開(kāi)始, 每一個(gè)獨(dú)立的飛濺到地板上 的血跡和一個(gè)角色或者一具死尸消耗的字節(jié)是一樣的多的: 他們都消耗同樣的描繪指令。 除 此之外,沒(méi)有什么更多的差別。那么如何降低 draw call 呢?那么我們就用到 Culling( 剔除)技術(shù)。如果不應(yīng)用這個(gè)技術(shù), 電腦是不管 3721 把場(chǎng)景里所有的東西都送去渲染的??吹靡?jiàn)的也渲染,看不見(jiàn)得照樣也送去渲 染。很傻是吧,那咋辦呢。得告訴電腦,那個(gè)你看得見(jiàn)的渲染,看不見(jiàn)的就算了。于是就有了系統(tǒng)自1. 視錐體剔除(

10、Frustum Culling )這個(gè) unity帶了好像,就不用操心了。2. 遮擋剔除( Occlusion Culling )Unity 3 專(zhuān)業(yè)版內(nèi)置了一個(gè)強(qiáng)大的 Occlusion Culling 插件 Umbra 免費(fèi)的遮擋剔除( Occlusion Culling )遮擋剔除是一種什么樣的特性呢, 當(dāng)一個(gè)物體被其他物體遮擋住而不在攝像機(jī)的可視范圍內(nèi)時(shí)不對(duì)其進(jìn)行渲染。遮擋剔除在3D圖形計(jì)算中并不是自動(dòng)進(jìn)行的。因?yàn)樵诮^大多數(shù)情 況下離 camera 最遠(yuǎn)的物體首先被渲染,靠近攝像機(jī)的物體后渲染并覆蓋先前渲染的物體(這被稱(chēng)為重復(fù)渲染,無(wú)效渲染"overdraw").遮

11、擋剔除不同于視錐體剔除視錐體剔除只是不渲染攝像機(jī)視角范圍外的物體而對(duì)于被其他物體遮擋但依然在視角范圍內(nèi)的物體則不包括在內(nèi) 注意當(dāng)你使用遮擋剔除時(shí)你依然受益于視錐體剔除( Frustum Culling ) 左邊的場(chǎng)景使用了遮擋剔除右邊的場(chǎng)景未使用遮擋剔除遮擋剔除的運(yùn)行將通過(guò)在場(chǎng)景中使用一個(gè)虛擬的攝像機(jī)來(lái)創(chuàng)建一個(gè)物體潛在可視性狀態(tài)(set )的層級(jí).這些數(shù)據(jù)可以讓每個(gè)運(yùn)行時(shí)間內(nèi)的攝像機(jī)來(lái)確定什么能看見(jiàn)什么看不見(jiàn)。通過(guò)這些數(shù)據(jù),Unity 將確定只把可以看見(jiàn)的物體送去渲染.這將降低draw calls 的數(shù)量并提供游戲的運(yùn)行效率.occlusion culling 的數(shù)據(jù)由單元(cells )組成

12、.每個(gè)單元是整個(gè)場(chǎng)景范圍數(shù)值的一部分.更多特定的單元來(lái)自一個(gè)二叉樹(shù)(bin ary tree ). Occlusion Culli ng使用兩個(gè)叉,一個(gè)給View Cells ( 靜態(tài)物體)另一個(gè)給 Target Cells ( 移動(dòng)物體).View Cells map 給出了 一個(gè)定義了靜態(tài)可視物體的索引列表(精確剔除后的靜態(tài)物體).非常重要的一點(diǎn)是在創(chuàng)建你的物體時(shí)要隨時(shí)注意,因?yàn)槟阈枰谖矬w的尺寸和單元的尺寸間取得一個(gè)好的平衡.理想情況下,you should n't have cells that are too small incomparis on with your obj

13、ects but equally you should n't have objects that cover many cells.有時(shí)你可以通過(guò)將大的物體拆成幾個(gè)部分來(lái)改進(jìn)遮擋剔除效果.無(wú)論如何你仍然能夠?qū)⑿〉奈矬w合并為一體來(lái)降低draw calls,在它們都屬于一些小的組件的時(shí)候,occlusion culling將不起作用.確定組件中那個(gè)是可視的組件的選集和可視信息被認(rèn)為是PVS (潛在可視狀態(tài) Pote ntially Visible Set).Occlusi on Culli ng設(shè)置 為了使用遮擋剔除 需要進(jìn)行相關(guān)的手動(dòng)設(shè)置首先 你關(guān)卡中的幾何體必須被分割成明顯的 不同尺

14、寸的塊這也有助于布置關(guān)卡中小塊的容易定義的區(qū)域 被其他大物體遮擋(例如墻, 建筑物)這意味著每個(gè)單獨(dú)的 mesh被確定是否渲染取決于 occlusion 數(shù)據(jù)所以如果你 有一個(gè)物體包含了房間里的所有家具那么所有的家具要么全渲染, 要么全不渲染是否渲染 是基于組件而不是基于每個(gè)單獨(dú)物體自身的。在檢視面板(Inspector )你需要標(biāo)識(shí)(tag)所有需要應(yīng)用遮擋剔除的場(chǎng)景物體。最快的 方法是是將你需要標(biāo)示為Static的物體作為一個(gè) Empty GameObject的子物體并設(shè)置這個(gè)Empty GameObject 為 Static,當(dāng) option 出現(xiàn)的時(shí)候選擇 affect childre

15、n.當(dāng)子物體被tagged as Static你可以取消子物體和Empty GameObject的父子關(guān)系.檢視面板中的 Static checkbox下一步點(diǎn)擊 Tools->Occlusion Culling.打開(kāi)Occlusion Culling檢視面板,在面板中你會(huì)發(fā)現(xiàn)幾個(gè)數(shù)值被調(diào)整過(guò)了。這些數(shù)值前面描述過(guò):-Occlusion Culling - Object遮擋剔除檢視面板的object標(biāo)簽.Object標(biāo)簽可以讓你創(chuàng)建 Occlusion Areas GameObjects.這些區(qū)域讓你指定什么地方你會(huì)使用遮擋剔除注意:默認(rèn)情況下如果你不創(chuàng)建任何遮擋剔除區(qū)域,整個(gè)場(chǎng)景都會(huì)進(jìn)

16、行遮擋剔除PropertiesQuick Select快速選擇和創(chuàng)建一個(gè)Occlusion Area并且快速編輯它None這個(gè)是默認(rèn)值.Create New創(chuàng)建一個(gè)新的 Occlusi on Area GameObject.當(dāng)你點(diǎn)擊 Create New in the Quick Select drop down, Unity將自動(dòng)創(chuàng)建一個(gè) OcclusionArea并且刪除默認(rèn)區(qū)域(整個(gè)場(chǎng)景).現(xiàn)在你可以根據(jù)需要開(kāi)始調(diào)整Occlusion Area(s).Occlusion Area 檢視面板 .PropertiesSize 定義 Occlusion Area 的尺寸 .Center選擇 O

17、cclusion Area 的中心 . B 默認(rèn)為 0,0,0 并在 box 的中心位置 .Is View Volume內(nèi)的靜態(tài)注意 : 這個(gè)定義攝像機(jī)的活動(dòng)范圍區(qū)域 . 點(diǎn)選這個(gè)選項(xiàng)才能應(yīng)用遮擋剔除在 Occlusion Area 物體 .Is Target Volume 如果你要遮擋剔除運(yùn)動(dòng)物體,打開(kāi)這個(gè)選項(xiàng) .Target Resolution確定區(qū)域內(nèi)的 Occlusion Culling 精度 . 即一個(gè) Occlusion Area 的單元尺寸 . 選項(xiàng)只對(duì) Target Areas (移動(dòng)物體)起作用 .Low 減少計(jì)算時(shí)間但同時(shí)精度降低 .Medium 計(jì)算時(shí)間和精度中等,比較

18、平均 .High 計(jì)算時(shí)間長(zhǎng)但精度高 .Very High 精度很高,計(jì)算時(shí)間更長(zhǎng) .Extremely High 最高精度 .注意 : 計(jì)算時(shí)間令人發(fā)指。如果攝像機(jī)處于遮擋區(qū)域之外或者任何物體超出區(qū)域這些物體將不會(huì)被遮擋剔除Occlusi on Culli ng - BakeView Cell Size每個(gè)view area 單元的尺寸,尺寸越小遮擋剔除越精確.這個(gè)數(shù)值用來(lái)平衡遮擋剔除的精 度和存儲(chǔ)容量Near Clip Pla neNear clip pla ne如果設(shè)置最小數(shù)值那么游戲中所有攝像機(jī)都可看到Far Clip Pla neFar Clip Plane用于選擇objects.任

19、何物體的距離大于這個(gè)設(shè)定數(shù)值都會(huì)被自動(dòng)遮擋.(Should be set to the largest far clip pla ned that will be used in the game ofall the cameras)Quality品質(zhì)級(jí)別Preview開(kāi)發(fā)階段使用這個(gè)(ie,不是很準(zhǔn)確但可以讓你御覽在游戲中的大致表現(xiàn))Product ion如果開(kāi)發(fā)基本結(jié)束準(zhǔn)備發(fā)布那就該選擇這個(gè)(會(huì)耗費(fèi)更多的時(shí)間但更精確)當(dāng)你調(diào)整完這些數(shù)值后可以點(diǎn)擊Bake按鈕開(kāi)始處理Occlusion Culling數(shù)據(jù).如果你對(duì)結(jié)果不太滿意,你可以點(diǎn)擊Clear按鈕刪除以前的計(jì)算數(shù)據(jù)Occlusi on

20、Cull ing - Visualizati onO£d.CuNlnq |,Occlusi on culli ngProperties檢視面板bake tab.Occlusi on culli ng檢視面板visualization 可視標(biāo)簽PropertiesQuick Select讓你快速選擇場(chǎng)景中的任何攝像機(jī)來(lái)觀看遮擋剔除的效果The near and far planes 定義了一個(gè)虛擬攝像機(jī)來(lái)計(jì)算遮擋剔除數(shù)據(jù) . 如果你有幾個(gè)攝像機(jī) near 或 far planes 不同 , 你應(yīng)該設(shè)置 near plane 和 largest far plane distance適配所

21、有攝像機(jī)來(lái)調(diào)整物體的包括范圍 .所有場(chǎng)景里的物體只在數(shù)值范圍內(nèi)起作用所有請(qǐng)確定你的所有物體都 處于可視范圍 .當(dāng)你準(zhǔn)備好生成 occlusion data, 點(diǎn)擊 Bake 按鈕 . 記住在 Bake 標(biāo) 簽的 Quality selection box 中事先選擇 Preview 和 Production. Preview 可以快速生成數(shù)據(jù)并可以快速檢查結(jié)果 . Production 用于產(chǎn)品發(fā)布前的生成和檢測(cè) .請(qǐng)記住遮擋剔除的數(shù)據(jù)計(jì)算生成速度取決于事先設(shè)置的 cell levels (單元級(jí)別) , 數(shù)據(jù)尺寸大小和精度 . Unity 會(huì)在窗口底部顯示 PVS 運(yùn) 算狀態(tài).運(yùn)算處理結(jié)束后

22、 , 你會(huì)在 View Area 看到一些不同顏色的 cube. 顏色相 同的區(qū)域共享遮擋剔除數(shù)據(jù)點(diǎn)擊Clear如果你想刪除所有遮擋剔除的事先計(jì)算好的數(shù)據(jù)(預(yù)計(jì)算數(shù) 據(jù)).Movi ng Objects如果想應(yīng)用遮擋剔除到一個(gè)運(yùn)動(dòng)物體你必須創(chuàng)建一個(gè)Occlusion Area然后設(shè)定其尺寸來(lái)適配運(yùn)動(dòng)物體的活動(dòng)空間 (注意:運(yùn)動(dòng)物體不能被標(biāo) 示為 static).創(chuàng)建 Occlusion Area 后,檢查 Is Target Volume checkbox來(lái)遮擋剔除運(yùn)動(dòng)物體.移動(dòng)物體的 Occlusion Area propertiesSize設(shè)定 Occlusion Area 尺寸.Cent

23、er設(shè)定Occlusion Area 的中心.默認(rèn)0,0,0 并位于box的中心.Is View Volume定義攝像機(jī)能到哪里.檢查這個(gè)數(shù)值來(lái)遮擋剔除Occlusion Area 中的static objects .Is Target Volume遮擋剔除運(yùn)動(dòng)物體時(shí)必選Target Resoluti on確定區(qū)域內(nèi)的遮擋剔除精度。這將決定Occlusion Area的單元尺寸.注意:只對(duì)TargetAreas起作用.Low減少計(jì)算時(shí)間但同時(shí)精度降低Medium計(jì)算時(shí)間和精度中等,比較平均High計(jì)算時(shí)間長(zhǎng)但精度高.Very High精度很高,計(jì)算時(shí)間更長(zhǎng).Extremely High最高精度

24、.注意:計(jì)算時(shí)間令人發(fā)指。添加完Occlusion Area后,你需要了解它是如何劃分單元中的box.如果想了解occlusionarea如何計(jì)算運(yùn)動(dòng)物體,你必須在Scene View中點(diǎn)選Target按鈕并且關(guān)閉View按鈕同 時(shí)Occlusion Culling檢視面板是打開(kāi)的.SelectingTarget (moving objects) or View (static objects)讓你御覽 calculated data的運(yùn)作.Testi ng the gen erated occlusi onocclusion設(shè)置完畢后 , 打開(kāi) Cull Geometry option (in the Occlusion Culling window)并在場(chǎng)景視窗移動(dòng)Mai n Camera.OcctuflDn 匚 u III ng Vi<Ww*邱*1UliiII £當(dāng)色 m專(zhuān)!ryiScene Vie

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論