HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

1.Htc Vive安装教程

在把你的头显与控制器连到电脑上之前,我们首先要做的是先安好基站。基站的背面和低端各有一个固定孔,这样你可以把基站钉在墙上或者买支架将其撑起。大三角架安装示意图

www.zeeklog.com  - HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

Lighthouse基站会追踪头戴式显示器和控制器的感应器,请勿遮挡LED镜头。建议将基站安装在高于您头部的三角支架、天花板或墙上,为了追踪精确,请确保两个基站的直线距离不要超过5m.

www.zeeklog.com  - HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

上图中还有一个注意事项,就是基站的高度必须超过你的身高。然后用支架上的扣将其扣紧。基站安装好后上面的指示灯应该亮起表示工作正常,并且显示主基站B、辅基站C两个小字表示工作在无线同步模式(不是的话可能出现定位器无论怎样摆放都会出现定位十分不稳定的情况)。如果不用无线同步而是用线缆同步的话,需要用A通道,从后面按钮去调整工作通道。

www.zeeklog.com  - HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

设置好游玩区域后,移动基站位置或改变了角度,需要重新设置游玩区。为了获得最佳的体验,请移开游玩区中可能阻挡你自由行走的物体,移走或遮住镜子和可反射光的平面。下来就是要连头显和电脑了,这二者是通过重要组件联接器连到一起的,如下图。

www.zeeklog.com  - HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

联接器上明确写了哪边连VR哪边连PC。PC端电源小园口接墙或接线板(别搞反了)、USB方口接电脑USB口、HDMI六边形口接显卡;VR那端也是一样。因为各种口形状不同,基本不用担心会连错。

www.zeeklog.com  - HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

到开始游戏为止还有一些设置过程

设备连好了并不代表立刻就可以开始玩了,因为Vive不是台灯那么简单的设备,但它又没复杂到能引导一台计算机系统启动并自动做好各种设置的地步。必须通过在PC段做一些相应的配置,整套系统才能真正供游戏使用。

具体步骤如下:

1、 下载安装Steam程序,创建一个 Steam账户,然后前往“库”标签页来

安装SteamVR应用程序。

你可以创建一个SteamVR的快捷方式,或者进入Steam的客户端的主窗口点击VR按钮来启动。

www.zeeklog.com  - HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

2、 上述步骤安装如果没有出问题,打开SteamVR应用程序,五项设备应该显示绿色,准备就绪!

如果有设备检测不到,指示灯为红色,通常的解决办法是:

1 .确保你的硬件放置在游玩区内,拔下串流盒的电源,等待几秒再插上电源。如果还不行,那就重启SteamVR应用程序。

2.有时需要俩个手柄同时在定位区域才能显示出来。

3.手柄在没电时也可能会出现模型显示不出来的问题。

4.有可能需要跟新驱动,此时需要更新驱动的设备下方会出现感叹号,具体方法可以参考说明书。

5.头盔连接不上,可能是电脑HDMI,或USB口有问题。

www.zeeklog.com  - HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

3、 运行SteamVR应用程序,然后点击上图SteamVR标题旁边的“▼”按钮,运行房间设置(Room Setup)。

SteamVR的设置动画非常有趣且简明易懂,跟着做就是了。

手柄按键如下图

www.zeeklog.com  - HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试

2.使用SteamVR 和VRKT进行开发

1.导入SteamVR ,VRKT插件

可以直接从Unity 商店下载,注意版本问题。否则可能会报各种错,下面是Unity 5.6.6可用的俩个插件连接:

链接:https://pan.baidu.com/s/1hrxVmEllY-Sz7FU9WSgS7A
  提取码:zccf

进入 VRKT示例场景 :

002_Controller_Events 复制下面物体到自己的场景


把原场景摄像头删除了,运行一下基本就可以头盔看的场景了。平台会自动进行选择为SteamVR ,需要啥功能都可以复制粘      贴。

003_Controller_SimplePointer

发出一个射线:

 004_CameraRig_BasicTeleport   直线位移

+

005_Controller_BasicObjectGrabbing  基本物体的抓取

物体:

+  手柄

006_Controller_UsingADoor    继承 Intervatable Object  use 方法的扩展,如何使用一个门。这里可以对自己的任何与物体交互     的需求进行扩展

物体:

+   手柄

007_CameraRig_HeightAdjustTeleport      适应高度的位移

物体:

+

008_Controller_UsingAGrabbedObject   使用物体的扩展  

重写可交互物体组件

009_Controller_BezierPointer   曲线位移

010_CameraRig_TerrainTeleporting 带地形的位移:  

+

011_Camera_HeadSetCollisionFading   头盔碰撞物体后变色 ,忽略tag exculudeTeleport 物体

012_Controller_PointerWithAreaCollision    带有碰撞区域的射线

013_Controller_UsingAndGrabbingMultipleObjects   同时使用抓取和use

014_Controller_SnappingObjectsOnGrab    含有固定点的抓取

015_Controller_TouchpadAxisControl    控制汽车移动,跳跃,复位。

GetComponent<VRTK_ControllerEvents>().TriggerAxisChanged += new ControllerInteractionEventHandler(DoTriggerAxisChanged);   //
            GetComponent<VRTK_ControllerEvents>().TouchpadAxisChanged += new ControllerInteractionEventHandler(DoTouchpadAxisChanged);

GetComponent<VRTK_ControllerEvents>().TriggerReleased += new ControllerInteractionEventHandler(DoTriggerReleased);
            GetComponent<VRTK_ControllerEvents>().TouchpadTouchEnd += new ControllerInteractionEventHandler(DoTouchpadTouchEnd);

GetComponent<VRTK_ControllerEvents>().ButtonTwoPressed += new ControllerInteractionEventHandler(DoCarReset);  //菜单键

private void DoTouchpadAxisChanged(object sender, ControllerInteractionEventArgs e)
        {
            rcCarScript.SetTouchAxis(e.touchpadAxis);// 轴向值
        }

private void DoTriggerAxisChanged(object sender, ControllerInteractionEventArgs e)
        {
            rcCarScript.SetTriggerAxis(e.buttonPressure);    //压力值
        }

private void DoTouchpadTouchEnd(object sender, ControllerInteractionEventArgs e)
        {
            rcCarScript.SetTouchAxis(Vector2.zero);
        }

private void DoTriggerReleased(object sender, ControllerInteractionEventArgs e)
        {
            rcCarScript.SetTriggerAxis(0f);
        }

private void DoCarReset(object sender, ControllerInteractionEventArgs e)
        {
            rcCarScript.ResetCar();
        }

016_Controller_HapticRumble   手柄震动:

017_CameraRig_TouchpadWalking        用TouchPad 行走

018_CameraRig_FramesPerSecondCounter    显示FPS

019_Controller_InteractingWithPointer     射线和物体交互  勾选最小面选项即可

020_CameraRig_MeshTeleporting           不规则Mesh 物体上的行走

021_Controller_GrabbingObjectsWithJoints   使用不同的链条关节,在手柄和可交互物体间添加各种连接方式

有碰撞效果, 关节类似

有碰撞效果,关节

弹簧

子物体,可能会穿透模型

022_Controller_CustomBezierPointer   自定义Bezier 曲线

 023_Controller_ChildOfControllerOnGrab   设为子物体的抓取方式

024_CameraRig_ExcludeTeleportLocations    选择人物在那些区域不能移动

tag 是ExcludeTeleport 和挂这个名字的脚本都不能是可行走区域

025_Controls_Overview          都继承自VRTK_Control  的一些可交互物体 还没研究过

026_Controller_ForceHoldObject        初始化抓取一个物体

027_CameraRig_TeleportByModelVillage    抓取物体,移动到传送点

略:、、、、、、、

028_CameraRig_RoomExtender    家具  抽屉,盒子,,门  的实现

使用rotatorTrack  和Hinge joint 制作门

弹簧抽屉

029_Controller_Tooltips      手柄按键提示功能:

030_Controls_RadialTouchpadMenu    环形菜单

031_CameraRig_HeadsetGazePointer    头盔发射射线

。。。

032_Controller_CustomControllerModel     自定义手柄模型

033_CameraRig_TeleportingInNavMesh 使用Navmesh 导航控制可行走区域

034_Controls_InteractingWithUnityUI          和UI 交互

Canvas 上添加TRTK UIcanvas       手柄添加  VRTK UI Pointer       注册事件和PC一样,

包括:  射线交互方式,和碰撞交互方式,及不常用的头盔交互方式

035_Controller_OpacityAndHighlighting    手柄按键后,透明高亮处理

037_CameraRig_ClimbingFalling   实现爬山,爬梯效果

每个攀爬点添加交互物体组件

038_CameraRig_DashTeleport       有运动过程的快速位移

039_CameraRig_AdaptiveQuality   设置一些场景内头盔的参数,如抗锯齿, 画面质量。

040_Controls_PanelMenu     3d 的Panle 示例 。。

041_Controller_ObjectSnappingToDropZones     带吸附固定区域的放置效果

物体

+       区域:

042_CameraRig_MoveInPlace         通过按下按钮,上下,挥动手柄实现人物的移动控制

043_Controller_SecondaryControllerActions   物体交互时的:二级连动方式 :三种

1.双手持握                                                       2 双手放大                                               3 可以双手交换物题                                   如:               冲锋枪                                                         地图                                                            灭火器

3 Tracker 的使用:

1 简介:

VIVE Tracker是VIVE VR系列产品的配件,可以通过绑定现实世界中的物体,来追踪物体的位置。从使用的角度来看,它更像是一个阉割版的手柄,因为它具备手柄一样的位置追踪而没有实体按键,由于体积小巧和便携,它可以被绑定在任意物体上,将现实的物体带入VR环境。

基站可以追踪多个Tracker,所以场景中可以存在多个Tracker ,外观结构  ,如下图,从右往左:

位置1:LED指示灯,用来指示Tracker的状态,与手柄相同,如蓝色灯闪烁,则表示该设备尚未配对;如绿色灯亮,则开始工作并正常;如红灯,则表示电量低。

位置2:设备开关。

位置3:与手柄类似,用来接收基站信号的传感器。

位置4.1:1/4英寸螺丝孔,可以将其固定在标准三脚架云台上,与单反相机同。

位置4.2:用来加强稳定的针槽。

位置4.3:弹簧针,6位。

位置5:USB接口,一方面用来充电,一方面用来与PC通信,比如更新固件等。

关于4.3位置的6位弹簧针,玩家可以通过自己制作一些电器开关之类的外设与其通信,发送电信号,达到像手柄一样向PC发送按键触发事件的效果。下图为6个针位分别对应的按键信号名称。由此可见,的确是个阉割版的手柄,或者说,像是一个没有按键只有键位开关的键盘。

6针位弹簧针

2 使用场景

Tracker有很多应用场景,首先比较常用的就是追踪物体,你可以将它绑定到一些物体上,比如球棒、球拍、球杆、座椅等等,在传统行业里,可以绑定一些维修用的工具,扳手、锤子等,从而达到更加真实的体验。

另外,我们知道Tracker有弹簧针和USB 端口,还可以制作一些符合特定使用场合的外设,以更加符合外设的使用习惯,比如现在比较典型的PPGun,通过USB端口通信,将原来手柄的按键映射到了枪体相关的功能部件上,如Trigger键对应着枪的扳机,Touchpad映射到了枪体的摇杆等等。

另外,Tracker可以作为动作捕捉设备。我们知道,以现有的VR设备,只有手柄和头盔,很难实现全身的动作捕捉,那么使用Tracker,配合一些反向动力学插件,比如FINAL-IK,我们就能实现在VR中的全身动作捕捉。基站可以跟踪多个Tracker设备,所以就可以将多个设备绑定在人的关键部位,比如双脚、膝盖、腰部等等,设备越多,捕获的动作就越精确。

还有做好的插件:

参考资料:

初次使用Tracker

Tracker包装中包含一个无线接收器,当你需要在使用手柄的同时使用Tracker,那么需要将此无线接收器连接到PC,用来接收Trakcer的信号,在使用时,需要将两个手柄同时打开;如果不使用无线接收器,则系统将Trakcer认为是一个像手柄一样的控制器。

初次使用Tracker,需要进行设备的配对,当按下开关以后,蓝色灯会闪烁,表示设备正在等在配对,在SteamVR Runtime中右键(注意,这是是SteamVR运行时,我们在之前的课时里也区分过SteamVR SDK和SteamVR运行时),选择“设备”-“配对控制器”完成设备的配对。配对成功后,即可看到代表了Tracker的图标,如下图。

在Unity中使用Tracker  

推荐视屏:

下载开发指南:

学习下:

youtuobe 貌似有想关视屏

1  如下层级创建空物体, 添加SteamVR_TrackedObject 脚本,下方放置要跟踪的物体模型,方便调整位置

2.为将空物体拖拽值如下图说示例的物体上,trancker 实现跟踪

.

3

3 .外接按键

目前市面上没有固定的外接方式

1 .可以使用USB通讯协议,按开发文档发送格式数据,如PPGUN

额。。。

2.使用PogoPin  高低电频控制,从而确定对应按键 ,依据参考书或者上图的按键,用一个根导线,接通地线和按键对应的引脚,进行按键映射测试:

方法1:

1.可能由于只tracker 作为控制器输入时,HTC只能最多支持同时俩个手柄作为控制器,因此,需要关闭一个或者俩个控制器的连接,在进行测试才能得到测技结果,否则可能测试没有输出结果。

2.把脚本添加到,tracker 和俩个控制器,物体上,进行测试。

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

public class TrackerPogoPIN : MonoBehaviour {

    private SteamVR_TrackedObject trackedObject;
    [SerializeField]
    private bool trigger;
    [SerializeField]
    private bool trackpad;
    [SerializeField]
    private bool grip;
    [SerializeField]
    private bool menu;
    // Use this for initialization
    void Start () {
        trackedObject = GetComponent<SteamVR_TrackedObject>();
        
    }
    
    // Update is called once per frame
    void Update () {
        var device = SteamVR_Controller.Input((int)trackedObject.index);
        trigger = device.GetPress(Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger);
        grip = device.GetPress(Valve.VR.EVRButtonId.k_EButton_Grip);
        trackpad = device.GetPress(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad);
        menu = device.GetPress(Valve.VR.EVRButtonId.k_EButton_ApplicationMenu);
    }
}


3 测试结果。。。

方法2:

1.将tracker 使用USB 数据线连接到电脑,使用控制器  VIVE Tracker Role Changer 1.0 将tracker 转换为控制器,(不需要是可以再转回来),直接进行按键测试。

VIVE Tracker Role Changer 1.0 软件链接:https://pan.baidu.com/s/1FhSI-LArim0JAS6Mhajqng
提取码:kx8p

2。运行软件后,tracker会被识别为控制器。同样方法测试tracker ,结果和上图一致。