Zum Hauptinhalt springen

Inverse3 und VerseGrip-Cursor

Das „ Haply -Inverse-Unity-Paket“ stellt spezielle Cursor-Komponenten für die Geräte „ Inverse3 “ und „VerseGrip“ bereit, die eine präzise Steuerung und Interaktion in Unity-Umgebungen ermöglichen. Diese Komponenten – „Inverse3 -Cursor“ und „VerseGrip-Cursor“ – passen Position und Rotation von Spielobjekten dynamisch an die Daten der jeweiligen Gerätecontroller an.

Überblick​

Cursor-Komponenten fungieren als Brücke zwischen den physischen Geräten Haply und den virtuellen Spielobjekten in Unity. Sie übersetzen die Positions- und Rotationsdaten der Geräte in Bewegungen und Ausrichtungen der Spielobjekte. Diese Übersetzung ermöglicht es den Nutzern, intuitiv mit der virtuellen Umgebung zu interagieren, wobei ihre physischen Bewegungen durch virtuelle Reaktionen abgebildet werden.

CursorBase-Klasse​

Den Kern der Cursor-Komponenten bildet die Klasse CursorBase, die die grundlegende Funktionalität bereitstellt, welche Inverse3Cursor und VerseGripCursor gemeinsam nutzen. Dazu gehören die Verwaltung der Geräteverknüpfung, die Instanziierung des Modells und die Steuerung der Sichtbarkeit.

Wichtige Eigenschaften und Methoden​

  • Gerät: Verknüpft den Cursor mit dem steuernden Gerät und wird zur Laufzeit automatisch gesetzt.
  • ModellPrefab: Legt ein Prefab für das Cursor-Modell fest, das automatisch als untergeordnetes Objekt von ModelParent instanziiert wird.
  • ModelParent: Legt die übergeordnete Transformation für das instanziierte Modell-Prefab fest. Ist dieser Parameter nicht gesetzt, wird standardmäßig die Transformation des Cursors verwendet.
  • Modell: Verweist direkt auf ein bereits in der Szene vorhandenes Cursor-Modell. Ist dieses Feld aktiviert, wird die Instanziierung von ModelPrefab übersprungen.
  • HideControllerModel: Steuert die Sichtbarkeit des Cursor-Modells und ermöglicht es, dieses je nach den Anforderungen des Spiels dynamisch ein- und auszublenden.
  • Radius: Gibt den Radius des Cursor-Modells an, sofern es sich um eine Kugel handelt. Er wird anhand der Mesh-Grenzen des Modells berechnet.
  • Glattheit: PositionSmoothness und RotationSmoothness bieten Optionen zur Glättung der Position und Drehung des Cursors und verbessern so die Benutzererfahrung.

Hinweis: Die korrekte Referenzierung des Cursor-Modells in der Cursor-Komponente ist entscheidend, um unerwartetes Verhalten zu vermeiden.

Cursor

Das mit dem Haptic Rig erstellte Standard-Cursor-Modell zeigt farbige Punkte zur Darstellung der drei Achsen: „Forward“ (blau), „Up“ (grün) und „Right“ (rot). Dies erleichtert die Visualisierung der Ausrichtung des Geräts in der virtuellen Umgebung. Bei einem kalibrierten VerseGrip sollten „Forward“ mit der Zeigerichtung und „Up“ mit der Oberseite übereinstimmen.

Inverse3-Cursor-Komponente​

Inverse3Cursor ist speziell auf das Gerät „ Inverse3 “ ausgelegt und aktualisiert die lokale Position des Cursors in Unity, sodass sie der physischen Position des Geräts entspricht.

Die Einstellung PositionSmoothness ermöglicht es, die Geschmeidigkeit der Cursorbewegung anzupassen. Dadurch wird das Benutzererlebnis verbessert, indem die Reaktionsfähigkeit des Cursors auf körperliche Bewegungen gesteuert wird.

VerseGrip-Cursor-Komponente​

VerseGripCursor Erweitert die Funktionalität auf das Gerät VerseGrip und aktualisiert die Drehung des Cursors in Unity, sodass sie die physische Drehung des Geräts widerspiegelt.

Die Einstellung useDeviceLocalSpace ermöglicht es, zwischen der Ausrichtung am Bezugssystem und der Ausrichtung am übergeordneten Objekt zu wählen. Dies erhöht die Gestaltungsflexibilität.

Die Einstellung RotationSmoothness Steuert die Laufruhe der Cursorrotation und ermöglicht es Entwicklern, die Reaktionsfähigkeit des Cursors auf Änderungen der physischen Ausrichtung von VerseGrip fein abzustimmen.

Implementierungsdetails​

Bei der Initialisierung instanziieren die Cursor-Komponenten das angegebene ModelPrefab als untergeordnetes Objekt von ModelParent, sofern Model nicht zugewiesen ist. So wird die visuelle Darstellung in der Szene gewährleistet. Diese Komponenten synchronisieren sich mit den zugehörigen Gerätesteuerungen und passen Position und Drehung des Cursors in Echtzeit an die physischen Bewegungen des Geräts an.

Beide Komponenten können demselben GameObject zugewiesen werden, um dessen Position und Rotation zu steuern, oder verschiedenen GameObjects für unterschiedliche Anwendungsfälle. So erhalten Entwickler ein vielseitiges Werkzeug, um in Unity immersive haptische Erlebnisse zu gestalten.