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

搜索資源 注冊(cè)|登陸

等待

返回 展開(kāi)菜單

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

Maya建;A(chǔ)教程 觀看預(yù)覽

Maya建模基礎(chǔ)教程

包含27節(jié)視頻教程
關(guān)注62.6萬(wàn)

從零基礎(chǔ)講解MAYA建模的基礎(chǔ),包括各種工具和小實(shí)例。讓你簡(jiǎn)單的學(xué)會(huì)MAYA建模!并且喜歡上MAYA建模!

關(guān)閉

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

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

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

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

了解這些數(shù)據(jù)后,便可知對(duì)于性能的追求僅有一種合理的方式:做好前期開(kāi)發(fā)。如果您認(rèn)為僅靠“優(yōu)化次數(shù)”即可提升性能,那就大錯(cuò)特錯(cuò)了。因?yàn)槟坏貌蝗掏磩h減許多資源和特性。

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

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

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

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

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

光遮蔽的作用也不大,因?yàn)橥婕以?EV 中的自由度很大,整個(gè)空間站都可以在屏幕中顯示。

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

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

觀看者會(huì)產(chǎn)生暈動(dòng)癥

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

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

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

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

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

技巧
后處理盒子

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

相對(duì)于其它特效,我們需要將該特效從入場(chǎng)序列中消除。我們使用了一種簡(jiǎn)單的方法:

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

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

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

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

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

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

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

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

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

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

  • STEREO CS=0.1
  • STEREO PS=0.1

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

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

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

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

通用 UMG 與 UI

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

景深測(cè)試與渲染到紋理

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

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

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

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

焦點(diǎn)輸入

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

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

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

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

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

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

結(jié)語(yǔ)

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

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

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


極限精度挑戰(zhàn)-仿真趙麗穎建模教程 極限精度挑戰(zhàn)-仿真趙麗穎建模教程

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


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

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

未知用戶

未知用戶

2181496126@qq.com

2181496126@qq.com

普通會(huì)員

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

贊0

踩0

17年5月3日

zakia

zakia

普通會(huì)員

很不錯(cuò)
come on! -zakia

贊0

踩0

17年5月2日

gon

gon

普通會(huì)員

好東西

贊0

踩0

17年5月2日

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

VIP

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

回頂部

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