【UE4】室内VR交互基本功能

1 篇文章 0 订阅
1 篇文章 0 订阅

在这里插入图片描述

摘要

VR全名虚拟现实技术,其基本原理,是将渲染的三维场景投放在VR眼镜的左右显示屏中,调节焦距,结合声音、手柄交互,实现视觉、听觉、交互体验上身临其境的感觉。VR设备是有两个显示屏,再加上主机的一台显示屏,同时为了保证满足人眼对场景有真实感受,FPS(帧数)的要求最好是90以上,所以VR对显卡是有很高的要求的。ue4对于VR的开发是非常友好的,有很多相关VR设备的插件,便于开发,如HTCvive、Oculus、GoogleVR;虚幻也有专门的VR模板,能快捷的实现一些简单的交互功能。本文也是基于VR模板进行功能的开发,实现VR移动;拾取物品、拖拽物品;3D测量两点距离、高、水平距;更换物品材质;3D绘画功能;

一、VR交互初步了解

1.VR设备

VR不单是视觉上的体验,同时是需要身体上真实的交互反馈,交互可以通过VR设备的手柄、直接通过头盔进行交互或者其他的外部设备,交互方法有各式各样;市面上常见的交互方式有,手柄操作(包括枪这类设备)、头盔操作、眼球追踪、手套触觉、光学追踪、语音识别等等方式;
最基本的方式就是手柄操作,HTCvive的手柄是最常见运用最多的VR手柄,除去Menu按钮,有7个按钮和1个触摸按钮;在ue4中有相对应的按键事件,如下图;

在这里插入图片描述

2.VR项目设置

使用ue4进行开发,首先需要打开SteamVR插件还有相对应设备的VR插件,在Plugins里面找到VR相关,勾选重启,同时需要做一些项目设置配置;(刚接触VR,可以直接使用VR模板,配置和插件都是自动设置好)
在这里插入图片描述

如果是项目移植VR功能,可以将VR模板里的Config文件和原项目文件进行对比,修改成VR所适合的配置项;
在这里插入图片描述

3.下载SteamVR

steamVR可在官网下载,下载后,需要进行VR设备的初始化

在这里插入图片描述
在这里插入图片描述

房间规模需要头盔定位地面高度,用手柄进行绘制区域,
仅站立只需要进行头盔的地面高度初始化;
扩展:Steam设置里面还包括很多其他设置,在设置项和开发者项里,可以设置显示清晰度,以及打开前置摄像头,看到真实场景和虚拟场景的全息结合效果,还有红外定位器的一些设置;

二、VR交互基本功能

1.VR移动操作

VR交互最基本需要移动和拾取,在模板里有一套交互方式,是抛物线传送移动功能;因为戴上VR设备后,人的操作基本上是在一定范围内的,如果采用按键直接移动,视觉的移动和肢体不同步,会产生明显的眩晕,所以VR的移动更多使用传送的方式;市面上有很多VR游戏还有摆动手柄移动、跑步机真实移动、或者飞行游戏的自动移动,靠摆动身体来控制前进方向等等;
具体的实现方法,模板里看MotionControllerPawn、BP_MotionController类,不做具体的介绍了;

2.VR拾取拖拽操作

拾取和拖拽其实逻辑很像,主要是通过在三维场景中手模型HandMesh上添加的球型的触发器,识别场景中的可拾取和拖拽类(可以做一个场景中可交互的主类BP_SceneMainActor,然后添加一个枚举变量,进行分类),运用接口进行调用;
pick主要是在可拾取物品类里添加节点AttachToComponent,同时需要取消物品重力,其中Location,Rotation,ScaleRule需要根据实际情况选择;
在这里插入图片描述
Drop释放需要使用节点DetachFromActor,和恢复重力
在这里插入图片描述

同理,拖拽物一般Z轴不能移动,或者只能进行旋转操作(如开关门),逻辑类似,获取到手的LocationX,Y,或者进行角度计算,注意:开门的效果,我们很难完美模拟,因为虚拟场景不能和真实场景一样,手只能被动的根据门的轴,进行移动;

3.VR测量功能

最后实现的效果是:通过手柄发射的射线按下扳机,记录第一个点位,换一个点位,再按下一次,场景中显示3D的两点距离、高、水平距离的线段及线段中间显示对应数据,右手面板上显示当前的这个点的数据信息;
如不清理,场景中三维显示点位距离效果一直保存,可通过右手按钮进行清理;
实现的方法是通过射线检测,然后用数组记录点位,清理后点位会进行清理,面板数据仍然保存上一个测量结果;
在这里插入图片描述
在这里插入图片描述
其中有射线生成贴花Decal的功能,需要注意贴花角度是射线方向的法线角度,需要对贴花材质进行设置,如下图;

在这里插入图片描述

4.VR更换材质功能

VR更换材质的功能也是通过射线的方式进行的,继承BP_SceneMainActor的场景物品,选取枚举为可更换材质物品BP_MaterialActor,左扳机键打开后,射线经过BP_MaterialActor,可以展开一个材质面板,显示可切换的材质效果,右扳机触碰过去按下,可切换材质。

5.3D绘画功能

主要通过拾取器,拾取ColorPicker面板颜色然后给画笔上色,可调整粗细,进行3D绘画;
进行绘画主要使用的函数递归控制绘画速度,可动态的改变DrawLine的颜色和粗细
在这里插入图片描述

DrawDebugLine节点是可以绘制3D的线条,但是可调性和效果不一定合适,也可用其他生成线条的方式进行制作。
注:其中拾取拾色器的颜色,是有一套很好的算法,蓝图如下;
具体实现逻辑解释,可参考
http://www.uejoy.com/?p=555/
在这里插入图片描述

 3D ColorPicker面板

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
其中PickerPoint为Hand下的一个SphereMesh,其使用了M_DynamicColor的材质,可以通过它获取当前手移动的位置,与生成ColorPicker面板原始位置,之间的位置差,计算出颜色HSV的(当前功能里没计算V);
然后将获取的颜色通过动态材质集的方式,反馈给材质球,实现通过移动,拾取3D场景中ColorPickeri面板上的颜色;

6.3D选择面板

将上述的功能的切换选择,通过一个3D的主面板进行切换,可以通过开始做的枚举及其他的限制条件进行切换;
也是通过SphereCollision(球型接收器)组件,进行识别的,选中的时候可以有部分动效,比如按钮高亮、主题名称变颜色,手柄有震动的效果等;
在这里插入图片描述

下图为让手柄震动的节点

在这里插入图片描述

三、结

VR的开发会发现很多新颖的东西,其实主要还是玩两个手柄和头盔的逻辑,头盔的移动也可以作为数据,进行开发,看过很多大牛,通过这三个点位计算来模拟出人物当前大致的动作,然后在三维场景中,用虚拟人物进行模拟动作,实现不需要全身传感器,就能做绝大部分的肢体动作,配合虚拟场景内的人物形象。
VR未来可期,今年Epic的堡垒之夜实现超1200万人同时在线在游戏内看演唱会,ue5的即将发布,都有为VR做助推,想想用VR近距离看周杰伦演唱会,炫酷的场景,配上震撼的虚拟现场Live,身临其境的感受。

  • 22
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值