Seit dem 9. Dezember 2019 wurde nach und nach auch in Europa die Version 12 für die Oculus Quest ausgerollt. Die Release Notes verkünden vor allem zwei spektakuläre Features, zum einen das Streaming per Kabel und zum anderen Hand Tracking.
Die Funktion seine eigenen Hände in VR als Eingabegerät zu verwenden ist noch als “experimental feature” gekennzeichnet. Wie kannst du bereits vorab sowohl als Anwender, als auch als Entwickler das Hand Tracking für die Oculus Quest verwenden?
Hand Tracking aktivieren
Zum Aktivieren der Hand Tracking Funktion auf der Oculus Quest musst du dich in die Einstellungen der Brille begeben. Setze die Brille auf und wähle den Menüpunkt Einstellungen > Alle ansehen, danach auf der linken Seite “Info” wählen. Überprüfe welche Software Version auf deiner Oculus Quest derzeit installiert ist. Es ist wichtig, dass du hier mindestens Version 12 installiert hast. In der ersten Zeile hast du auch die Möglichkeit die Software zu aktualisieren, ist der Button nicht selektierbar, so hast du die aktuelle Version installiert.
Oculus Quest Handtracking aktivieren
Direkt oberhalb des “About”-Buttons findest du “Experimentelle Funktionen”. Hier kannst du das Hand Tracking für die Oculus Quest aktivieren. Selektieren den Schieberegler beim Punkt Hand-Tracking um die Funktion zu aktivieren. Es kann sein, dass du danach deine VR-Brille neu starten musst. Danach hast du die Möglichkeit mit deinen Händen in der VR Welt zu navigieren. In der Bibliothek der Apps findest du eine Anwendung die dir eine Einführung zum Thema Hand Tracking gibt.
Übersicht der Gesten
Die Hand Tracking Funktion erlaubt es dir als Entwickler beispielsweise UI Elemente so zu gestalten, dass sie sowohl mit der Hand als auch per Controller gesteuert werden können. Solche Interaktionen sind Selektieren, Klicken, Scrollen, Drag and Drop, Return oder auch das Verlassen einer Anwendung. Die Hand wird zu einem Laserpointer, dieser zeigt dann einen Cursor auf den Oberflächen an.
Pinch Geste zum Selektieren
Pinch Geste
Geste um Hauptmenü aufzurufen
Hauptmenü Geste
Hand Tracking in Unity
Die Funktion des Hand Trackings kannst du auch als Entwickler für deine Oculus App verwenden. Solltest du dir bisher noch keine Anwendung für die Oculus Quest in Unity erstellt haben, so empfehle ich dir unseren Quickstart zum Erstellen deiner eigenen Oculus Quest Anwendung.
Beispiel Scene
Öffne aus dem Ordner der Oculus Integration im Unity Asset Ordner die Scene mit dem Namen “HandsInteractionTrainScene”. In dieser Scene hast du bereits ein Beispiel wie Hand Tracking für die Oculus Quest in Unity umgesetzt werden kann. Es ist durchaus empfehlenswert, wenn du dieses Beispiel einmal auf deiner Quest testest. Baue dazu die Anwendung über die Build Settings und führe sie auf der VR Brille aus. Wichtig: Klicke in der Hierarchie auf OVRCameraRig und selektiere im OVRManager Script bei Input Hand Tracking Support „Controller and Hands“. Nur wenn du das auswählst funktioniert auch der Wechsel auf die Hände.
Handtracking Beispielscene
Scene erstellen
Starte mit einer neuen Unity Scene und ziehe auf deine Hierarchie das OVRCameraRig Prefab. Du findest dieses Prefab im Ordner Oculus/VR/Prefabs. Solltest du in der Hierarchie noch eine MainCamera haben dann lösche diese, denn das OVRCameraRig Prefab hat selbst eine Kamera. Darüber Hinaus kannst du auch noch beim OVRCameraRig im Manager bei Tracking den Origin Type auf Floor Level setzen.
Berechtigungseinstellungen
Damit du die Hände als Eingabegerät verwenden kannst, musst du innerhalb deines Projekts die Berechtigung dafür aktivieren. Hierfür musst du die AndroidManifest.xml Datei verwenden. Zusätzlich zur Anpassung der Manifest Datei muss der Nutzer auch das Hand Tracking auf der Oculus Quest in den Einstellungen aktivieren.
Wichtig: Diese Einstellung wird für das gesamte Projekt aktiviert, das bedeutet also egal in welchem Umfang du das Hand Tracking in der App verwendest, der Nutzer muss es aktivieren.
Diese Änderungen musst du in der AndroidManifest.xml durchführen:
- OVRCameraRig Prefab selektieren
- Im OVR Manager (script) in der Hand Tracking Support Liste wählst du Controllers and Hands aus.
Wenn die Input Sektion nicht verfügbar ist, dann liegt es daran, dass du in deinem Unity Projekt die Plattform nicht auf Android ausgewählt hast. Du findest dies auf File > Build Settings, selektiere das Android Icon und klicke auf Switch Platform.
Optionen sind:
- Controllers Only: Der Nutzer darf nur die Controller verwenden. Mit dieser Einstellung wird keine Hand Tracking Berechtigungseinstellung zur Manifest Datei hinzugefügt
- Controllers and Hands: Die Anwendung unterstützt beides, sowohl die Controller als auch die Hände werden zum Eingabegerät. Sobald dies ausgewählt wird enthält die Manifest Datei den Eintrag “oculus.software.handtracking” mit der Berechtigung gesetzt auf android:required=”false”.
- Hands Only: Lässt die Verwendung der Hände zu. Dadurch wird der Eintrag „oculus.software.handtracking“ im Manifest auf android:required=”true” gesetzt. Diese Einstellung kannst du zwar als Entwickler verwenden, wird aber nicht von Oculus beim Submission Prozess für den Oculus Store zugelassen.
AndroidManifest.xml Beispiel Code
Eine neue Manifest Datei kannst du dir auch über Oculus > Tools > Create store-compatible AndroidManifest.xml erstellen. Dieser Schritt generiert dann automatisch eine Manifest Datei mit der derzeitigen selektierten Hand Tracking Berechtigung.
Hände in Scene einfügen
Die Hände musst du noch zusätzlich in Form des OVRHandPrefabs zu deiner Scene hinzufügen.
- Im Oculus/VR/Prefabs Ordner ziehst du das OVRHandPrefab unter jeden Hand Anker. Diese heißen LeftHandAnchor und RightHandAnchor und du findest sie unter OVRCameraRig > TrackingSpace im Hierarchie Fenster.
- Wähle das OVRHandPrefab aus um die Einstellungen im Inspektor zu öffnen. Du findest unter OVRHand, OVRSkeleton und OVRMesh die Möglichkeit den jeweiligen Hand Typ zu wählen. Selektiere hier Hand Left bzw. Hand Right passend zum jeweiligen Hand Anker.
Sobald du das OVRHandPrefab hinzugefügt und die richtigen Einstellungen festgelegt hast, kannst du die Hände als Eingabegerät der Oculus Quest nutzen.
Handtracking eigene Unity Scene