最近使用UE4官方VR模板開發(fā)中的一些總結(jié)
(up主本文章內(nèi)的所有開發(fā),都是基于ue4提供的VR模板衍生開發(fā)的,使用4.26版本引擎)
一. 關(guān)于導(dǎo)航網(wǎng)格體:
? ? ? ?1.將“導(dǎo)航網(wǎng)格體邊界體積”拖入關(guān)卡內(nèi),會自動生成一個(gè)“RecastNavMesh”的東西,這個(gè)東西可以控制導(dǎo)航的一系列相關(guān)參數(shù),且只存在于主關(guān)卡內(nèi)無法移動到子關(guān)卡;
? ? ? ?2.如果導(dǎo)航放在子關(guān)卡內(nèi),固定關(guān)卡內(nèi)沒有導(dǎo)航,會由于固定關(guān)卡啟動時(shí)未檢測到導(dǎo)航而自動銷毀“RecastNavMesh”(此處有個(gè)bug,RecastNavMesh內(nèi)有個(gè)“無導(dǎo)航時(shí)自動銷毀”的選項(xiàng),但勾掉也沒用),從而導(dǎo)致子關(guān)卡內(nèi)導(dǎo)航不能使用;(我的解決方法是在主關(guān)卡內(nèi)空白的地方(如空中)放置一個(gè)“導(dǎo)航網(wǎng)格體邊界體積”,這樣再運(yùn)行子關(guān)卡就能使用導(dǎo)航了)

? ? ? ?3.導(dǎo)航放置在高處設(shè)置移動區(qū)域時(shí)(如高塔上),地面是沒有導(dǎo)航的,按P鍵也沒有顯示下方?jīng)]有綠色區(qū)域,但當(dāng)使用VR模板的移動時(shí),偶爾會出現(xiàn)跑到了下方地面的奇怪問題,后來得知是玩家移動到了“世界坐標(biāo)原點(diǎn)”,好像是此模板會存在的Bug;(我的解決方法是,在原點(diǎn)設(shè)置了一個(gè)碰撞體積,只要檢測到玩家回到了原點(diǎn),就把他再轉(zhuǎn)移回塔上)
? ? ? ?4.在高空中設(shè)置移動區(qū)域,使用碰撞去和導(dǎo)航體積交互產(chǎn)生移動區(qū)域,關(guān)于碰撞的類型測試了一下,主要是“碰撞預(yù)設(shè)”—“物體響應(yīng)”內(nèi)—選擇阻擋“Pawn或Vehicle”即可,碰撞區(qū)域下方“下三角”點(diǎn)開,還需要確認(rèn)“是否能影響導(dǎo)航”為勾選;

二. 關(guān)于和UI交互
? ? ? ?1.零碎東西:VR的UI如果圖片是透明的,需要在UI的Actor上“控件組件”—“渲染”—“混合模式”—選擇“透明”、UI內(nèi)也可以加入點(diǎn)擊時(shí)的音效、關(guān)于UI所使用的貼圖,壓縮需要考慮;
? ? ? ?2.在默認(rèn)手上添加“控件交互組件”后,默認(rèn)是只有右邊的手能夠去和UI上的按鈕交互,完成觸發(fā),左邊的手指向到UI的按鈕上不會顯示“懸停效果”,左手按下扳機(jī)鍵會有按鈕按下的“顏色變化和提示音”,但不會完成觸發(fā);(研究了一下,發(fā)現(xiàn)是“交互控件”內(nèi)的“指針?biāo)饕蹦J(rèn)都是“0”,才導(dǎo)致左手不能交互,分別將左手和右手設(shè)置為不同的指針?biāo)饕?,就都能和UI交互了)



? ? ? ?3.如果一個(gè)關(guān)卡內(nèi)會使用到多個(gè)Pawn的切換,切換后需要和UI進(jìn)行交互,也是上面的方法,需要對不同的Pawn設(shè)置不同的手部“控件交互組件”的指針?biāo)饕?,并確?;ハ嗖恢貜?fù),以保證多個(gè)Pawn在切換后都能與UI交互;(使用流送關(guān)卡,可以確保下個(gè)場景內(nèi)的Pawn能夠和UI交互,但如果切換回之前關(guān)卡內(nèi)的相同Pawn,就不能再交互了,不如分別為Pawn設(shè)置不同指針?biāo)饕龔氐祝?/p>
? ? ? ?4.手上交互組件的射線會被碰撞體阻擋,有時(shí)候有些不可視的東西,但他的碰撞還是會存在于場景內(nèi),阻擋住了手和UI的交互,需要注意甄別;
三. 一些奇奇怪怪的總結(jié)
? ? ? ?1.如果場景內(nèi)是動態(tài)光照,光源內(nèi)有個(gè)設(shè)置“陰影量”注意不要去動它,一旦設(shè)置不等于1了,就會出現(xiàn)頭盔內(nèi)“一只眼有陰影,一只眼沒有陰影的問題”,感覺畫面臟臟的感覺,解決方法就是恢復(fù)默認(rèn)陰影量等于1就好了;
? ? ? ?2.子關(guān)卡內(nèi)單獨(dú)設(shè)置的“游戲模式”貌似并不會在它啟用時(shí)生效,使用了關(guān)卡流送好像就只適用于一個(gè)主的“游戲模式”,另外子關(guān)卡如果還套了子關(guān)卡,這個(gè)“孫子”關(guān)卡不會加載;
? ? ? ?3.有一個(gè)奇怪的現(xiàn)象是,雙手拿著一個(gè)伸縮的棒子,但會在特定的角度棒子消失了,頭扭動一下就又能看到,后來測試發(fā)覺似乎是棒子物理碰撞位置的問題,導(dǎo)致棒子被判定為離開了視野剔除渲染;(解決方法,在棒子的頭和尾都加了個(gè)物理碰撞,防止它在玩家視野的中心點(diǎn)消失不渲染了);
? ? ? ?4.關(guān)于包體打包出來的大小,按照官方壓縮包體方法設(shè)置了一下,似乎只在第一次設(shè)置的時(shí)候起了作用,之后并沒有依照預(yù)期的結(jié)果走向,而是隨著關(guān)卡越做越大,包體也越來越大,似乎并不能只選取幾個(gè)關(guān)卡打包出來,而是整體都會烘焙,包體穩(wěn)定在一個(gè)固定值;(難道只能把所需要的關(guān)卡單單遷移出來再打包,才能縮小打包?不清楚是不是關(guān)卡相互有未知關(guān)聯(lián)所導(dǎo)致的)
? ? ? ?5.反向優(yōu)化,開始的項(xiàng)目沒有依照官方推薦的VR設(shè)置,后來單獨(dú)測試加入“前向渲染、目標(biāo)硬件降低、修改渲染設(shè)置”,好像都沒有在項(xiàng)目上得到正反饋,甚至運(yùn)行時(shí)頭盔的毫秒上升了;(所以優(yōu)化這塊,不清楚是我場景有問題導(dǎo)致的,還是什么設(shè)置或硬件設(shè)備有問題導(dǎo)致的,按照推薦并沒有得到預(yù)期效果,還不如就按他自己的效果全開、桌面+最高質(zhì)量、動態(tài)光、后期處理,效果好幀率也高,開了“前向渲染”反而會導(dǎo)致一些原本場景出問題,主要是光照那塊,還是吃了不懂沒文化的虧)
? ? ? 6.最后就是在遷移項(xiàng)目測試的時(shí)候,特地選用了創(chuàng)建空白的項(xiàng)目,由于是VR項(xiàng)目,空白項(xiàng)目沒有手柄的輸入,但是復(fù)制完對應(yīng)“輸入”后,手柄依然不能啟用按鍵,一通胡亂操作,發(fā)現(xiàn)把項(xiàng)目設(shè)置SteamVR內(nèi)的3個(gè)輸入都重新點(diǎn)擊一遍就好了,也是沒其中明白原理;

? ? ? ?最最后,就是遷移項(xiàng)目后,主要是測試優(yōu)化問題,那些VR優(yōu)化選項(xiàng)需要考慮清楚,最好一次性都設(shè)置完再重啟項(xiàng)目,不讓每次開啟或關(guān)閉一個(gè)設(shè)置,重啟編輯器后起步6000+的材質(zhì)編譯,實(shí)在是太酸爽了(如此測試十分緩慢和搞心態(tài),最重要的是還負(fù)優(yōu)化了,淚目:)
? ? ? ?(UP主學(xué)藝不精,關(guān)于本次的VR項(xiàng)目做了一個(gè)小總結(jié),可能只是適用于自己的項(xiàng)目,或者有不少錯誤,但萬一能幫助閱讀的你解決到類似問題,不甚榮幸)