美文网首页VRUE4(虚幻引擎)VR开发
【虚幻引擎】UE4 - VR入门经验

【虚幻引擎】UE4 - VR入门经验

作者: peony007 | 来源:发表于2017-03-23 17:50 被阅读586次

    之前看了一个月左右的资料,包括官方文档及简单的C++教程,辅助做一些Demo练习,感觉再这么看下去也效果不佳,索性按着以前工作时的思路,先想好要做什么,再一一去想法实现。


    要做什么

    首先要有一个主场景,作为其他关卡的总入口。
    构建这一场景时,能够想到的需要实现的基本操作如下:



    虽然这些操作官方示例里都有实现,但是要想看懂并且变成自己的还是需要亲身实践、加深理解。

    参考资料

    这方面资料并不多但基本够用,总的来说还是英文的靠谱些(我英文不好哇),没入门时会觉得有点摸不着头脑,再回过头来看时思路会清晰不少。

    文档

    视频

    Unreal Engine的官方视频,在 YouTube 上的比较全一些,优酷上也有一些。
    与VR相关的可参见这两个系列:

    还可以参考下YouTube上的这两块资源:

    示例

    在引擎中新建一个“Virtual Reality”项目,即可看到示例。
    我需要的功能可以说示例里都已实现,本来看示例对于基础好的人来说是最方便的了,但是对于像我这种刚入门的来说,蓝图多了看起来着实让人头疼,我目前阶段策略就是万不得已才去研究示例、找解决方法。


    实践经验

    创建场景

    第一步就掉坑里了且好久才爬上来,只因为起步的Setting up UE4 to work with SteamVR中英文档有差异,纠结了小半天,压根没想着文档本身就有问题。
    纠结的重点是中文版文末特意强调:


    可是设为(0,0,0)就是Bad Size,运行时玩家压根不在指定点生成(自动跑到世界原点生成了),而且从HMD看到的相对高度也不对,它为啥还特意这么写呢!?
    按英文文档的思路来就对了,而且逻辑也清晰了很多,主要是从第9步开始的相关设置。

    虽然很多时候,中文文档的顶部都会有说明,但大多时候都被忽略,潜意识里总觉得不会差太多,就算少东西但总不至于错,这次算是领教了。


    接入手柄

    Motion Controller Component Setup基本都讲到了,总的来说就是通过MotionControllerComponent、StaticMeshComponent来实现接入,再扩展讲一下使用现成的手柄素材。

    文中是使用了一个椎体来表现手柄,其实在Engine Content有现成的手柄素材。
    要想看到并使用Engine Content资源,需要勾选 **Content Browser -> View Options -> Show Engine Content **选项。


    然后在选择Static Mesh时搜索“vive”就能找到对应的素材了。


    当然还有其他设备资源可供选择:


    位置瞬移

    Teleport in Unreal Engine - HTC VIVE ,能找到的讲解教程基本都是这个思路,但我还是遇到了问题。

    按教程,看上去能够实现瞬移了就以为大功告成了,但是在做下一步时,才发现移动的位置并不准确,才又反过头来研究。
    经过观察发现,SetActorLocation方法(包括Teleport方法)实际改变的是HMD中心点的世界坐标。



    直接用LineTraceByChannel的目标点去设置的话只是将中心点移动到指定位置(即能看到代表中心点的蓝圈到了那个位置),但是没有考虑到人与中心点的偏移,人如果不在中心点的话,始终是到不了指定点的。
    至少我没有找到任何资料提到类似的问题,也不确定这个问题是普遍存在的呢还是我个人的问题,所以只好静下心来看示例咯,毕竟人家是实现了准确无误的嘛。
    有了目标看起蓝图来也轻松一些,还真让我发现示例里是有一步转换再设置的,只不过它还考虑了移动角度。


    我们只需要关注Location那条转换,同理迁移到自己的设置里,这下瞬移位置才算是准确了。


    区域控制

    UE4 - Simple Teleportation Mechanic 视频的前半部分也是在讲Teleport,后边一部分讲到了通过使用NavMeshBoundsVolume来实现区域控制,设置好体积区域后主要是通过ProjectPointtoNavigation方法来判断然后再进行处理的。


    如果对NavMesh等概念和使用不太清楚的,可以参见这两个视频:
    WTF Is? Volume - Nav Mesh Bounds in Unreal Engine 4
    WTF Is? Volume - Nav Modifier in Unreal Engine 4

    拾取物体

    UE4下实现Vive手柄拾取物品
    UE4 将actor acttach to 另一个actor需要注意的
    结合这两篇文章和理解,实现拾取应该就不难了。

    阶段总结

    基本功能倒是都实现了,但是感觉要想再做更复杂的功能还是有不少困难。
    所以结合这两周的实践经验,下阶段应该:

    • 强化英语
    • 补习数学
    • 多实践、勤总结

    欢迎一起学习交流!

    相关文章

      网友评论

      • cdf02aaf6ae2:写的很仔细,更有不少资料链接,谢谢分享!
        peony007: @大虾龙行天 现阶段也只能这么一点点摸索,谢鼓励!

      本文标题:【虚幻引擎】UE4 - VR入门经验

      本文链接:https://www.haomeiwen.com/subject/oxbznttx.html