VR开发--初步了解SteamVR

作者: 元宇宙协会 | 来源:发表于2016-08-23 23:15 被阅读1305次

    1、360°旋转视角

    1.png

    添加其余的视角-扩张

    2.png

    添加好的层级关系:位置-头部-眼睛-耳朵

    3.png

    2、集成手柄

    创建游戏对象,分别为左右手,添加脚本:
    1、SteamVR_ControllerManager


    5.png

    2、SteamVR_TrackedObject 此类是根据Index来获取跟踪信息并反馈到Unity中。
    注:修改Index为none


    4.png
    3、SteamVR_GameView
    这个脚本主要负责将游戏画面绘制到窗口上去
    Paste_Image.png

    4、代码获取手柄对象:

    //1获取到某个按键的状态
    var device = SteamVR_Controller.Input(uint);
    device.GetTouchDown(SteamVR_Controller.ButtonMask)
    
    //2获取当前所有的按键状态
    var system = OpenVR.System;
    system.GetControllerState(uint, ref VRControllerState_t))
    

    5、手柄震动

    public void TriggerHapticPulse(ushort durationMicroSec = 1500, EVRButtonId buttonId = EVRButtonId.k_EButton_SteamVR_Touchpad)
    {
      var vr = OpenVR.System;
      if (vr != null)
      {
        var axisId = (uint)buttonId - (uint)EVRButtonId.k_EButton_Axis0;
        vr .TriggerHapticPulse(ControllerIndex, axisId, (char)durationMicroSec);
      }
    }
    或者可以
    var device = SteamVR_Controller.Input(uint);
    device. TriggerHapticPulse();
    

    6、SteamVR_Controller
    控制器的相关信息都包含在SteamVR_Controller这个脚本之中
    而这个脚本是被SteamVR_Render中的Update函数调用,从而循环获得手柄相关信息

    6

    当我们需要使用这些事件时直接监听这些事件即可。


    6.png

    ButtonMask类:手柄各按键的名称
    Input()函数:根据Index初始化Device[]数组,并实例化所有16个Device。
    Device类:最重要的类,封装了跟踪设备的全部信息。


    Device类包含:

    15.png 16.png

    GetAxis:获取手柄上圆盘坐标或Trigger的行程值(0-1),函数默认参数是手柄上的Touchpad。共有5个AxisId参数可选,0是TouchPad,1是Trigger,2,3,4应该是没有用的,且此函数只接受EVRButtonId类参数而不接受ButtonMask。
    TriggerHapticPulse:手柄震动控制函数,参数名称解释的是时间,默认500,但实际上控制的是震动的强度。默认AxisId是EVRButtonId_touchpad,选择其他EVRButtonId没用(等价参数axis0可以),其会调用OpenVR中的同名函数。参数超过4000会无效,导致震动不触发。可以通过协程的while(true)+waitforsecond控制震动间隔,通过stop协程控制震动结束。同上4操作。

    17.png

    GetHairTrigger
    GetHairTriggerDown:定义为有false转至true的过程,判断先前状态和当前状态。
    GetHairTriggerUp:定义为有true转至false的过程,判断先前状态和当前状态。
    HairTrigger是检测当你握住扳手超过一个固定值(0.1,可调)时即触发的状态。利用Trigger的变化量来做一个功能的触发

    7、SteamVR_LaserPoint

    主要实现手柄当前指向物体与离开物体的两个方法事件。使用射线检测

    7

    3、手柄渲染

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

    7.png

    4、活动空间(即玩家的活动空间)

    SteamVR_PlayArea
    用于显示游玩区域

    8.png

    5、HTC Vive参数

    HTC vive
    参数配置:
      分辨率:单眼 1200 x 1080 的分辨率
      刷新率:最高可达 90hz
      位置追踪范围:4.5m x 4.5m
      其他配置:配套的带有位置追踪的游戏控制器等

    推荐电脑配置:
      处理器:Intel i5-4590/AMD FX 8350同等或更高配置
      内存:4GB及以上
      显卡:NVIDIA GTX970/AMD R9290同等或更高配置
      系统:windows 7 SP1 或更高版本
      视频输出:HDMI 1.4或者DisplayPort 1.2或更高版本
      USB接口:1 x USB 2.0 或更高版本的端口

    游戏区域要求:
      空间定位:空间最小为 2 米 x 1.5 米 (6 英尺 6 英寸 x 5 英尺)
           基站间最大距离为 5 米 (16 英尺)
      站立/坐立:无最低空间要求

    6、参考:

    http://www.jianshu.com/p/8cce89d2aef3

    一个人的路需要更多人的陪伴:欢迎加群: 134688909 一起交流,分享心得,获取项目资源。

    相关文章

      网友评论

        本文标题:VR开发--初步了解SteamVR

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