欢迎光临散文网 会员登陆 & 注册

最近使用UE4官方VR模板开发中的一些总结

2022-01-07 17:53 作者:白发先生  | 我要投稿

(up主本文章内的所有开发,都是基于ue4提供的VR模板衍生开发的,使用4.26版本引擎)

一. 关于导航网格体:

       1.将“导航网格体边界体积”拖入关卡内,会自动生成一个“RecastNavMesh”的东西,这个东西可以控制导航的一系列相关参数,且只存在于主关卡内无法移动到子关卡;

       2.如果导航放在子关卡内,固定关卡内没有导航,会由于固定关卡启动时未检测到导航而自动销毁“RecastNavMesh”(此处有个bug,RecastNavMesh内有个“无导航时自动销毁”的选项,但勾掉也没用),从而导致子关卡内导航不能使用;(我的解决方法是在主关卡内空白的地方(如空中)放置一个“导航网格体边界体积”,这样再运行子关卡就能使用导航了

图1 RecastNavMesh很重要

       3.导航放置在高处设置移动区域时(如高塔上),地面是没有导航的,按P键也没有显示下方没有绿色区域,但当使用VR模板的移动时,偶尔会出现跑到了下方地面的奇怪问题,后来得知是玩家移动到了“世界坐标原点”,好像是此模板会存在的Bug;(我的解决方法是,在原点设置了一个碰撞体积,只要检测到玩家回到了原点,就把他再转移回塔上

       4.在高空中设置移动区域,使用碰撞去和导航体积交互产生移动区域,关于碰撞的类型测试了一下,主要是“碰撞预设”—“物体响应”内—选择阻挡“Pawn或Vehicle”即可,碰撞区域下方“下三角”点开,还需要确认“是否能影响导航”为勾选;

图2 要产生移动区域,需要设置actor的碰撞类型

二. 关于和UI交互

       1.零碎东西:VR的UI如果图片是透明的,需要在UI的Actor上“控件组件”—“渲染”—“混合模式”—选择“透明”、UI内也可以加入点击时的音效、关于UI所使用的贴图,压缩需要考虑;

       2.在默认手上添加“控件交互组件”后,默认是只有右边的手能够去和UI上的按钮交互,完成触发,左边的手指向到UI的按钮上不会显示“悬停效果”,左手按下扳机键会有按钮按下的“颜色变化和提示音”,但不会完成触发;(研究了一下,发现是“交互控件”内的“指针索引”默认都是“0”,才导致左手不能交互,分别将左手和右手设置为不同的指针索引后,就都能和UI交互了)

图3 在模板手BP_MotionController上加入控件交互组件
图4 在MotionControllerPawn内加入扳机键触发UI模拟点击的交互
图5 在一开始为左右手的“控件交互组件”设置不同的“指针索引”

       3.如果一个关卡内会使用到多个Pawn的切换,切换后需要和UI进行交互,也是上面的方法,需要对不同的Pawn设置不同的手部“控件交互组件”的指针索引,并确保互相不重复,以保证多个Pawn在切换后都能与UI交互;(使用流送关卡,可以确保下个场景内的Pawn能够和UI交互,但如果切换回之前关卡内的相同Pawn,就不能再交互了,不如分别为Pawn设置不同指针索引彻底)

       4.手上交互组件的射线会被碰撞体阻挡,有时候有些不可视的东西,但他的碰撞还是会存在于场景内,阻挡住了手和UI的交互,需要注意甄别;

三. 一些奇奇怪怪的总结

       1.如果场景内是动态光照,光源内有个设置“阴影量”注意不要去动它,一旦设置不等于1了,就会出现头盔内“一只眼有阴影,一只眼没有阴影的问题”,感觉画面脏脏的感觉,解决方法就是恢复默认阴影量等于1就好了;

       2.子关卡内单独设置的“游戏模式”貌似并不会在它启用时生效,使用了关卡流送好像就只适用于一个主的“游戏模式”,另外子关卡如果还套了子关卡,这个“孙子”关卡不会加载;

       3.有一个奇怪的现象是,双手拿着一个伸缩的棒子,但会在特定的角度棒子消失了,头扭动一下就又能看到,后来测试发觉似乎是棒子物理碰撞位置的问题,导致棒子被判定为离开了视野剔除渲染;(解决方法,在棒子的头和尾都加了个物理碰撞,防止它在玩家视野的中心点消失不渲染了);

       4.关于包体打包出来的大小,按照官方压缩包体方法设置了一下,似乎只在第一次设置的时候起了作用,之后并没有依照预期的结果走向,而是随着关卡越做越大,包体也越来越大,似乎并不能只选取几个关卡打包出来,而是整体都会烘焙,包体稳定在一个固定值;(难道只能把所需要的关卡单单迁移出来再打包,才能缩小打包?不清楚是不是关卡相互有未知关联所导致的)

       5.反向优化,开始的项目没有依照官方推荐的VR设置,后来单独测试加入“前向渲染、目标硬件降低、修改渲染设置”,好像都没有在项目上得到正反馈,甚至运行时头盔的毫秒上升了;(所以优化这块,不清楚是我场景有问题导致的,还是什么设置或硬件设备有问题导致的,按照推荐并没有得到预期效果,还不如就按他自己的效果全开、桌面+最高质量、动态光、后期处理,效果好帧率也高,开了“前向渲染”反而会导致一些原本场景出问题,主要是光照那块,还是吃了不懂没文化的亏)

      6.最后就是在迁移项目测试的时候,特地选用了创建空白的项目,由于是VR项目,空白项目没有手柄的输入,但是复制完对应“输入”后,手柄依然不能启用按键,一通胡乱操作,发现把项目设置SteamVR内的3个输入都重新点击一遍就好了,也是没其中明白原理;

图6 项目设置—SteamVR—把这3个输入点击一遍手柄就好了

       最最后,就是迁移项目后,主要是测试优化问题,那些VR优化选项需要考虑清楚,最好一次性都设置完再重启项目,不让每次开启或关闭一个设置,重启编辑器后起步6000+的材质编译,实在是太酸爽了(如此测试十分缓慢和搞心态,最重要的是还负优化了,泪目:)

       (UP主学艺不精,关于本次的VR项目做了一个小总结,可能只是适用于自己的项目,或者有不少错误,但万一能帮助阅读的你解决到类似问题,不甚荣幸)

最近使用UE4官方VR模板开发中的一些总结的评论 (共 条)

分享到微博请遵守国家法律