Zum Hauptinhalt springen
Diese Seite wurde automatisch übersetzt und kann Fehler enthalten. Original auf Englisch ansehen

Physics Glove-Leitfaden für Unity

Mit dem bHaptics Physics Glove SDK können Sie TactGlove-Benutzern ein immersives VR-Erlebnis mit Vibrationen in den Fingerspitzen und Handgelenken bieten.


Wofür ist das

Damit virtuelle Hände physisch mit der virtuellen Umgebung kollidieren und mit virtuellen Objekten interagieren können, kann Physik auf virtuelle Hände angewendet werden.

Die Master-Slave-Struktur wird häufig verwendet, um Physik auf Hände anzuwenden. Zur Umsetzung können Sie Plugins wie HPTK, Ultraleap Physics Hand oder Auto Hand verwenden. Sie können aber auch eine eigene Implementierung erstellen.

Das bHaptics Physics Glove SDK kann mithilfe von Master-Slave-Physik Haptik auf virtuelle Hände anwenden. Es liefert die passenden Vibrationen an den haptischen Handschuh, sodass Benutzer das Gefühl haben, als würden sie tatsächlich ein virtuelles Objekt aufheben.

hinweis

Sie müssen das Physics Glove SDK nicht verwenden, um TactGlove nur vibrieren zu lassen. Sie können TactGlove weiterhin verwenden, wenn Sie es bis zum vorherigen Unity-Leitfaden geschafft haben.

Die Anweisungen in diesem Dokument bieten Funktionen, die Ihnen helfen, eine bessere Haptik anzuwenden, wenn Ihre virtuellen Hände physische Aktionen ausführen.

Voraussetzung

Spezifikationen

  • Unity: 2022+
  • Hand, die physisch in einer Master-Slave-Struktur implementiert ist
  • bHaptics Plugin: 2.3.0+
    • Es enthält bereits das grundlegende bHaptics SDK und das bHaptics Physics Glove SDK.

Bevor Sie beginnen

hinweis

Wir gehen davon aus, dass Sie dem Unity-Leitfaden gefolgt sind, um Ihr Unity-Projekt einzurichten.

Stellen Sie sicher, dass diese Anforderungen in Ihrem Unity-Projekt erfüllt sind.

  • Die haptische Anwendung ist mit Ihrem Projekt verknüpft über den API Key und die App ID.
  • Das "[bhaptics]"-Prefab ist in Ihrer Szene vorhanden.

Prefab hinzufügen

  1. Gehen Sie im Project Window zu "Assets" → "Bhaptics" → "SDK2" → "Prefabs".
  2. Fügen Sie das "[bHapticsGlove]"-Prefab zu Ihrer Szene hinzu.
  3. Wählen Sie in der Hierarchie das hinzugefügte "[bHapticsGlove]" aus, dann sehen Sie im Inspector die Bhaptics Physics Glove-Komponente. Untitled
  4. Wählen Sie die Schaltfläche "Create New GloveHapticSettings". Daraufhin erscheinen die Glove-Haptikeinstellungen. Untitled

Diese standardmäßig festgelegten Werte funktionieren in einer typischen Umgebung ideal. Möglicherweise müssen Sie jedoch die Parameterwerte je nach Ihrer Projektumgebung anpassen, um ein gutes Gefühl zu erzielen.

Eine ausführlichere Beschreibung der Parameter finden Sie auf der BhapticsPhysicsGloveSettings-Seite in der Reference.

bHaptics auf Physics Hand anwenden

Je nachdem, wie die Physik Ihrer Hände implementiert ist, kann die Art und Weise, wie Sie Events registrieren, variieren.

Das gemeinsame Prinzip ist jedoch, dass der Motor in der Fingerspitze die passende Menge an Haptik bereitstellt, wenn die Fingerspitze eine Kollision erkennt.

Finden Sie ein GameObject mit einem Collider (oder Rigidbody), das sich an der Fingerspitze befindet, und hängen Sie dann eine Komponente an, die den folgenden Inhalt implementiert. Wenn das Collision-Event aufgerufen und die folgende Funktion ausgeführt wird, liefert der Handschuh Haptik.

Weitere Informationen zum Collision-Event in Unity finden Sie im Handbuch von Unity.

Je nach verwendetem Plugin gibt es möglicherweise Events, die aufgerufen werden, wenn ein Kollisionsereignis auftritt. Ebenso können Sie dies durch den Aufruf einer Funktion umsetzen, die die Haptik anwendet. Siehe unten.

hinweis

Der Handschuh hat die folgenden Motor-Mappings. Motor Index

SendEnterHaptic

Dieser Code ist eine Funktion, die wir unter der Annahme erstellt haben, dass sie in OnCollisionEnter verwendet wird.

private int fingerIndex;
private bool isLeft;

private void OnCollisionEnter(Collision collision)
{
// We typically use collision.relativeVelocity, but depending on how your hand physics are designed, you can use other overload functions.
BhapticsPhysicsGlove.Instance.SendEnterHaptic(isLeft ? PositionType.GloveL : PositionType.GloveR, fingerIndex, collision.relativeVelocity);
}

SendStayHaptic

Dieser Code ist eine Funktion, die wir unter der Annahme erstellt haben, dass sie in OnCollisionStay verwendet wird.

private int fingerIndex;
private bool isLeft;

private void OnCollisionStay(Collision collision)
{
BhapticsPhysicsGlove.Instance.SendStayHaptic(isLeft ? PositionType.GloveL : PositionType.GloveR, fingerIndex, slaveTransform, masterTransform);
}

SendExitHaptic

Dieser Code ist eine Funktion, die wir unter der Annahme erstellt haben, dass sie in OnCollisionExit verwendet wird.

private int fingerIndex;
private bool isLeft;

private void OnCollisionExit(Collision collision)
{
BhapticsPhysicsGlove.Instance.SendExitHaptic(isLeft ? PositionType.GloveL : PositionType.GloveR, fingerIndex);
}

Registrieren Sie die drei Events und testen Sie sie aus. Die Events werden ausgelöst, wenn die Fingerspitzen Kontakt herstellen.

Weitere Informationen zu diesen Haptik-Funktionen finden Sie in der Reference der Klasse BhapticsPhysicsGlove.