• Unity SteamVR插件集成


    重要组件

    SteamVR_Camera

    VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面

    使用方法:

    l 在任一个摄像机上增加脚本

    l 点击Expand按钮

    image001image002

    完成以上操作后,原本的摄像机会变成如下结构

    image003

    l Origin:位置

    l Head:头部

    l Eye:眼睛

    l Ears:耳朵

    至此,游戏中Vive中可以看到游戏画面,360度旋转查看游戏世界,在游戏世界中移动等

    image007image006

    image005image004

    SteamVR_ControllerManager和SteamVR_TrackedObject

    控制器,主要用于设置和检测Vive控制器。

    Vive控制器由菜单键(ApplicationMenu),触摸板(Touchpad),系统键/电源键(System),扳机键(Trigger),侧柄键(Grip),组成

    image008

    1 Menu button(菜单键)

    2 Trackpad(触摸板)

    3 System button(系统键/电源键)

    4 Status light

    5 Micro-USB port

    6 Tracking sensor

    7 Trigger(扳机键)

    8 Grip button(侧柄键)

    使用方法

    在Origin物体上添加2个子物体代表Vive的2个手柄,增加SteamVR_TrackedObject,Index设置为None

    在Origin物体上添加SteamVR_ControllerManager,设置左右手柄

    至此就完成了手柄的集成。

    image010image011image009

    获取手柄状态

    通过代码

    var device = SteamVR_Controller.Input(uint);

    device.GetTouchDown(SteamVR_Controller.ButtonMask)

    就可以获取到某个按键的状态

    或者使用

    var system = OpenVR.System;

    system.GetControllerState(uint, ref VRControllerState_t))

    获取当前所有的按键状态

    手柄震动

    public void TriggerHapticPulse(ushort durationMicroSec = 500, EVRButtonId buttonId = EVRButtonId.k_EButton_SteamVR_Touchpad)

    {

    var system = OpenVR.System;

    if (system != null)

    {

    var axisId = (uint)buttonId - (uint)EVRButtonId.k_EButton_Axis0;

    system.TriggerHapticPulse(ControllerIndex, axisId, (char)durationMicroSec);

    }

    }

    或者

    var device = SteamVR_Controller.Input(uint);

    device. TriggerHapticPulse();

    SteamVR_RenderModel

    该组件用于渲染手柄的模型,并且跟踪手柄的位置

    使用方法

    在左右手柄的物体下创建一个子物体,子物体上添加SteamVR_RenderModel脚本,Shader可以根据需求设置,比如设置为Standard

    image012

    至此,游戏中可以看到手柄模型和手柄位置同步

    SteamVR_PlayArea

    用于显示游玩区域。

    使用方法,在Origin物体上添加该脚本即可

    image013

    可以看到游戏场景中多了一个显示区域

    image014

    注意事项

    制作UI的时候需要使用世界坐标,通过不同相机的Depth复合,目前还不支持(2016/5/23)

    Unity5.4已经支持多相机复合(2016/8/21)

    注意ControlIndex的值,默认情况下都会自动设置,如果手动设置错误将导致错误的表现

    个人博客请访问:http://www.cnblogs.com/CodeGize/
  • 相关阅读:
    UVALive 7752 Free Figurines (瞎搞)
    ifram的使用 左边是<a>链接 右边是对应网页嵌套的显示网页链接内容 和toggle的收放用法
    java.util.Collections.synchronizedSet()方法的使用
    hibernate的反向生成改懒加载的地方
    SSM的XML和WEB.XML的配置
    通过System获取java环境变量的路径
    Java:对象的强、软、弱和虚引用的区别
    Struts2方法调用的三种方式(有新的!调用方法的说明)
    静态代理,动态代理,Cglib代理详解
    spring自定义注解拦截器的配置
  • 原文地址:https://www.cnblogs.com/CodeGize/p/5524553.html
Copyright © 2020-2023  润新知