Zum Hauptinhalt springen

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.
Anmerkung

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:

  1. Ö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

    Gültigkeitsbereichsregister

  2. 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。

    Oberfläche zum schnellen 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.

Einhand-Haptic-Rig

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.

Inverse3 Übersichtsbereich

Bedienfeld zur Überprüfung der Griffe

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));
}
}

Kraftregelung

Erläuterungen zum Drehbuch​

  • forceX, Y, Z: Die über den Schieberegler eingestellte Kraftvektorkomponente wird an CursorSetForce Stellen Sie vor der Anwendung sicher, dass die Kraft innerhalb des sicheren Bereichs bleibt. Alternativ können Sie auch einen Standard- Vector3 Feld.

  • Awake(): Aus dem aktuellen GameObject oder dessen untergeordneten Objekten abrufen Inverse3 Komponenten.

  • OnEnable(): in Awake Nach dem Aufruf der Methode sowie bei jedem Start des Skripts werden in einem separaten Thread die taktilen Aktualisierungen registriert, und zwar OnDeviceStateChanged Rü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 abrufen force Vektor, und durch CursorSetForce Wie 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.

Hinweis

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.

Cursor-Einstellungskraft

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.

Lageregelung

Ähnlich wie im vorherigen Beispiel:

  • Im Ausführungsmodus verwenden Sie positionX, Y, and Z und mit dem Schieberegler anpassen Standort。

    Die ausgewählten Range(-0.1, 0.1) Dies entspricht in etwa der maximal erreichbaren Position.

  • Awake So erhalten Sie Inverse3 Komponenten.
  • OnEnable Die Methode in Awake Nach dem Aufruf der Methode sowie bei jeder Aktivierung des Skripts wird in einem separaten Thread eine Registrierung für taktile Aktualisierungen vorgenommen OnDeviceStateChanged Rückruf.
  • OnDisable Verfahren 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:

  • OnDeviceStateChanged Der Callback wird während jedes Haptik-Frames aufgerufen, holt den Positionsvektor aus dem Ansichtsfenster ab und vergleicht ihn mit WorkspaceCenterLocalPosition addieren, und durch CursorSetLocalPosition Senden 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.

Hinweis

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.

cursor-set-position