Leitfaden für Eingabeportierung für Unity

Sie können Ihre Eingabelogik mit einem von zwei Ansätzen auf Windows Mixed Reality portieren:

Allgemeine Input.GetButton- und Input.GetAxis-APIs

Unity verwendet derzeit seine allgemeinen Input.GetButton UND Input.GetAxis APIs, um Eingaben für das Oculus SDK und das OpenVR SDK verfügbar zu machen. Wenn Ihre Apps diese APIs bereits für die Eingabe verwenden, sind diese APIs der einfachste Weg zur Unterstützung von Bewegungscontrollern in Windows Mixed Reality. Sie müssen nur Schaltflächen und Achsen im Eingabe-Manager neu zuordnen.

Weitere Informationen finden Sie in der Unity-Schaltflächen-/Achsenzuordnungstabelle und in der Übersicht über die Common Unity-APIs.

Wichtig

Wenn Sie HP Reverb G2-Controller verwenden, finden Sie weitere Anweisungen zur Eingabezuordnung unter HP Reverb G2-Controller in Unity .

XR-Eingabe-APIs

Unity-Releases haben die XR auslaufen lassen. WSA-APIs zugunsten des XR SDK. Für neue Projekte empfiehlt es sich, die XR-Eingabe-APIs von Anfang an zu verwenden. Weitere Informationen finden Sie unter Unity XR-Eingabe.

Wenn Ihre App bereits benutzerdefinierte Eingabelogik für jede Plattform erstellt, können Sie die Windows-spezifischen APIs für räumliche Eingaben im Namespace UnityEngine.InputSystem.XR verwenden. Mit diesen APIs können Sie auf weitere Informationen zugreifen, z. B. Positionsgenauigkeit oder Quellart, um Hände und Controller in HoloLens voneinander zu trennen.

Hinweis

Wenn Sie HP Reverb G2-Controller verwenden, funktionieren alle Eingabe-APIs weiterhin mit Ausnahme von InteractionSource.supportsTouchpad, was false ohne Touchpaddaten zurückgibt.

Griffpose und Zeigerpose

Windows Mixed Reality unterstützt Motion Controller in verschiedenen Formfaktoren. Der Entwurf jedes Controllers unterscheidet sich in seiner Beziehung zwischen der Handposition des Benutzers und der natürlichen Vorwärtsrichtung, die Apps zum Zeigen beim Rendern des Controllers verwenden.

Um diese Controller besser darzustellen, können Sie zwei Arten von Posen für jede Interaktionsquelle untersuchen: Griffpose und Zeigerpose. Sie drücken alle Posenkoordinaten in Unity-Weltkoordinaten aus.

Griffhaltung

Die Griffhaltung stellt die Position der Handfläche dar, die von einer HoloLens erkannt wird, oder die Handfläche, die einen Bewegungscontroller hält. Verwenden Sie diese Pose bei immersiven Headsets, um die Hand des Benutzers oder ein Objekt in der Hand des Benutzers zu rendern, z. B. ein Schwert oder eine Waffe.

  • Die Griffposition ist der Handballzentriert, wenn der Controller natürlich gehalten wird, links oder rechts eingestellt, um die Position innerhalb des Griffs zu zentrieren.
  • Die rechte Achse der Griffausrichtung ist der Strahl, der für Ihre Handfläche normal ist, vorwärts von der linken Handfläche, rückwärts von der rechten Handfläche, wenn Sie Ihre Hand vollständig öffnen, um eine flache Fünf-Finger-Pose zu bilden.
  • Die Vorwärtsachse der Griffausrichtung ist der Strahl, der durch den Schlauch zeigt, der von den Fingern ohne Daumen gebildet wird, wenn Sie Die Hand teilweise schließen, als ob Sie den Controller halten.
  • Die nach oben ausgerichtete Achse der Griffausrichtung ist die nach oben gerichtete Achse, die von den Rechts- und Vorwärtsdefinitionen impliziert wird.

Greifen Sie über unitys XR auf die Griffposition zu . InputTracking.GetNodeStates-APIs , z . B. XRNodeState.TryGetPosition oder XRNodeState.TryGetRotation.

Zeigerpose

Die Zeigerpose stellt die Spitze des Controllers dar, der nach vorne zeigt. Diese Pose wird am besten zum Raycasten verwendet, das auf die Benutzeroberfläche zeigt, wenn Sie das Controllermodell selbst rendern.

Die Zeigerpose ist in Unity nur über die Windows MR-spezifische API verfügbar, sourceState.sourcePose.TryGetPosition/Rotationdie als Argument übergeben InteractionSourceNode.Pointer wird.

Weitere Informationen