Schnelleinstieg: HardwareAPI Unity-Paket
Dieser Artikel enthält grundlegende Anweisungen zur Einrichtung und ein einfaches Beispiel, das die grundlegende Verwendung demonstriert. Für Details und fortgeschrittene Verwendung siehe die Unity-Paket-Referenz oder Tutorials.
Unterstützung der Version
- Unity 2020.3.x LTS: Empfohlen
- Unity 2021.3.x LTS: Unterstützt
- Unity 2022.x (Tech Stream): Experimentell
Übersicht über das Paket
Das Haply HardwareAPI Unity Package basiert auf den HaplyC# HardwareAPI Klassenbibliotheken Klassenbibliotheken auf und bietet zusätzliche Integrationen und Quality-of-Life-Funktionen, die für Unity Arbeitsabläufe zugeschnitten sind.
Die Komponenten Haptic Thread und Handle Thread übernehmen die Kommunikation mit dem jeweiligen Gerät in einer thread-sicheren, asynchronen Kommunikationsschleife. Zusätzlich bietet Haptic Thread mehrere Methoden zur Steuerung des Inverse3. Das Paket konvertiert auch automatisch zwischen dem Koordinatensystem von Unity und dem von Inverse3um.
Hinweis: Das Paket wird ständig weiterentwickelt, um die Entwicklung für Inverse3 weiter zu vereinfachen. Wenn Sie Fragen oder Wünsche haben, kontaktieren Sie uns bitte.
Installieren Sie das Haply Hardware-API-Paket
Das HardwareAPI Unity-Paket wird über die Umfangreiche Registrierung Funktion des Unity-Paketmanagers verteilt. Dieser Abschnitt beschreibt die Schritte, die erforderlich sind, um eine eigene Registry zu definieren und das HardwareAPI-Paket zu einem neuen Projekt hinzuzufügen.
-
Navigieren Sie bei geöffnetem Projekt zu Bearbeiten > Projekteinstellungen > Paketmanager in der Unity Symbolleiste zu Bearbeiten > Projekteinstellungen > Paketmanager und fügen Sie im Fenster Paketmanager unter dem Abschnitt Scoped Registry durch Drücken der Plus Schaltfläche und fügen Sie Folgendes hinzu:
- Name:
Haply Robotics
- URL:
https://unitypackages.haply.co
- Geltungsbereich(e):
co.haply
Alternativ können Sie auch Ihre Projektmanifestdatei direkt bearbeiten.
Für weitere Informationen über Unity Scoped Registry besuchen Sie bitte: docs.unity3d.com - Name:
-
Verwenden Sie die Unity-Symbolleiste, um zu Fenster > Paketmanager zu navigieren .
-
Klicken Sie auf die Schaltfläche Hinzufügen + in der Statusleiste und wählen Sie Paket nach Name hinzufügen.
-
Eingabe
co.haply.hardwareapi
als die Name und klicken Sie hinzufügen.
Wenn dies erfolgreich war, sollte der Paketmanager die folgenden Informationen anzeigen.
Erste Schritte
Kontrolle Inverse3
-
Erstellen Sie ein leeres Spielobjekt unter Szene, nennen Sie es Haptic Thread und fügen Sie im Inspektor die Komponente Haptic Thread Komponente hinzu.
-
Verwenden Sie im Haptic Thread das Dropdown-Menü Geräteadresse, um das Inverse3 Gerät auszuwählen, das dem dem Namen auf dem Typenschild.
-
Fügen Sie der Szene eine Kugel hinzu, nennen Sie sie Cursor und verbinden Sie sie mit dem EE-Avatar im HapticThread. Wenn Sie nun in den Play Mode gehen, bewegt sich die Kugel mit dem Cursor des Inverse3Dabei werden Position und Geschwindigkeit im Inspektorfenster laufend aktualisiert.
-
Erstellen Sie ein neues C#-Skript mit folgendem Code und fügen Sie es demselben Spielobjekt zu wie den Haptischen Thread:
using Haply.HardwareAPI.Unity;
using UnityEngine;
public class HapticController : MonoBehaviour
{
[Range(-2, 2)]
public float forceX;
[Range(-2, 2)]
public float forceY;
[Range(-2, 2)]
public float forceZ;
private void Awake()
{
var hapticThread = GetComponent<HapticThread>();
hapticThread.onInitialized.AddListener(() => hapticThread.Run(ForceCalculation));
}
private Vector3 ForceCalculation(in Vector3 position)
{
return new Vector3(forceX, forceY, forceZ);
}
}- Die
Awake
Methode erhält die Haptisches Gewinde und startet die haptischen Berechnungen in einem separaten Thread. Es fügt dann einen Listener zumonInitialized
Ereignis, das, wenn es aufgerufen wird, die die Methode Run aufruft und dieForceCalculation
Methode als Argument des Delegaten. ForceCalculation
nimmt den im Inspektorfenster angegebenen Kraftvektor und sendet ihn an die Inverse3.
- Die
-
Wenn Sie in den Spielmodus wechseln, aktualisiert der Haptic Thread kontinuierlich die Geschwindigkeit und Position des Geräts im Inspektorfenster. Position im Inspektorfenster. Erkunden Sie den Arbeitsbereich des Geräts und versuchen Sie, die Kraft Ausgabe mit den Schiebereglern zu steuern.
WARNUNG: Beim Ändern von Kräften bewegt sich die Inverse3 , also achten Sie darauf, dass der Arbeitsbereich frei von von Wertgegenständen zu befreien und den Cursor festzuhalten. Weitere Informationen finden Sie im Artikel Sichere Verwendung.
Die HapticThread-Komponente kann die Aktualisierungsrate des haptischen Fadens mit einem Schieberegler steuern. Für beste Ergebnisse erzielen Sie mit einer Aktualisierungsrate von 1KHz oder mehr.
Die vom HapticThread gelieferte Position wird direkt mit Positionssensoren am Gerät gemessen. Gerät gemessen. Die Geschwindigkeit hingegen wird mithilfe eines Algorithmus zur Schätzung der Geschwindigkeit berechnet, um um ein Signal zu erhalten, das nicht gefiltert werden muss. Der HapticThread kann auch Informationen liefern über den Energiestatus des Geräts, die Grundausrichtung und andere Zustände liefern.
Verwendung eines Griffs
-
Erstellen Sie ein leeres Spielobjekt unter Szene, nennen Sie es Handle Thread und fügen Sie im Inspektor die Komponente Handle Thread Komponente hinzu.
-
Verwenden Sie im Inspektor das Dropdown-Menü Geräteadresse, um das Handle-Gerät auszuwählen, das dem Namen auf dem Tag seinem Tag
-
Fügen Sie einen Würfel als untergeordnetes Element des Cursors mit den folgenden Transformationswerten hinzu:
- Position :
0, 0, -1
- Rotation :
0, 0, 0
- Maßstab :
0.5, 0.5, 2
- Position :
-
Den Cursor mit der Avatar-Eigenschaft des Handle-Threadsverknüpfen
-
Wenn Sie in den Abspielmodus wechseln, aktualisiert der Handle-Thread kontinuierlich die Ausrichtung des Geräts im Inspektorfenster, so dass das Bewegen des Griffs den Cursor dreht.
Dadurch wird die Rotation des Cursors mit der Handle-Orientierung aktualisiert, während die Position durch die Inverse3 Bewegungen des Effektors aktualisiert wird.