本文へスキップ
バージョン: 2.0.0

クイックスタート逆ユニティパッケージ

このガイドでは、パッケージのインストール、Haptic Rigのセットアップ、力と位置の制御のための簡単なスクリプトの作成など、Haply Inverse Unityパッケージの基本的なセットアップの概要と基本的な使用方法を示す簡単な例を提供します。

包括的な詳細と高度なテクニックについては、チュートリアルをご覧ください。

バージョンサポート

  • Unity 2021.3.x LTS:サポートされています。
  • Unity 2022.3.x LTS:サポートされています。
  • Unity 2023.x.x(テックストリーム):実験的
  • Haply Inverse SDK:2.0.0以上

前提条件

  • Haply Inverse SDKバージョン2.0.0以上をインストールしてください。
  • Haply Inverse Serviceが動作可能であることを確認する。
  • シーンを起動する前に、Inverse3とVerseGripデバイスが接続され、キャリブレーションされていることを確認してください。
備考

このパッケージは、Inverse3のサポートを強化するために継続的に開発中です。サポート、フィードバック、リクエストはこちらまでご連絡ください。

インストール

Inverse UnityパッケージはUnityのScoped Registryから入手できます。パッケージを統合するには

  1. Edit > Project Settings > Package Managerを開く。で新しいScoped Registryを追加します:

    • 名前 Haply Robotics
    • URL: https://unitypackages.haply.co
    • スコープ(複数可): co.haply

    スコープド・レジストリ

  2. アクセス ウィンドウ > パッケージマネージャをクリックしてください。 追加 ボタンを押して パッケージを名前で追加する. 入る co.haply.inverse をクリックしてください。 追加.

    アップム-クイック追加

インストールに成功すると、パッケージ・マネージャーにInverseパッケージが表示されます。

ハプティック・リグのセットアップ

Haptic Rigを作成するには、GameObject > Haply Inverse > Haptic Rig(片手)に移動します。 このアクションは、Inverse3コントローラーとVerseGripを使った完全な環境を組み立てます。

これで、あなたのシーンが含まれることになる:

  • ハプティック・デバイス・マッパーHaply Inverse Serviceでデバイスの割り当てを管理します。
  • ハプティック・オリジン(Haptic Origin):シーン内でハプティックの設定をスケーリングし、配置する。
  • ハプティックコントローラーInverse3とVerseGripのデバイスデータに基づいて、カーソルの力や位置を管理します。
  • カーソル:シーン表現用のInverse3Cursorと VerseGrip Cursorコンポーネントを含む。

ハプティック・リグ

パッケージ・コンポーネントの詳細については、グローバル・アーキテクチャのドキュメント・ページを参照のこと。

プレイモードでは、Inverse3カーソルとVerseGripの向きに同期して球体が移動・回転します。

インバース3インスペクター

ハンドル検査官

フォース・コントロール・モード

を作成する。 ForceControl.cs C#スクリプトを ハプティック・オリジン GameObject。 このスクリプトは インバース3 インスペクタのスライダーを使用します。

using Haply.Inverse.Unity;
using UnityEngine;

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

private Inverse3 _inverse3;

private void Awake()
{
_inverse3 = GetComponentInChildren<Inverse3>();
}

protected void OnEnable()
{
_inverse3.DeviceStateChanged += OnDeviceStateChanged;
}

protected void OnDisable()
{
_inverse3.DeviceStateChanged -= OnDeviceStateChanged;
_inverse3.TryResetForce();
}

private void OnDeviceStateChanged(Inverse3 inverse3)
{
inverse3.CursorSetLocalForce(forceX, forceY, forceZ);
}
}

フォースコントロール

スクリプトの説明

  • forceX, Y, Z:スライダーを使用して力のベクトル成分を調整可能。 CursorSetForce メソッドを使用する。 あるいは、標準的な Vector3 フィールドを使うことができる。

  • Awake():を取得します。 インバース3 コンポーネントを、現在のGameObjectまたはその子オブジェクトから取得する。

  • OnEnable():を登録する。 OnDeviceStateChanged の後、別のスレッドでハプティック・アップデートからのコールバックを返す。 Awake メソッド呼び出しと、スクリプトが有効になるたびに。

  • OnDisable():コールバックの登録を解除し、スクリプトが無効化されたときやアプリケーションが停止したときにフォースをリセットする。

  • OnDeviceStateChanged:を取得します。 force ベクトルをインスペクター・ウィンドウから受け取り、それを インバース3 を使用している。 CursorSetForce メソッドを使用する。

    重要:このコールバックは、4kHzから8kHzの高い周波数でハプティックスレッドによってトリガーされます。 このコールバック内のすべてのコードが高度に最適化されていることを確認することが重要です。

使用方法

プレイモードに入る前に、カーソルを保持していることを確認してください。デバイスはフォースコントロールの状態に移行し、緑色のライトが点灯します。 その後、スライダーを使ってフォース出力を調整することで、デバイスのワークスペースをナビゲートすることができます。

警告

力を調整すると、Inverse3 が移動します。作業スペースを確保し、常にカーソルを固定してください。 安全に関するガイドラインは、安全な使用に関する記事を参照してください。

カーソル・セット・フォース

ポジション・コントロール・モード

同様に PositionControl.cs デバイスの位置をコントロールするC#スクリプトを ハプティック・オリジン ゲームオブジェクト。

using Haply.Inverse.Unity;
using UnityEngine;

public class PositionControl : MonoBehaviour
{
[Range(-0.1f, 0.1f)]
public float positionX;
[Range(-0.1f, 0.1f)]
public float positionY;
[Range(-0.1f, 0.1f)]
public float positionZ;

private Inverse3 _inverse3;
private Vector3 _basePosition;

private void Awake()
{
_inverse3 = GetComponentInChildren<Inverse3>();
}

protected void OnEnable()
{
_inverse3.DeviceStateChanged += OnDeviceStateChanged;
}

protected void OnDisable()
{
_inverse3.DeviceStateChanged -= OnDeviceStateChanged;
_inverse3.TryResetForce();
}

private void OnDeviceStateChanged(Inverse3 inverse3)
{
if (_basePosition == Vector3.zero)
{
_basePosition = inverse3.LocalPosition;
}
inverse3.CursorSetLocalPosition(_basePosition + new Vector3(positionX, positionY, positionZ));
}
}

ForceControlスクリプトまたはデバイスを制御するその他のスクリプトが無効になっていることを確認します。

ポジションコントロール

前の例と似ている:

  • 活用する positionX, Y, and Z を調整する。 位置 プレイモード中にスライダーを使用する。

    選択された Range(-0.1, 0.1) は、達成可能な最大位置にほぼ一致する。

  • について Awake メソッドは インバース3 コンポーネントを使用している。
  • について OnEnable メソッドは OnDeviceStateChanged の後、別のスレッドでハプティック・アップデートからのコールバックを返す。 Awake メソッド呼び出しと、スクリプトが有効になるたびに。
  • について OnDisable メソッドはコールバックの登録を解除し、スクリプトが無効化されたときやアプリケーションが停止したときにフォースをリセットします。

しかし、違いはある:

  • について OnDeviceStateChanged コールバックは最初に basePosition.そして、各ハプティックフレームの間に、インスペクタウィンドウから位置ベクトルを取り出し、それを basePositionを使ってInverse3に送る。 CursorSetPosition メソッドを使用する。

プレイモードに入る前に、カーソルをホールドする。デバイスは位置制御状態(青いライトで示される)に移行するはずです。 その後、スライダーでポジション出力を調整することで、デバイスのワークスペースを探索することができます。

警告

ポジションを調整する際、Inverse3は移動します。作業スペースに貴重品がないことを確認し、必ずカーソルを固定してください。 詳しくは安全な使用方法をご覧ください。

カーソル位置設定