跳至主要内容
版本:Next

快速入门:HardwareAPI Unity 软件包

本文提供了基本设置说明和一个演示基本用法的简单示例。有关 详细信息和高级用法,请参阅 Unity 软件包参考或 教程。

版本支持​

  • Unity 2020.3.x LTS:推荐使用
  • Unity 2021.3.x LTS:支持
  • Unity 2022.x(技术流):实验性

软件包概述​

Haply HardwareAPIUnity 软件包建立在Haply的 C# HardwareAPI 类库之上,并为 Unity 量身定制了额外的集成功能和高质量的生活功能。 类库的基础上,为 Unity 量身定制了额外的集成和生活质量功能 工作流程量身定制的附加集成和生活质量功能。

触觉线程和手柄线程组件在线程安全的异步通信循环中处理与各自设备的通信。 在线程安全的异步通信循环中处理与各自设备的通信。此外,Haptic Thread还提供了几种控制 的方法。 此外,Haptic Thread 还提供了几种用于控制Inverse3 的方法。该软件包还能自动在 Unity 坐标系和 Haptic Thread 之间进行转换。 Unity 的坐标系和Inverse3的坐标系之间进行自动转换。

注该软件包正在持续开发中,以进一步简化Inverse3 的开发。 如有任何问题或要求,请联系我们。

安装Haply 硬件应用程序接口软件包​

HardwareAPI Unity 软件包通过 范围注册表 功能分发。本节将介绍定义自定义 注册表并将 HardwareAPI 软件包添加到新项目中所需的步骤。

  1. 打开项目后,在 Unity 工具栏中导航至编辑 > 项目设置 > 软件包管理器,然后在软件包管理器窗口中的范围注册表部分按下加号。 工具栏中的 "编辑 > 项目设置 >软件包管理器",然后在 "软件包管理器"窗口的 "作用域注册表"部分按下加 按钮并添加以下内容:

    • 名称: Haply Robotics
    • URL: https://unitypackages.haply.co
    • 范围 co.haply

    范围-注册表

    您也可以直接编辑 项目清单文件。
    有关 Unity Scoped Registry 的更多信息,请访问 docs.unity3d.com

  2. 使用 Unity 工具栏导航至窗口 > 软件包管理器

  3. 单击状态栏中的添加 + 按钮,选择按名称添加软件包。

    upm-ui-quick

  4. 进入 co.haply.hardwareapi 作为 名称 并点击 添加.

    upm-ui-quick-add

如果成功,软件包管理器应显示以下信息。

upm-uii-hapi

开始​

控制Inverse3​

  1. 在场景下创建一个空的游戏对象,将其命名为 "触觉线程",然后在检查器中添加 "触觉 线程组件。

  2. 在 "触觉线程"中,使用 "设备地址 "下拉菜单选择与其标牌上名称相匹配的Inverse3 设备。 上的名称相匹配的设备。

    haptic-tread-port.png

  3. 在场景中添加一个球体,将其命名为光标,并在 触觉线程中的 EE 头像。如果现在进入播放模式,球体将随着光标的移动而移动。 Inverse3的光标移动,同时位置和速度将在检查器窗口中不断更新。

  4. 用以下代码创建一个新的 C# 脚本,然后将其附加到与 触觉线程:

    using Haply.HardwareAPI.Unity;
    using UnityEngine;

    public class HapticController : MonoBehaviour
    {
    [Range(-2, 2)]
    public float forceX;
    [Range(-2, 2)]
    public float forceY;
    [Range(-2, 2)]
    public float forceZ;

    private void Awake()
    {
    var hapticThread = GetComponent<HapticThread>();
    hapticThread.onInitialized.AddListener(() => hapticThread.Run(ForceCalculation));
    }

    private Vector3 ForceCalculation(in Vector3 position)
    {
    return new Vector3(forceX, forceY, forceZ);
    }
    }
    • "(《世界人权宣言》) Awake 方法获取 触觉线程 并在另一个线程中开始触觉计算。 线程中开始触觉计算。然后在 onInitialized 事件,调用该事件时将调用 运行方法,并将 ForceCalculation 方法作为委托参数。
    • ForceCalculation 获取检查器窗口中提供的力矢量,并将其发送到 Inverse3.
  5. 进入播放模式后,触觉线程将在检测器窗口中不断更新设备的速度和位置。 位置。探索设备工作区,并尝试使用滑块控制力输出。 输出。

    警告: 更改力值时,Inverse3 会移动,因此务必清除工作区内的 贵重物品并按住光标。更多信息,请参阅安全使用文章。

    触觉线程

HapticThread组件可以使用滑块控制触觉线程的刷新率。为获得最佳 效果,请使用 1KHz 或更高的刷新率。

HapticThread提供的位置是通过设备上的位置传感器直接测量的。 设备上的位置传感器直接测量。而速度则是通过速度估算算法计算得出的,从而提供无需过滤的信号。 提供无需过滤的信号。HapticThread还能提供以下信息 设备的电源状态、基座方向和其他状态。

使用把手​

  1. 在场景下创建一个空的游戏对象,将其命名为 "Handle Thread",然后在检查器中添加Handle 线程组件。

  2. 在检查器中,使用设备地址下拉菜单选择与其标签上的名称相匹配的处理设备。 标签上的名称相匹配的处理设备

    处理端口

  3. 添加一个立方体作为光标的子立方体,并设置以下变换值:

    • 职位 : 0, 0, -1
    • 旋转 : 0, 0, 0
    • 规模 : 0.5, 0.5, 2
  4. 将光标附加到句柄线程的 "头像"属性上

  5. 进入播放模式后,手柄线程将不断更新检查器窗口中的设备方向。 检查器窗口中的设备方向,因此移动手柄将旋转光标。

    处理线程

这样做将根据手柄方向更新光标的旋转,而位置将根据效果器的移动更新。 Inverse3 效应器的移动来更新位置。