【虛幻引擎】UE4 - VR入門經(jīng)驗(yàn)

之前看了一個(gè)月左右的資料,包括官方文檔及簡單的C++教程,輔助做一些Demo練習(xí),感覺再這么看下去也效果不佳,索性按著以前工作時(shí)的思路,先想好要做什么,再一一去想法實(shí)現(xiàn)。


要做什么

首先要有一個(gè)主場景,作為其他關(guān)卡的總?cè)肟凇?br> 構(gòu)建這一場景時(shí),能夠想到的需要實(shí)現(xiàn)的基本操作如下:



雖然這些操作官方示例里都有實(shí)現(xiàn),但是要想看懂并且變成自己的還是需要親身實(shí)踐、加深理解。

參考資料

這方面資料并不多但基本夠用,總的來說還是英文的靠譜些(我英文不好哇),沒入門時(shí)會(huì)覺得有點(diǎn)摸不著頭腦,再回過頭來看時(shí)思路會(huì)清晰不少。

文檔

視頻

Unreal Engine的官方視頻,在 YouTube 上的比較全一些,優(yōu)酷上也有一些。
與VR相關(guān)的可參見這兩個(gè)系列:

還可以參考下YouTube上的這兩塊資源:

示例

在引擎中新建一個(gè)“Virtual Reality”項(xiàng)目,即可看到示例。
我需要的功能可以說示例里都已實(shí)現(xiàn),本來看示例對(duì)于基礎(chǔ)好的人來說是最方便的了,但是對(duì)于像我這種剛?cè)腴T的來說,藍(lán)圖多了看起來著實(shí)讓人頭疼,我目前階段策略就是萬不得已才去研究示例、找解決方法。


實(shí)踐經(jīng)驗(yàn)

創(chuàng)建場景

第一步就掉坑里了且好久才爬上來,只因?yàn)槠鸩降?a target="_blank" rel="nofollow">Setting up UE4 to work with SteamVR中英文檔有差異,糾結(jié)了小半天,壓根沒想著文檔本身就有問題。
糾結(jié)的重點(diǎn)是中文版文末特意強(qiáng)調(diào):


可是設(shè)為(0,0,0)就是Bad Size,運(yùn)行時(shí)玩家壓根不在指定點(diǎn)生成(自動(dòng)跑到世界原點(diǎn)生成了),而且從HMD看到的相對(duì)高度也不對(duì),它為啥還特意這么寫呢???
按英文文檔的思路來就對(duì)了,而且邏輯也清晰了很多,主要是從第9步開始的相關(guān)設(shè)置。

雖然很多時(shí)候,中文文檔的頂部都會(huì)有說明,但大多時(shí)候都被忽略,潛意識(shí)里總覺得不會(huì)差太多,就算少東西但總不至于錯(cuò),這次算是領(lǐng)教了。


接入手柄

Motion Controller Component Setup基本都講到了,總的來說就是通過MotionControllerComponent、StaticMeshComponent來實(shí)現(xiàn)接入,再擴(kuò)展講一下使用現(xiàn)成的手柄素材。

文中是使用了一個(gè)椎體來表現(xiàn)手柄,其實(shí)在Engine Content有現(xiàn)成的手柄素材。
要想看到并使用Engine Content資源,需要勾選 **Content Browser -> View Options -> Show Engine Content **選項(xiàng)。


然后在選擇Static Mesh時(shí)搜索“vive”就能找到對(duì)應(yīng)的素材了。


當(dāng)然還有其他設(shè)備資源可供選擇:


位置瞬移

Teleport in Unreal Engine - HTC VIVE ,能找到的講解教程基本都是這個(gè)思路,但我還是遇到了問題。

按教程,看上去能夠?qū)崿F(xiàn)瞬移了就以為大功告成了,但是在做下一步時(shí),才發(fā)現(xiàn)移動(dòng)的位置并不準(zhǔn)確,才又反過頭來研究。
經(jīng)過觀察發(fā)現(xiàn),SetActorLocation方法(包括Teleport方法)實(shí)際改變的是HMD中心點(diǎn)的世界坐標(biāo)。



直接用LineTraceByChannel的目標(biāo)點(diǎn)去設(shè)置的話只是將中心點(diǎn)移動(dòng)到指定位置(即能看到代表中心點(diǎn)的藍(lán)圈到了那個(gè)位置),但是沒有考慮到人與中心點(diǎn)的偏移,人如果不在中心點(diǎn)的話,始終是到不了指定點(diǎn)的。
至少我沒有找到任何資料提到類似的問題,也不確定這個(gè)問題是普遍存在的呢還是我個(gè)人的問題,所以只好靜下心來看示例咯,畢竟人家是實(shí)現(xiàn)了準(zhǔn)確無誤的嘛。
有了目標(biāo)看起藍(lán)圖來也輕松一些,還真讓我發(fā)現(xiàn)示例里是有一步轉(zhuǎn)換再設(shè)置的,只不過它還考慮了移動(dòng)角度。


我們只需要關(guān)注Location那條轉(zhuǎn)換,同理遷移到自己的設(shè)置里,這下瞬移位置才算是準(zhǔn)確了。


區(qū)域控制

UE4 - Simple Teleportation Mechanic 視頻的前半部分也是在講Teleport,后邊一部分講到了通過使用NavMeshBoundsVolume來實(shí)現(xiàn)區(qū)域控制,設(shè)置好體積區(qū)域后主要是通過ProjectPointtoNavigation方法來判斷然后再進(jìn)行處理的。


如果對(duì)NavMesh等概念和使用不太清楚的,可以參見這兩個(gè)視頻:
WTF Is? Volume - Nav Mesh Bounds in Unreal Engine 4
WTF Is? Volume - Nav Modifier in Unreal Engine 4

拾取物體

UE4下實(shí)現(xiàn)Vive手柄拾取物品
UE4 將actor acttach to 另一個(gè)actor需要注意的
結(jié)合這兩篇文章和理解,實(shí)現(xiàn)拾取應(yīng)該就不難了。

階段總結(jié)

基本功能倒是都實(shí)現(xiàn)了,但是感覺要想再做更復(fù)雜的功能還是有不少困難。
所以結(jié)合這兩周的實(shí)踐經(jīng)驗(yàn),下階段應(yīng)該:

  • 強(qiáng)化英語
  • 補(bǔ)習(xí)數(shù)學(xué)
  • 多實(shí)踐、勤總結(jié)

歡迎一起學(xué)習(xí)交流!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 如果說2014年Facebook以20億美元收購Oculus,讓外界首次聚焦VR/AR行業(yè)的話,那么2016年則必...
    阿菇在搬磚閱讀 1,428評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評(píng)論 19 139
  • 生命是一場修行,緣來是一次渡劫。 小和尚已經(jīng)十七歲了,師父說過了年,就可以下山歷練了。小和尚原本是寺院旁邊普通人家...
    朱小貓閱讀 893評(píng)論 0 1
  • 首先,做個(gè)自我介紹。 姓名:普通; 性別:女; 愛好:男; 屬相:牛; 星座:金牛座。 二十歲,人生最美好的十年的...
    我是青少年呀閱讀 275評(píng)論 0 0

友情鏈接更多精彩內(nèi)容