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、 如果上述步骤安装没有问题,
若设备检测不到,指示灯为红色,通常的解决办法是:
1 .确保您的硬件放置在游戏区域,拔下串流盒的电源,等待几秒钟插入电源。如果没有,重启SteamVR应用程序。
2.有时需要两个手柄同时显示在定位区域。
3.手柄在没电时也可能会出现模型显示不出来的问题。
4.可能需要跟随新的驱动程序。此时,在需要更新驱动程序的设备下会出现感叹号。具体方法可参考说明书。
5.头盔无法连接,可能是电脑HDMI,或USB口有问题。
3、 运行SteamVR点击上图SteamVR标题旁边▼操作室设置按钮(Room Setup)。
SteamVR动画的设置很有趣,很容易理解,就跟着做吧。
2.使用SteamVR 和VRKT进行开发
可以直接从Unity 商店下载,注意版本。否则,可能会报告各种错误。Unity 5.6.6连接两个可用插件:
链接:https://pan.baidu.com/s/1hrxVmEllY-Sz7FU9WSgS7A 提取码:zccf
进入 VRKT示例场景:
删除原场景摄像头,运行头盔基本可以看到的场景。平台将自动选择SteamVR ,需要任何功能都可以复制粘贴 贴。
发射射线:
物体: 手柄
物体: 手柄
物体:
重写可交互物体组件
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) {undefined rcCarScript.SetTouchAxis(e.touchpadAxis);// 轴向值 }
private void DoTriggerAxisChanged(object sender, ControllerInteractionEventArgs e) {undefined rcCarScript.SetTriggerAxis(e.buttonPressure); //压力值 }
private void DoTouchpadTouchEnd(object sender, ControllerInteractionEventArgs e) {undefined rcCarScript.SetTouchAxis(Vector2.zero); }
private void DoTriggerReleased(object sender, ControllerInteractionEventArgs e) {undefined rcCarScript.SetTriggerAxis(0f); }
private void DoCarReset(object sender, ControllerInteractionEventArgs e) {undefined rcCarScript.ResetCar(); }
有碰撞效果, 关节类似
有碰撞效果,关节
弹簧
子物体,可能会穿透模型
tag 是ExcludeTeleport 和挂这个名字的脚本都不能是可行走区域
略:、、、、、、、
使用rotatorTrack 和Hinge joint 制作门
弹簧抽屉
。。。
Canvas 上添加TRTK UIcanvas 手柄添加 VRTK UI Pointer 注册事件和PC一样,
包括: 射线交互方式,和碰撞交互方式,及不常用的头盔交互方式
每个攀爬点添加交互物体组件
物体 + 区域:
。
1.双手持握 2 双手放大 3 可以双手交换物题 如: 冲锋枪 地图 灭火器
3 Tracker 的使用:
VIVE Tracker是VIVE VR系列产品的配件,可以通过绑定现实世界中的物体,来追踪物体的位置。从使用的角度来看,它更像是一个阉割版的手柄,因为它具备手柄一样的位置追踪而没有实体按键,由于体积小巧和便携,它可以被绑定在任意物体上,将现实的物体带入VR环境。
基站可以追踪多个Tracker,所以场景中可以存在多个Tracker ,外观结构 ,如下图,从右往左:
位置1:LED指示灯,用来指示Tracker的状态,与手柄相同,如蓝色灯闪烁,则表示该设备尚未配对;如绿色灯亮,则开始工作并正常;如红灯,则表示电量低。
位置3:与手柄类似,用来接收基站信号的传感器。
位置4.1:1/4英寸螺丝孔,可以将其固定在标准三脚架云台上,与单反相机同。
位置4.2:用来加强稳定的针槽。
位置4.3:弹簧针,6位。
位置5:USB接口,一方面用来充电,一方面用来与PC通信,比如更新固件等。
关于4.3位置的6位弹簧针,玩家可以通过自己制作一些电器开关之类的外设与其通信,发送电信号,达到像手柄一样向PC发送按键触发事件的效果。下图为6个针位分别对应的按键信号名称。由此可见,的确是个阉割版的手柄,或者说,像是一个没有按键只有键位开关的键盘。
6针位弹簧针
Tracker有很多应用场景,首先比较常用的就是追踪物体,你可以将它绑定到一些物体上,比如球棒、球拍、球杆、座椅等等,在传统行业里,可以绑定一些维修用的工具,扳手、锤子等,从而达到更加真实的体验。
另外,我们知道Tracker有弹簧针和USB 端口,还可以制作一些符合特定使用场合的外设,以更加符合外设的使用习惯,比如现在比较典型的PPGun,通过USB端口通信,将原来手柄的按键映射到了枪体相关的功能部件上,如Trigger键对应着枪的扳机,Touchpad映射到了枪体的摇杆等等。
另外,Tracker可以作为动作捕捉设备。我们知道,以现有的VR设备,只有手柄和头盔,很难实现全身的动作捕捉,那么使用Tracker,配合一些反向动力学插件,比如FINAL-IK,我们就能实现在VR中的全身动作捕捉。基站可以跟踪多个Tracker设备,所以就可以将多个设备绑定在人的关键部位,比如双脚、膝盖、腰部等等,设备越多,捕获的动作就越精确。
还有做好的插件:Mocap VR | Animation Tools | Unity Asset Store
GitHub - JamesBear/vive_ik_demo: A full body tracking demo using HTC Vive and Trackers
参考资料:http://gad.qq.com/article/detail/27127
Tracker包装中包含一个无线接收器,当你需要在使用手柄的同时使用Tracker,那么需要将此无线接收器连接到PC,用来接收Trakcer的信号,在使用时,需要将两个手柄同时打开;如果不使用无线接收器,则系统将Trakcer认为是一个像手柄一样的控制器。
初次使用Tracker,需要进行设备的配对,当按下开关以后,蓝色灯会闪烁,表示设备正在等在配对,在SteamVR Runtime中右键(注意,这是是SteamVR运行时,我们在之前的课时里也区分过SteamVR SDK和SteamVR运行时),选择“设备”-“配对控制器”完成设备的配对。配对成功后,即可看到代表了Tracker的图标,如下图。
推荐视屏:https://www.youtube.com/watch?v=MCiGpOSZM8A&t=3s
下载开发指南: VIVE™ | VIVE Tracker For Developers
学习下:HTC VIVE Tracker的二次开发(实际操作篇)附软件_qq_15029743的博客-CSDN博客
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 测试结果。。。