朱峰社區(qū)首頁 朱峰社區(qū)

搜索資源 注冊|登陸

等待

返回 展開菜單

為三星虛擬現(xiàn)實設(shè)備 GEAR VR 構(gòu)建《逃逸速度》:后期分析

UDK基礎(chǔ)教程 觀看預(yù)覽

UDK基礎(chǔ)教程

包含15節(jié)視頻教程
關(guān)注21.8萬

讓你全面了解和掌握udk虛幻編輯器的教程。包含次世代制作技術(shù)。各種腳本的應(yīng)用。各種操控器的詳細(xì)講解。讓你也可以獨立制作有趣的游戲場景!

關(guān)閉

為三星虛擬現(xiàn)實設(shè)備 GEAR VR 構(gòu)建《逃逸速度》:后期分析

在本文中,我將針對開發(fā) Gear VR 應(yīng)用程序以及使用虛幻引擎 4 的虛擬現(xiàn)實體驗提出一些建議。同時將透露一些在游戲中實現(xiàn)某些特效的小技巧。

經(jīng)驗學(xué)習(xí)
前期優(yōu)化是實現(xiàn)良好虛擬現(xiàn)實體驗的先決條件

我們的目標(biāo)平臺三星 Galaxy S6 使用的圖形處理器是 Mali-T760 MP8,其理論性能為 210 GFLOPS,5.2 GTexels/s。這可以與 PC 平臺上虛擬現(xiàn)實推薦使用的英偉達(dá) GeForce GTX 970 顯卡(原始性能為 3494 GFLOPS 和 109.2 GTexels/s)相提并論?紤]到虛幻引擎 4 在 Gear VR 上相對于 Oculus DK2 會渲染更多像素(2.097M vs 2.073M),后者在計算能力和帶寬上的差距顯而易見。后者唯一的優(yōu)勢是幀數(shù):Gear VR 應(yīng)用程序大約保持在 60 幀,而 Oculus DK2 可達(dá) 75 幀,而 Crescent Bay 可能會沖到 90 幀。

了解這些數(shù)據(jù)后,便可知對于性能的追求僅有一種合理的方式:做好前期開發(fā)。如果您認(rèn)為僅靠“優(yōu)化次數(shù)”即可提升性能,那就大錯特錯了。因為您不得不忍痛刪減許多資源和特性。

對于虛擬現(xiàn)實而言,最好在開發(fā)的每一個步驟中均考慮性能問題。當(dāng)設(shè)計一項特性或場景時,需要考慮渲染多少個不同物體、所需特效以及所有物體的圖像保真度。使用同樣的渲染設(shè)置但具用不同占位資源的原型試驗。如果某種原因?qū)е聨瑪?shù)降幅過大,先后退,然后將其放棄或在獨立的分支中運行。

《逃逸速度》之前,我們的團(tuán)隊僅在 PC 上體驗過虛幻引擎 4。當(dāng)時我們天真地以為在后續(xù)開發(fā)中可以將游戲幀數(shù)穩(wěn)定在 60fps。無數(shù)不眠之夜和那些棄用的特性都證明了我們是錯誤的。吸取了這次的經(jīng)驗教訓(xùn)后,我們調(diào)整了開發(fā)方式,新項目便不再出現(xiàn)如此嚴(yán)重的性能問題。我們對任何可能提高性能的觀點均加以篩選并進(jìn)行了全面試驗。

神秘的繪制調(diào)用

我們發(fā)現(xiàn)繪制調(diào)用的數(shù)量是一項衡量標(biāo)準(zhǔn),需要在開發(fā)過程中謹(jǐn)慎對待。手機(jī) GPU 在三角形數(shù)量方面非常強勁,但對不同材質(zhì)的物體進(jìn)行繪制調(diào)用時,通常引發(fā)驅(qū)動程序狀態(tài)變化次數(shù)過多,進(jìn)而導(dǎo)致 GPU 性能下降。

這就是我們空間站的各部分在初期幾乎處于分離狀態(tài)的原因,但是所有的紋理和地圖最終都融為一體,猶如一張大網(wǎng)。我們的測試顯示 LOD 的作用非常有限,因為即使將所有模塊替換為封閉模型(每個大約 30tris),Galaxy S6 中的 Mali-T760 MP8 的幀數(shù)依然無法達(dá)到 60fps。

光遮蔽的作用也不大,因為玩家在 EV 中的自由度很大,整個空間站都可以在屏幕中顯示。

此外,我們還必須舍棄一切粒子效果,因為當(dāng)時虛幻引擎 4 無法在 Galaxy S6 中使用實例化,繪制調(diào)用會因此急速增長。但是,4.11 版本現(xiàn)已提供支持。

對于今后的項目,我們非常期待為近期在移動端 GPU 中發(fā)布的 0Vulkan API 提供支持。Epic Zen's Garden 演示程序顯示,Metal 這類低級別 API(以及 Vulkan)能夠挖掘這些設(shè)備的真正潛能,讓開發(fā)者能夠不再因一些限制條件而苦惱。

觀看者會產(chǎn)生暈動癥

自 2012 年第一臺 Oculus 原型機(jī)問世以來,針對現(xiàn)代虛擬現(xiàn)實設(shè)備會導(dǎo)致暈動癥的討論從未停止。業(yè)內(nèi)的結(jié)論是必須盡量減少這種癥狀,即使以犧牲一些游戲元素為代價。

根據(jù)我們在 EV 領(lǐng)域的經(jīng)驗,這件事并非易如反掌。似乎只要暈動癥源于游戲體驗的本質(zhì)而非技術(shù)缺陷,人們便可接受。

除了 EV 以外,Setapp 還發(fā)布了另一款 Gear VR 設(shè)備應(yīng)用 - Neverout 解密游戲。從游戲名稱可以看出,玩家不會接觸誘發(fā)惡心癥狀的元素,但是某些玩家依然報告感覺不佳,即使他們僅完成一些相對輕度的移動。

另一方面,《逃逸速度》得到的大量評論均可總結(jié)為“天哪,我吐了一地!真是太帥氣了!”

有了 EV 之后,人們認(rèn)為其體驗肯定不會很舒服,因為在現(xiàn)實中同樣不舒服。但是請記住,我們集成了可以立即停止游戲中最難受體驗的功能(即噴氣背囊導(dǎo)致旋轉(zhuǎn)過強),用戶便可自行控制。

技巧
后處理盒子

對于 4.10 版本,Gear VR 不支持手機(jī) HDR。這意味著許多處理特效無法實現(xiàn),即發(fā)生所謂的屏幕褪色。

相對于其它特效,我們需要將該特效從入場序列中消除。我們使用了一種簡單的方法:

我們固定了一個靜態(tài)網(wǎng)格(盒子),其法線在攝像點翻轉(zhuǎn)。它的材料很特殊,不發(fā)光并且未經(jīng)景深測試,因此我們確信它在繪制時位于其他所有幾何圖形之上:

在正常情況下,該物體不會出現(xiàn)在屏幕上。僅當(dāng)某個時間軸繪制其不透明度時才會顯示出來。

盒子不能太小,因為 HMD 的頭部模型可能導(dǎo)致每只眼睛的攝像機(jī)發(fā)生偏移,進(jìn)而穿過盒子。

但是,請注意,該方法重新繪制整個屏幕。由于 Galaxy S6 GPU 的像素填充率比較有限,如果此時屏幕上正好存在其他半透明元素,便可能導(dǎo)致幀數(shù)下降。

GEAR VR 設(shè)備頭部模型

“頭部模型”指的是從脖子到兩眼之間正中位置的偏移。游戲中使用的攝影機(jī)作用物就位于這一虛擬的“脖子”上。渲染使用的每只眼睛的實際位置是通過以下方式變換初始“脖子”位置進(jìn)行計算的:

  1. 增加頭部追蹤偏移(Gear VR 不適用)。
  2. 根據(jù)頭部追蹤的輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)動。
  3. 增加頭部模型偏移。
  4. 根據(jù)瞳距 (IPD) 分開雙眼。

對于 Gear VR,虛幻引擎 4 使用固定頭部模型和 IPD(請參見 GearVR.cpp 中的 FSettings 構(gòu)造器)。在 Rift 中,您可以在用戶偏好中查閱這些信息。

我們發(fā)現(xiàn) Gear VR 的默認(rèn)值對于我們的設(shè)定值而言過大。在頭盔中旋轉(zhuǎn)宇航員的視角時,一只眼睛能夠穿過它。此外,如果需要模擬一個非常小的人物,僅按比例將其縮小遠(yuǎn)遠(yuǎn)不夠,因為頭部模型和 IPD 并未做出相應(yīng)改變。僅會產(chǎn)生人體臥于地面的感覺。

要解決這個問題,必須將整個頭部模型按比例縮小。為了按比例調(diào)整頭部模型,以下是將 IPD 和頭部追蹤偏移縮小 10 倍的控制臺命令:

  • STEREO CS=0.1
  • STEREO PS=0.1

這些命令會將攝影機(jī)和位置追蹤偏移同時縮小 10 倍,這樣使用者會真正感覺自己變小了。

如需了解更多可控制的 HMD 運行時間參數(shù),你可以查看該項功能 -
Engine/Source/ThirdParty/Oculus/Common/HeadMountedDisplayCommon.cpp function FHeadMountedDisplay::Exec()。

為了實現(xiàn)更為優(yōu)質(zhì)的 VR 體驗,虛幻引擎 4 所作出的調(diào)整

由于某些特定功能的狀態(tài)問題,我們在開發(fā)過程中遇到了一些障礙,但是我們找到了一些行之有效的解決方法。以下是我們遇到的問題:

通用 UMG 與 UI

在 VR 中使用 UI 元素極具挑戰(zhàn)性。這些特定項目對我們而言非常麻煩:

景深測試與渲染到紋理

我們想讓某些 UI 元素呈現(xiàn)出顯示在頭盔玻璃的狀態(tài)。但是,將這個 UMG 3D 插件置于玻璃附近時,它卻與鏡頭間距過近。在 VR 設(shè)備上,用戶只有擠成斗雞眼才能將視角聚焦到 UI 上。

此后,我們嘗試將 UI 元素拉遠(yuǎn)并做的更大。但是,這導(dǎo)致 UI 和空間站的圖形發(fā)生干擾。

但是無論如何,我們必須繪制這些元素。借助標(biāo)準(zhǔn)物體,我們便可在材料設(shè)置中直接取消景深測試。但是對于 UMG 3D 插件而言,可用材料列表是固定的。最終,我們通過使用取消景深測試的選項擴(kuò)展了 3D 插件。

我們真心希望能夠?qū)?UMG 插件渲染到紋理上。相對于 3D 插件,這將給予我們更高自由度,尤其是在 VR 設(shè)置中,其中的 UI 元素應(yīng)當(dāng)自然融入到背景中。我們已向 Epic 提交了該請求。

焦點輸入

目前沒有什么特別理想的方法能夠?qū)⒆⒁暯裹c的信息傳輸?shù)?UMG 3D 上。只能選擇拓展 3D 插件并結(jié)合鼠標(biāo)輸入,或在畫面中使用一套獨立物體,通過人為方式構(gòu)建一些視角追蹤設(shè)置。

對虛擬現(xiàn)實而言,通過一些軌跡線將 UV 空間和鼠標(biāo)事件相關(guān)聯(lián),從而將 UMG 到紋理與焦點輸入支持相結(jié)合是一種理想解決方案。我們已向 Epic 提交了該特征的請求。

由 MATINEE 驅(qū)動的玩家動畫

Matinee 中骨骼網(wǎng)格的動畫僅可在 ASkeletalMeshActor 或是衍生分類中完成。出于工具靈活性的考慮,我們曾經(jīng)希望通過 Matinee 在游戲的第一和最后一個序列中制作宇航員的動畫。但是在 Matinee 中,來自 ACharacter 的作用物無法直接控制其骨骼網(wǎng)格的動畫繪制。

正常 FPS 游戲的影像制作只需淡出到特制場景中。玩家的角色在其中隱藏,然后只需創(chuàng)造出一些特制的骨骼網(wǎng)格作用物。但是在 VR 中,我們并不想要這種融入破碎的淡出效果。我們曾經(jīng)希望在 Matinee 序列中再次使用同一角色物體并讓玩家進(jìn)行控制。在序列結(jié)尾處,我們希望該角色無縫轉(zhuǎn)換為玩家控制模式。

在 EV 中,我們必須使用通過 Matinee 繪制的虛擬骨骼網(wǎng)格并將我們真正的角色(雖然處于隱藏狀態(tài))附著在這個骨骼網(wǎng)格中。在序列結(jié)尾處,我們隱藏虛擬網(wǎng)格并顯示真實的角色。由于兩個骨骼網(wǎng)格的位置無法嚴(yán)格匹配,因此您在轉(zhuǎn)換時可能覺察到些許斷續(xù)效果。

結(jié)語

針對 VR 設(shè)備開發(fā)軟件為設(shè)計者和開發(fā)者帶來了一系列全新挑戰(zhàn),在移動設(shè)備中尤為如此。當(dāng)之前使用的各種套路和解決方案不再奏效,您只能另辟蹊徑。到目前為止,還有很多問題尚待解決,特別是用戶交互方面。

移動端的 VR 更加困難,因為設(shè)備本身存在諸多局限性。您必須以創(chuàng)新視角看待性能調(diào)試問題,在實現(xiàn)最佳畫質(zhì)的同時保證流暢的幀數(shù)。

在虛幻引擎的幫助下,我們會將設(shè)想轉(zhuǎn)變?yōu)樽罱K產(chǎn)品。雖然實現(xiàn)某些效果的挑戰(zhàn)性依然很大,但是考慮到 VR(特別是移動端)設(shè)備尚未成熟,這也是可以理解的。得益于 VR 設(shè)備的近期發(fā)展以及虛幻引擎 4 對移動端的支持,我們可以繼續(xù)展望新項目。


朱峰社區(qū)三維動畫出爐 朱峰社區(qū)三維動畫出爐

朱峰社區(qū)網(wǎng)頁版
朱峰社區(qū)網(wǎng)頁版(手機(jī)掃描-分享-添加到屏幕)


朱峰社區(qū)公眾號
朱峰社區(qū)微信公眾號(微信掃一掃-關(guān)注)

資源說明圖文教程無法下載,只能觀看圖片和文字。
版權(quán)規(guī)則本站圖文皆來自互聯(lián)網(wǎng)共享資源,如涉及到版權(quán)請查看版權(quán)規(guī)則。本平臺提供圖文僅可用于個人學(xué)習(xí),如用于商業(yè)請購買正版。您必須遵守的版權(quán)規(guī)則

未知用戶

未知用戶

2181496126@qq.com

2181496126@qq.com

普通會員

謝謝樓主!
愿朱峰社區(qū)教程越來越多。 -2181496126@qq.com

贊0

踩0

17年5月3日

zakia

zakia

普通會員

很不錯
come on! -zakia

贊0

踩0

17年5月2日

gon

gon

普通會員

好東西

贊0

踩0

17年5月2日

2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號-1
2005-2025 ZhuFeng Community All Rights Reserved

VIP

朱峰社區(qū)微信公眾號

回頂部

1.復(fù)制文本發(fā)給您的QQ好友或群、微信等;好友點擊鏈接以后,轉(zhuǎn)發(fā)就成功了。 2.如朋友點擊您的鏈接,您需要需刷新一下才行;同一個好友僅能點擊一次。
購買VIP,觀看所有收費教程!!