Inverse Unity Package – Einführungshandbuch
Dieser Leitfaden gibt einen Überblick über die Grundeinstellungen und enthält ein einfaches Beispiel, das die grundlegende Verwendung des „ Haply Inverse Unity Package“ veranschaulicht, einschließlich der Installation des Pakets, des Aufbaus des Haptic Rigs sowie der Erstellung einfacher Skripte für die Kraft- und Positionssteuerung.
Umfassende Informationen und fortgeschrittene Tipps finden Sieim Tutorial.
Versionsunterstützung
- Unity 2021.3.x LTS: Unterstützt
- Unity 2022.1.x LTS: Unterstützt
- Unity 6000.x LTS: Unterstützt
- Haply Inverse SDK: 3.1.0 oder höher
Voraussetzungen
- Installation Haply Inverse SDK Version 3.1.0 oder höher.
- Stellen Sie sicher, dass derHaply -Inverse-Service ordnungsgemäß läuft.
- Bevor Sie die Szene starten, vergewissern Sie sich bitte, dass Ihr Inverse3 - und Ihr VerseGrip-Gerät miteinander verbunden und vollständig kalibriert sind.
Dieses Softwarepaket wird kontinuierlich weiterentwickelt, um die Unterstützung für Inverse3 zu verbessern. Wenn Sie Hilfe benötigen, Feedback geben oder Wünsche äußern möchten,kontaktieren Sie unsbitte.
Installation
Das „Inverse Unity“-Paketkann über das Unity-Scope-Register abgerufen werden. So integrieren Sie das Paket:
-
Öffnen Sie „Bearbeiten > Projekteinstellungen > Paketmanager“, fügen Sie einenneuen Bereichseintrag hinzuund geben Sie Folgendes ein:
- Bezeichnung:
Haply Robotics - URL:
https://unitypackages.haply.co - Gültigkeitsbereich(e) (Scope(s)):
co.haply

- Bezeichnung:
-
Einstieg Fenster > Paketmanager, klicken Sie auf hinzufügen + Schaltfläche und wählen Sie dann Paket nach Name hinzufügen。 Eingabe
co.haply.inverse, und dann auf hinzufügen。
Nach erfolgreicher Installation zeigt der Paketmanager das Inverse-Paket an.
Einrichten des Haptic Rig
Um ein „Haptic Rig“ zu erstellen, navigieren Sie zu „GameObject“ > „ Haply Inverse“ > „Haptic Rig (eine Hand)“. Dadurch wird eine vollständige Umgebung zusammengestellt, die den „ Inverse3 “-Controller und den „VerseGrip“ enthält.
Die Szene enthält nun Folgendes:
- Haptic Device Mapper: Verwenden Sie den „Haply Inverse Service“, um die Gerätezuordnung zu verwalten.
- Haptic Origin: Zoomen und Positionieren der haptischen Einstellungen in der Szene.
- Haptischer Controller: Steuert Inverse3 und den Daten des VerseGrip-Geräts die Kraft oder Position des Cursors zu steuern.
- Cursor: Enthält die Komponenten „Inverse3 -Cursor“ und „VerseGrip-Cursor“ für die Darstellung der Szene.

Weitere Informationen zu den Paketkomponenten finden Sieauf der Seite mit der globalen Architekturdokumentation.
Im „Play“-Modus bewegt sich die Kugel gemeinsam mit Inverse3 sich synchron mit dem Cursor bewegt und dreht und der Ausrichtung des VerseGrip folgt.


Kraftregelungsmodus
Erstellen Sie ein ForceControl.cs C#-Skript und dieses an Haptischer Ursprung Auf dem GameObject.
Mit diesem Skript kannst du über den Schieberegler im Inspektorfenster Inverse3 Die Anlage übt eine Kraft aus.
using Haply.Inverse;
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.Release();
}
private void OnDeviceStateChanged(object sender, Inverse3EventArgs args)
{
var inverse3 = args.DeviceController;
inverse3.SetCursorLocalForce(new Vector3(forceX, forceY, forceZ));
}
}
Erläuterungen zum Drehbuch
-
forceX, Y, Z: Die über den Schieberegler eingestellte Kraftvektorkomponente wird anCursorSetForceStellen Sie vor der Anwendung sicher, dass die Kraft innerhalb des sicheren Bereichs bleibt. Alternativ können Sie auch einen Standard-Vector3Feld. -
Awake(): Aus dem aktuellen GameObject oder dessen untergeordneten Objekten abrufen Inverse3 Komponenten. -
OnEnable(): inAwakeNach dem Aufruf der Methode sowie bei jedem Start des Skripts werden in einem separaten Thread die taktilen Aktualisierungen registriert, und zwarOnDeviceStateChangedRückruf. -
OnDisable(): Wenn das Skript deaktiviert wird oder die Anwendung beendet wird, wird der Abmelde-Callback aufgerufen und die Kraft zurückgesetzt. -
OnDeviceStateChanged: Aus dem Überwachungsfenster abrufenforceVektor, und durchCursorSetForceWie kann man dies weiterleiten an Inverse3。Wichtig: Dieser Callback wird vom Haptik-Thread mit einer hohen Frequenz im Bereich von 1 kHz bis 8 kHz ausgelöst. Stellen Sie unbedingt sicher, dass der gesamte Code in diesem Callback umfassend optimiert ist.
Anwendungshinweise
Bevor du den Play-Modus aktivierst, vergewissere dich bitte, dass du den Cursor in der Hand hältst. Das Gerät sollte in den „Force Control“-Modus wechseln und eine grüne LED leuchten. Anschließend kannst du die Kraftabgabe über den Schieberegler einstellen und im Arbeitsbereich des Geräts arbeiten.
Durch die Einstellkraft wird Inverse3 in Bewegung versetzt. Stellen Sie sicher, dass sich keine Hindernisse im Arbeitsbereich befinden, und halten Sie den Cursor stets fest. Informationen zu den Sicherheitsrichtlinien finden Sieim Artikel zur sicheren Verwendung.

Positionsregelungsmodus
Erstellen Sie ebenfalls eine Funktion zur Steuerung der Geräteposition, PositionControl.cs C#-Skript und dieses an Haptischer Ursprung Auf dem GameObject.
using Haply.Inverse;
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 void Awake()
{
_inverse3 = GetComponentInChildren<Inverse3>();
}
protected void OnEnable()
{
_inverse3.DeviceStateChanged += OnDeviceStateChanged;
}
protected void OnDisable()
{
_inverse3.DeviceStateChanged -= OnDeviceStateChanged;
_inverse3.Release();
}
private void OnDeviceStateChanged(object sender, Inverse3EventArgs args)
{
var inverse3 = args.DeviceController;
inverse3.SetCursorLocalPosition(inverse3.WorkspaceCenterLocalPosition + new Vector3(positionX, positionY, positionZ));
}
}
Bitte stellen Sie sicher, dass das „ForceControl“-Skript sowie alle anderen Skripte, die das Gerät steuern, deaktiviert sind.
Ähnlich wie im vorherigen Beispiel:
- Im Ausführungsmodus verwenden Sie
positionX, Y, and Zund mit dem Schieberegler anpassen Standort。Die ausgewählten
Range(-0.1, 0.1)Dies entspricht in etwa der maximal erreichbaren Position. AwakeSo erhalten Sie Inverse3 Komponenten.OnEnableDie Methode inAwakeNach dem Aufruf der Methode sowie bei jeder Aktivierung des Skripts wird in einem separaten Thread eine Registrierung für taktile Aktualisierungen vorgenommenOnDeviceStateChangedRückruf.OnDisableVerfahren zum Abmelden des Callbacks und zum Zurücksetzen der Kraft, wenn das Skript deaktiviert oder die Anwendung beendet wird.
Es gibt jedoch folgende Unterschiede zwischen beiden:
OnDeviceStateChangedDer Callback wird während jedes Haptik-Frames aufgerufen, holt den Positionsvektor aus dem Ansichtsfenster ab und vergleicht ihn mitWorkspaceCenterLocalPositionaddieren, und durchCursorSetLocalPositionSenden Sie diese bitte an Inverse3.
Bevor Sie in den Betriebsmodus wechseln, halten Sie den Cursor bitte nahe an die Mitte. Das Gerät sollte in den Modus „Positionssteuerung“ wechseln (die Kontrollleuchte leuchtet blau). Anschließend können Sie die Positionsausgabe mit dem Schieberegler anpassen und den Arbeitsbereich des Geräts erkunden.
Beim Anpassen der Position wird „Inverse3 “ verschoben. Bitte stellen Sie sicher, dass sich keine Wertsachen im Arbeitsbereich befinden, und halten Sie den Cursor stets fest. Weitere Informationen finden Sie im Artikel zur sicheren Verwendung.
