VIVE Tracker是VIVE VR系列产品的配件,可以通过绑定现实世界中的物体,来追踪物体的位置。
Tracker可以作为动作捕捉设备。以现有的VR设备,只有手柄和头盔,很难实现全身的动作捕捉,那么使用Tracker,配合一些反向动力学插件,比如FINAL-IK,就能实现在VR中的全身动作捕捉。
HTC Vive 通过两个基站捕捉其头显和控制手柄位置。基站每秒能发出 6次激光束,内有两个扫描模块,分别在水平和垂直方向轮流发射激光扫描定位空间。其头显和手柄上安装了70多个光敏传感器,计算激光达到时间从而计算每个光敏传感器相对于定位基站位置。经过多个光敏传感器数据融合,即可计算出头显及手柄的位置和旋转方向。其定位精度高,反应速度快,但需要避免基站的抖动。
由于 HTC Vive 基站一般会固定在某一位置不动,则其定位精度最高,且 HTC Vive 相较于其他 VR 设备,提供了 Tracker定位产品,用于现实中物体在虚拟世界中定位。
在Unity中,Tracker的开发并不需要额外的SDK支持,只需要导入VR开发必备的在SteamVR SDK即可。在SteamVR中,所有基站能够追踪的物体,都认为是Tracked Object。
1、场景中需要一个可视的物体来标记Tracker,在引擎中,可以新建一个GameObject用来标记Tracker,命名为Tracker,在其上添加SteamVR_TrackedObject脚本。
2、为Tracker容器添加一个可视化的3D物体,这里添加一个Cube。
3、选择CameraRig,在Steam VR_Controller Manager的Objects属性中,将Tracker添加到数组元素中。
steamVR如何不用头显获取tracker的定位
1、找到steamVR的设置日志目录(一般是在steam\logs文件夹中)其中vrserver.txt(驱动)就是放着驱动的加载日志
2、文件路径
Fri Dec 18 2020 11:40:30.116 - [Settings] Load Default Json Settings from C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\htc\resources\settings\default.vrsettings |
---|
Fri Dec 18 2020 11:40:30.116 - [Settings] Load Default Json Settings from C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\lighthouse\resources\settings\default.vrsettings |
Fri Dec 18 2020 11:40:30.116 - [Settings] Load Default Json Settings from C:\Program Files (x86)\Steam\steamapps\common\SteamVR\resources\settings\default.vrsettings |
Fri Dec 18 2020 11:40:30.116 - [Settings] Load Default Json Settings from C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\null\resources\settings\default.vrsettings |
Fri Dec 18 2020 11:40:30.117 - [Settings] Load Json Settings from C:\Program Files (x86)\Steam\config\steamvr.vrsettings |
3、找到Steam\steamapps\common\SteamVR\resources\settings\default.vrsettings文件,修改三个参数:
"requireHmd" : false "forcedDriver" : "null" "activateMultipleDrivers" : true
找到Steam\steamapps\common\SteamVR\drivers\null\resources\settings\default.vrsettings文件,修改:
{ "driver_null" : { "enable" : true, "serialNumber" : "Null Serial Number", "modelNumber" : "Null Model Number", "windowX" : 0, "windowY" : 0, "windowWidth" : 2160, "windowHeight" : 1200, "renderWidth" : 1512, "renderHeight" : 1680, "secondsFromVsyncToPhotons" : 0.01111111, "displayFrequency" : 90.0 } }