Unity学习 HTC Vive & Hi5 2.0

HTC Vive & Hi5 2.0 灭火器项目指南

软件版本

Unity 2019.4.40f1c1

SDK与教程

Hi5 2.0 SDK下载

官网下载:https://shopcdn.noitom.com.cn/article/43.html

SDK分为基础SDK(FSDK)和交互SDK(ISDK)。

SDK File

Hi5 2.0 交互 SDK 用户手册

CSDN教程:https://blog.csdn.net/weixin_43042683/article/details/126922595

官方教程:在交互SDK压缩包中的PDF文件(Hi5 2.0_SteamVRHeadset_ISDK_Unity_1.1.0.3_用户手册)

ISDK HandBook

Hi5 消磁&校准教程

官网教程:https://shopcdn.noitom.com.cn/article/19.html

这个网站下面的资源是Hi5 1.0的,别用。

Tracker不分左右,若发现校准后左右手部模型反了或手部模型不自然,请重新校准。Pose越标准,手部模型越精准。

必须开始HI5 Menu面板的Calibrate校准程序才能进行校准。做V-Pose不需要来回摆动手臂,先保持水平,再保持倾斜即可。

HI5 Menu

项目融合

将Hi5 SDK的Calibration场景的[CmaeraRig]_Hi5以及TableScence_Vive场景的Hi5_Thread_MonoBehaviourHi5_Interaction_ObjectHi5_Interaction_Simple_Objects导入到灭火器的Start和Play场景中。

Calibration

TableScene_Vive

由于需要在Start里进行手部校准,所以还需将HI5 Menu导入进Start场景。刚导入进来的HI5 Menu面板无法点击,需要修改HI5 Menu的所有Btn_*子对象(场景搜索Btn),将它们的Menu State Button组件的Selection Radial变量指定为Camera。

Hi5 Menu Btn_*

Button Selection Radial

手部模型位置修正

找了一个世纪都找不到如何设置绑定修正,我直接改源码。

当你移动手部对象(Hi5_Left_HandHi5_Right_Hand)位置后,再运行,会发现手部模型会回到原点(0,0,0)并与手部Tracker相对位置出现偏差。这时就需要进行位置修正。

解决方法:

  1. 找到脚本HI5_InertiaInstance.cs,打开编辑;

  2. 添加superObject变量:

    public GameObject superObject;
    

    GameObject Variable

  3. 找到ApplyHandMotion_Pose方法,在HandBones[m_INDEX_Hand].position = position;上方添加如下代码:

    if (superObject != null)
    {
    	position += superObject.transform.position;
    }
    

    position correction

  4. 保存代码,回到Unity,找到两个手部模型,将其HI5_InertiaInstance.cs脚本的superObject变量选择为[CameraRig]_Hi5

    Super Object

避坑指北

坑啊坑啊都是坑啊。我真是踩了个遍,麻了……

手指定位器连接不上

需要将手指定位器与接收器的频段调为一致(不同颜色代表不同频段)。建议均调为蓝色频段,若手指信号差则可尝试更改频段。

三个Tracker手模型校准不正确

当场景中存在三个Tracker时,手部模型会校准不正确。所以需要保证进行手部模型校准时候场景里只存在两个Tracker。

在Start场景里将Tracked Device删除至只剩下四个Device(Device1 - Device4)。

Start Tracked Devices

Play场景不需要修改,保证在五个以上。

Tracker的启动顺序

由于Start场景只预留了四个Tracked Device,所以需要注意Tracker的启动顺序。

启动顺序:打开SteamVR自动连接两个定位器 > 启动左右手Tracker > 启动灭火器Tracker

这样做保证了在Start场景里只存在两个定位器以及左右手Tracker,不存在灭火器Tracker。防止在Start场景里手模型校准不正确。

开始游戏后手模型不正确

若在Start场景里校准完手部模型后,开始游戏进入Play场景发现手部模型不正确。请检查Start场景的手部对象和Play场景的手部对象是否一致,需确保名字、脚本组件均一致。

例如Start场景的手部对象脚本组件比Play场景的手部对象脚本组件多或少一个(即使未开启),均会导致开始游戏后手模型不正确。

报错DlINotFoundException: XRSDKOpenVR

Unity.XR.OpenvR.OpenvRLoader.Initialize 0 (at Librar nvr@3ee6c452bc34/Runtime/OpenVRLoader.cs:185)

打开Project Settings > 点击XR Plug-in Management > 取消勾选Initialize XR on Startup。

仅在报此错误时候这样做。

Initialize XR on Startup

写在最后

查资料的时候别查到Hi5 1.0了,需要查Hi5 2.0的。1.0的SDK和2.0的SDK不一样。

Noitom的官方文档是真的又少又乱。
未完待续,有疑问的小伙伴可以关注私信我哦,相互学习,共同进步~

猜你喜欢

转载自blog.csdn.net/jax2730/article/details/129453443