Zum Haupttext springen

Erste Schritte mit dem Inverse Unity-Paket

Dieser Leitfaden führt Sie durch die Grundeinstellungen und enthält einfache Beispiele, die die grundlegende Verwendung des „ Haply Inverse Unity“-Pakets veranschaulichen. Dazu gehören die Installation des Pakets, die Einrichtung eines Haptik-Setups sowie das Erstellen einfacher Skripte zur Kraft- und Positionssteuerung.

Weitere Informationen und fortgeschrittene Techniken finden Sie im Tutorial.

Versionsunterstützung​

  • Unity 2021.3.x LTS: Unterstützung
  • Unity 2022.1.x LTS: Unterstützung
  • Unity 6000.x LTS: Unterstützung
  • Haply Inverse SDK: 3.1.0 oder höher

Voraussetzungen​

  • Haply Inverse SDK Installieren Sie Version 3.1.0 oder höher.
  • Haply Bitte überprüfen Sie, ob der Inverse Service ordnungsgemäß funktioniert.
  • Vergewissern Sie sich vor dem Ausführen der Szene, dass die Geräte „ Inverse3 “ und „VerseGrip“ angeschlossen und kalibriert sind.
Anmerkung

Dieses Paket wird kontinuierlich weiterentwickelt, um die Unterstützung für „ Inverse3 “ zu verbessern. Wenn Sie Hilfe benötigen, Feedback geben möchten oder Wünsche haben, nutzen Sie bitte die Kontaktfunktion.

Installation​

Das „Inverse Unity“-Paketwird über die Scoped Registryvon Unity bereitgestellt. Befolgen Sie die folgenden Schritte, um das Paket zu integrieren:

  1. Öffnen Sie das Menü „Bearbeiten > Projekteinstellungen > Paketmanager “. Fügen Sie eine neue „Scoped Registry“ hinzu und legen Sie folgende Werte fest:

    • Name: Haply Robotics
    • URL: https://unitypackages.haply.co
    • Geltungsbereich(e) (Scope(s)): co.haply

    Konfiguration des Scoped Registry

  2. Fenster > Paketmanager Im Menü hinzufügen + Klicken Sie auf die Schaltfläche und Paket nach Name hinzufügenWählen Sie diese Option aus. co.haply.inverseeingeben und hinzufügenKlicken Sie auf .

    UPM UI – Schnelles Hinzufügen

Sobald die Installation abgeschlossen ist, wird das Inverse-Paket im Paketmanager angezeigt.

Einstellungen für die Haptic League​

Um ein Haptic Rig zu erstellen, wählen Sie im Menü „GameObject“ > „ Haply Inverse“ > „Haptic Rig (one hand) “. Dadurch wird eine vollständige Umgebung erstellt, die den „ Inverse3 “-Controller sowie die „VerseGrip“-Komponente enthält.

Die Szene enthält nun folgende Elemente:

  • Haptic Device Mapper: Haply Verwaltet die Gerätezuordnung auf Basis des „Inverse Service“-Prinzips.
  • Haptic Origin: Passt Größe und Position der haptischen Einstellungen innerhalb der Szene an.
  • Haptischer Controller: Inverse3 Steuert die Kraft oder Position des Cursors auf der Grundlage der Daten des VerseGrip- Geräts.
  • Cursor: Enthält die Komponenten „Inverse3 -Cursor“ und „VerseGrip-Cursor“ zur Darstellung von Szenen.

Haptic League (einhändig)

Weitere Informationen zu den Komponenten des Pakets finden Sie auf der Dokumentationsseite zur globalen Architektur.

Im Spielmodus bewegt sich die Kugel Inverse3 bewegt sich synchron mit der Richtung des Cursors und des VerseGrips und dreht sich entsprechend.

Inverse3 Inspektor

Lenker-Prüfgerät

Leistungsregelungsmodus​

ForceControl.cs Ein C#-Skript erstellen und dieses Haptischer Ursprung Mit einem GameObject verknüpfen. Mit diesem Skript können Sie mithilfe des Schiebereglers im Inspektor Inverse3 Sie können das Gerät mit Strom versorgen.

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

Kraftsteuerung

Beschreibung des Skripts​

  • forceX, Y, Z: Dies ist eine über einen Schieberegler einstellbare Komponente des Kraftvektors. Die Kraft CursorSetForce Stellen Sie sicher, dass die Werte innerhalb der Sicherheitsgrenzen bleiben, bevor sie an die Methode übergeben werden. Oder Standard Vector3 Sie können auch das Feld verwenden.

  • Awake(): Derzeit im GameObject oder einem seiner untergeordneten Objekte Inverse3 Die Komponente wird geladen.

  • OnEnable(): Awake Nach dem Aufruf der Methode sowie bei jeder Aktivierung des Skripts erfolgt die Aktualisierung der haptischen Rückmeldung in einem separaten Thread. OnDeviceStateChanged Registriert einen Callback.

  • OnDisable(): Wenn das Skript deaktiviert oder die Anwendung beendet wird, wird die Callback-Registrierung aufgehoben und „Power“ zurückgesetzt.

  • OnDeviceStateChanged: Im Inspektor-Fenster force Den Vektor abrufen CursorSetForce Mithilfe der Methode Inverse3weiterleiten.

    Wichtig: Dieser Callback wird vom Haptik-Thread mit hohen Frequenzen zwischen 1 kHz und 8 kHz aufgerufen. Es ist äußerst wichtig, sicherzustellen, dass der gesamte Code innerhalb dieses Callbacks hochgradig optimiert ist.

Anleitung​

Vergewissern Sie sich vor dem Aufrufen des Spielmodus, dass Sie den Cursor festhalten. Das Gerät muss in den „Force Control“-Modus wechseln, der durch ein grünes Licht angezeigt wird. Anschließend können Sie den Arbeitsbereich des Geräts erkunden und dabei die Kraftabgabe mithilfe des Schiebereglers anpassen.

Warnung

Wenn Sie die Kraft einstellen, kommt es zu einer Bewegung in Richtung „ Inverse3 “. Vergewissern Sie sich, dass der Arbeitsbereich frei ist, und halten Sie den Cursor stets fest. Sicherheitshinweise finden Sie im Dokument „Sichere Verwendung“.

Einstellungen für die Cursorstärke

Positionsregelungsmodus​

Ebenso die Position des Geräts steuern PositionControl.cs Ein C#-Skript erstellen und dieses Haptischer Ursprung Mit dem GameObject verknüpfen.

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

Stellen Sie sicher, dass das ForceControl -Skript sowie alle anderen Skripte, die das Gerät steuern, deaktiviert sind.

Positionssteuerung

Ähnlich wie im vorherigen Beispiel:

  • positionX, Y, and Zim Spielmodus mithilfe eines Schiebereglers StandortPassen Sie dies bitte an.

    Ausgewählt Range(-0.1, 0.1)Dies entspricht in etwa der maximal erreichbaren Position.

  • Awake Die Methode ist Inverse3 Die Komponente wird geladen.
  • OnEnable Die Methode ist Awake Nach dem Aufruf der Methode und bei jeder Aktivierung des Skripts werden die haptischen Aktualisierungen in einem separaten Thread OnDeviceStateChanged Registriert einen Callback.
  • OnDisable Die Methode hebt die Registrierung des Callbacks auf und setzt die Energie zurück, wenn das Skript deaktiviert oder die Anwendung beendet wird.

Es gibt jedoch folgende Unterschiede:

  • OnDeviceStateChanged Der Callback ruft bei jedem haptischen Frame den Positionsvektor aus dem Inspektor-Fenster ab und WorkspaceCenterLocalPositionund anschließend, CursorSetLocalPosition Verwenden Sie die Methode, um Daten an das Gerät „ Inverse3 “ zu übertragen.

Halten Sie den Cursor in der Nähe der Mitte, bevor Sie in den Spielmodus wechseln. Das Gerät muss in den Positionssteuerungsmodus wechseln (erkennbar an der blauen LED). Anschließend können Sie die Positionsausgabe mit dem Schieberegler anpassen, um den Arbeitsbereich des Geräts zu erkunden.

Warnung

Wenn Sie die Position anpassen, bewegt sich das Gerät „ Inverse3 “. Vergewissern Sie sich, dass sich keine Wertsachen im Arbeitsbereich befinden, und halten Sie den Cursor stets fest. Weitere Informationen finden Sie in der Sicherheitsanleitung.

Cursorposition festlegen