Schnellstart: Inverse Unity-Paket
Dieser Leitfaden beschreibt die grundlegende Einrichtung und bietet ein einfaches Beispiel zur Demonstration der grundlegenden Verwendung des Haply Inverse Unity Package, einschließlich der Installation des Pakets, der Einrichtung eines Haptic Rig und der Erstellung einfacher Skripte zur Kraft- und Positionssteuerung.
Umfassende Details und fortgeschrittene Techniken finden Sie in den Tutorials.
Version Unterstützung
- Unity 2021.3.x LTS: Unterstützt
- Unity 2022.3.x LTS: Unterstützt
- Unity 2023.x.x (Tech Stream): Experimentell
- Haply Inverse SDK: 2.0.0 oder höher
Voraussetzungen
- Installieren Sie die Haply Inverse SDK Version 2.0.0 oder höher.
- Stellen Sie sicher, dass der Haply Inverse Service betriebsbereit ist.
- Stellen Sie sicher, dass Ihre Inverse3 und VerseGrip-Geräte angeschlossen und kalibriert sind, bevor Sie die Szene starten.
Das Paket wird ständig weiterentwickelt, um die Unterstützung für Inverse3 zu verbessern. Für Unterstützung, Feedback oder Anfragen kontaktieren Sie uns bitte.
Einrichtung
Das Inverse Unity-Paket ist über die Scoped Registry von Unity verfügbar. Um das Paket zu integrieren:
-
Öffnen Sie Bearbeiten > Projekteinstellungen > Paketmanager. Fügen Sie eine neue Scoped Registry mit hinzu:
- Name:
Haply Robotics
- URL:
https://unitypackages.haply.co
- Geltungsbereich(e):
co.haply
- Name:
-
Zugang Fenster > Paketmanagerklicken Sie auf die hinzufügen + Taste und wählen Sie Paket nach Name hinzufügen. Eingabe
co.haply.inverse
und klicken Sie hinzufügen.
Nach erfolgreicher Installation zeigt der Paketmanager das Paket Inverse an.
Einrichten des Haptik-Rigs
Um ein Haptic Rig zu erstellen, navigieren Sie zu GameObject > Haply Inverse > Haptic Rig (eine Hand). Bei dieser Aktion wird eine komplette Umgebung mit dem Inverse3 Controller und dem VerseGrip erstellt.
Ihre Szene wird nun auch die folgenden Elemente enthalten:
- Haptic Device Mapper: Verwaltet die Gerätezuordnung mit dem Haply Inverse Service.
- Haptischer Ursprung: Skaliert und positioniert den haptischen Aufbau innerhalb der Szene.
- Haptische Steuerung: Verwaltet die Cursorkraft oder -position basierend auf Inverse3 und VerseGrip-Gerätedaten.
- Cursor: Enthält die Komponenten Inverse3Cursor und VerseGrip Cursor für die Szenendarstellung.
Weitere Einzelheiten zu den Paketkomponenten finden Sie auf der Dokumentationsseite zur globalen Architektur.
Im Wiedergabemodus bewegt und dreht sich die Kugel synchron mit dem Inverse3 Ausrichtung des Cursors und des VerseGrips.
Force Control-Modus
Erstellen einer ForceControl.cs
C#-Skript und hängen Sie es an die Haptischer Ursprung SpielObjekt.
Dieses Skript ermöglicht es Ihnen, Kräfte auf das Inverse3 Gerät mit Hilfe der Schieberegler des Inspektors.
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);
}
}
Skript-Erläuterung
-
forceX, Y, Z
: Einstellbare Kraftvektorkomponenten mit Schiebereglern, die sicherstellen, dass die Kräfte innerhalb sicherer Grenzen bleiben, bevor sie an denCursorSetForce
Methode. Alternativ dazu kann eine StandardVector3
Feld verwendet werden kann. -
Awake()
: Ruft die Inverse3 Komponente aus dem aktuellen GameObject oder seinem Child. -
OnEnable()
: Registrieren Sie dieOnDeviceStateChanged
Callback von der haptischen Aktualisierung in einem separaten Thread nach derAwake
Methodenaufruf und jedes Mal, wenn das Skript aktiviert wird. -
OnDisable()
: Hebt die Registrierung des Rückrufs auf und setzt die Kraft zurück, wenn das Skript deaktiviert wird oder die Anwendung beendet wird. -
OnDeviceStateChanged
: Holt dieforce
Vektor aus dem Inspektorfenster und leitet ihn an den Inverse3 unter Verwendung derCursorSetForce
Methode.WICHTIG: Der Callback wird vom haptischen Thread mit einer hohen Frequenz ausgelöst, die zwischen 4kHz und 8kHz liegt. Es ist wichtig sicherzustellen, dass der gesamte Code innerhalb dieses Callbacks hoch optimiert ist.
Verwendung
Bevor Sie in den Wiedergabemodus wechseln, stellen Sie sicher, dass Sie den Cursor gedrückt halten. Das Gerät sollte in den Force Control-Status übergehen, was durch ein grünes Licht angezeigt wird. Sie können dann im Arbeitsbereich des Geräts navigieren, indem Sie die Kraftausgabe mit den Schiebereglern anpassen.
Wenn Sie Kräfte einstellen, bewegt sich die Inverse3 . Achten Sie darauf, dass der Arbeitsbereich frei ist, und halten Sie den Cursor immer fest. Sicherheitsrichtlinien finden Sie im Artikel Sichere Verwendung.
Lagekontrollmodus
Erstellen Sie in ähnlicher Weise eine PositionControl.cs
C#-Skript zur Steuerung der Position des Geräts und verbinden Sie es mit dem Haptischer Ursprung SpielObjekt.
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));
}
}
Stellen Sie sicher, dass das ForceControl-Skript oder andere Skripte, die das Gerät steuern, deaktiviert sind.
Ähnlich wie im vorherigen Beispiel:
- Nutzen Sie
positionX, Y, and Z
zum Einstellen der Position mit Hilfe von Schiebereglern im Wiedergabemodus.Die ausgewählten
Range(-0.1, 0.1)
entspricht in etwa der maximal erreichbaren Position. - Die
Awake
Methode ruft die Inverse3 Komponente. - Die
OnEnable
Methode registrieren dieOnDeviceStateChanged
Callback von der haptischen Aktualisierung in einem separaten Thread nach derAwake
Methodenaufruf und jedes Mal, wenn das Skript aktiviert wird. - Die
OnDisable
Methode hebt die Registrierung des Rückrufs auf und setzt die Kraft zurück, wenn das Skript deaktiviert wird oder die Anwendung endet.
Es gibt jedoch Unterschiede:
- Die
OnDeviceStateChanged
Callback zeichnet zunächst diebasePosition
. Dann wird bei jedem haptischen Bild der Positionsvektor aus dem Inspektionsfenster genommen und zumbasePosition
und sendet sie an die Inverse3 unter Verwendung derCursorSetPosition
Methode.
Bevor Sie in den Wiedergabemodus wechseln, halten Sie den Cursor gedrückt. Das Gerät sollte in den Zustand der Positionssteuerung übergehen (durch ein blaues Licht angezeigt). Sie können dann den Arbeitsbereich des Geräts erkunden, indem Sie die Positionsausgabe mit den Schiebereglern anpassen.
Wenn Sie die Position einstellen, bewegt sich die Inverse3 . Achten Sie darauf, dass der Arbeitsbereich frei von Wertgegenständen ist, und halten Sie den Cursor immer fest. Weitere Einzelheiten finden Sie im Artikel Sichere Verwendung.