您的位置:首页 > 移动开发 > Unity3D

自制OculusVR控制(一)——利用Unity的自带方法实现VR的控制输入

2017-11-26 15:24 716 查看

写在前面

目前进行OculusVR的开发一般有两种选择,使用SteamVR插件或者使用Oculus官方的SDK,但是今天,要给大家分享的并不是使用这两种插件的经验,而是要给大家分享第三种方法,不使用其他需要导入的插件,仅使用Unity主体功能,自己配置打造Oculus的输入控制,下面就让我们开始动手做一个我们自己的VR控制插件吧。

实现流程

使用的Unity版本为2017.1.0f3

1 创建一个新工程

按下图创建一个VRPlayer并重命名,其中HMD是Main Camera,其余皆是空物体,坐标均在世界坐标系原点



2 开启Unity内置对Oculus的支持

点击Edit->Project Settings->Player打开PlayerSettings窗口,找到Other Settings一栏中的Virtual Reality Supported,勾选并添加Oculus一项,如下图所示。



开启了这一项后,我们观察HMD会发现摄像机中多了一项Target Eye,这就是代表摄像机看到的画面将会作为头显中显示画面,但要注意如果场景中有多个摄像机的话,一般头显里看到的是层级中的第一个摄像机,但是Transform依然会被控制,所以如果需要多个摄像机的话,需要将其余的摄像机的该项设置为None。



3 为手柄添加追踪标识

新建脚本VRObjectTracking.cs,这里会用到UnityEngine.VR命名空间,这里面包含了VR的相关设置与使用的类,我们需要声明一个VRNode,这是一个枚举,主要枚举了设备输入的节点类型,包括左眼,右眼,头,左手,右手等。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VR;

public class VRObjectTracking : MonoBehaviour {

public VRNode node;

void Update () {
//每一帧更新该节点的位置和旋转
transform.localPosition = InputTracking.GetLocalPosition(node);
transform.localRotation = InputTracking.GetLocalRotation(node);
}
}


接下来为LeftHand与RightHand添加这个脚本,并将Node的值分别改为LeftHand与RightHand,然后在这两个物体下新建两个Capsule胶囊体,示意为手柄,运行即可看到目前即已完成了VR的头显显示与手柄的追踪功能,是不是很简单,并没有想象中的复杂。



4 实现手柄按键输入控制

在上一步我们已经实现了手柄的移动功能,接下来就是实现手柄按键的输入功能了。在此之前我们需要做一点准备工作,配置InputManager,从Edit->Project Settings->Input点击,打开InputManager配置界面,通过配置InputManager我们可以将手柄的按键映射到我们指定名称的输入轴。这里我们先配置两个按键,左手的IndexTrigger键(扳机键)与HandTrigger键(抓取键)。按下图进行配置。



配置完成后新建VRInput.cs脚本,编写脚本如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class VRInput : MonoBehaviour {

private void Update()
{
if (Input.GetAxisRaw("PrimaryIndexTrigger") > 0f)
{
Debug.Log("按下左手IndexTrigger键");
}

if (Input.GetAxisRaw("PrimaryHandTrigger") > 0f)
{
Debug.Log("按下左手HandTrigger键");
}
}
}


将该脚本添加至VRPlayer对象上,运行程序,分别按下左手手柄的这两个键,即可看到按键已成功触发日志输出



至此,就已经实现VR控制的基本输入啦,当然除了Oculus的手柄的按键非常多,除了普通手柄有的菜单、摇杆、扳机、抓取键之外,Oculus还有A、B、X、Y以及触摸输入、靠近输入等。所有按键的配置如下图所示。当然如果大家嫌配置麻烦,Ray这里已经准备好了配置好的文件,下载后替换工程目录下的ProjectSettings文件夹下的同名文件即可。

链接:http://pan.baidu.com/s/1nv5jpqD 密码:6n3s





写在最后

这里是使用Oculus来测试的,但是这个方法同样适用于HTC Vive,通过InputManager配置指定输入轴的方法可以适用于许多有控制器输入的设备,大家可以一起多做尝试。通过这种方法可以自己定制自己的VR输入控制,不过相比于完善的插件而言可能在一开始需要花许多时间去构建。希望能给大家带来一些帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Oculus VR 控制
相关文章推荐