HTC VIVE 安装,SteamVR,VRTK插件的使用,HTC VIVE Tracker的使用和外接按键测试
1.Htc Vive安装教程
在把你的头显与控制器连到电脑上之前,我们首先要做的是先安好基站。基站的背面和低端各有一个固定孔,这样你可以把基站钉在墙上或者买支架将其撑起。大三角架安装示意图
Lighthouse基站会追踪头戴式显示器和控制器的感应器,请勿遮挡LED镜头。建议将基站安装在高于您头部的三角支架、天花板或墙上,为了追踪精确,请确保两个基站的直线距离不要超过5m.
上图中还有一个注意事项,就是基站的高度必须超过你的身高。然后用支架上的扣将其扣紧。基站安装好后上面的指示灯应该亮起表示工作正常,并且显示主基站B、辅基站C两个小字表示工作在无线同步模式(不是的话可能出现定位器无论怎样摆放都会出现定位十分不稳定的情况)。如果不用无线同步而是用线缆同步的话,需要用A通道,从后面按钮去调整工作通道。
设置好游玩区域后,移动基站位置或改变了角度,需要重新设置游玩区。为了获得最佳的体验,请移开游玩区中可能阻挡你自由行走的物体,移走或遮住镜子和可反射光的平面。下来就是要连头显和电脑了,这二者是通过重要组件联接器连到一起的,如下图。
联接器上明确写了哪边连VR哪边连PC。PC端电源小园口接墙或接线板(别搞反了)、USB方口接电脑USB口、HDMI六边形口接显卡;VR那端也是一样。因为各种口形状不同,基本不用担心会连错。
到开始游戏为止还有一些设置过程
设备连好了并不代表立刻就可以开始玩了,因为Vive不是台灯那么简单的设备,但它又没复杂到能引导一台计算机系统启动并自动做好各种设置的地步。必须通过在PC段做一些相应的配置,整套系统才能真正供游戏使用。
具体步骤如下:
1、 下载安装Steam程序,创建一个 Steam账户,然后前往“库”标签页来
安装SteamVR应用程序。
你可以创建一个SteamVR的快捷方式,或者进入Steam的客户端的主窗口点击VR按钮来启动。
2、 上述步骤安装如果没有出问题,打开SteamVR应用程序,五项设备应该显示绿色,准备就绪!
如果有设备检测不到,指示灯为红色,通常的解决办法是:
1 .确保你的硬件放置在游玩区内,拔下串流盒的电源,等待几秒再插上电源。如果还不行,那就重启SteamVR应用程序。
2.有时需要俩个手柄同时在定位区域才能显示出来。
3.手柄在没电时也可能会出现模型显示不出来的问题。
4.有可能需要跟新驱动,此时需要更新驱动的设备下方会出现感叹号,具体方法可以参考说明书。
5.头盔连接不上,可能是电脑HDMI,或USB口有问题。
3、 运行SteamVR应用程序,然后点击上图SteamVR标题旁边的“▼”按钮,运行房间设置(Room Setup)。
SteamVR的设置动画非常有趣且简明易懂,跟着做就是了。
手柄按键如下图
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 ,结果和上图一致。