Guida alla conversione dell'input per Unity
È possibile convertire la logica di input in Windows Mixed Reality usando uno dei due approcci seguenti:
- Le API Input.GetButton o Input.GetAxis generali di Unity che si estendono su più piattaforme.
- Le API UnityEngine.XRModule , che offrono dati più avanzati specificamente per i controller del movimento e le mani di HoloLens.
API General Input.GetButton e Input.GetAxis
Unity attualmente usa le API e Input.GetAxis
generali Input.GetButton
per esporre l'input per Oculus SDK e OpenVR SDK. Se le app usano già queste API per l'input, queste API rappresentano il percorso più semplice per supportare i controller del movimento in Windows Mixed Reality. È sufficiente modificare il mapping di pulsanti e assi in Gestione input.
Per altre informazioni, vedere la tabella di mapping dei pulsanti/assi di Unity e la panoramica delle API Di Unity comuni.
Importante
Se si usano controller HP Reverb G2, vedere HP Reverb G2 Controllers in Unity per altre istruzioni sul mapping di input.
API di input XR
Le versioni di Unity hanno eliminato gradualmente XR. API WSA a favore di XR SDK. Per i nuovi progetti, è consigliabile usare le API di input XR dall'inizio. Per altre informazioni, vedere Input XR di Unity.
Se l'app compila già logica di input personalizzata per ogni piattaforma, è possibile usare le API di input spaziale specifiche di Windows nello spazio dei nomi UnityEngine.InputSystem.XR . Queste API consentono di accedere ad altre informazioni, ad esempio l'accuratezza della posizione o il tipo di origine, per indicare le mani e i controller a parte in HoloLens.
Nota
Se si usano controller HP Reverb G2, tutte le API di input continuano a funzionare, ad eccezione InteractionSource.supportsTouchpad
di , che restituisce false senza dati del touchpad.
Posizione del grip e posizione del puntatore
Windows Mixed Reality supporta i controller di movimento in diversi fattori di forma. La progettazione di ogni controller è diversa dalla relazione tra la posizione della mano dell'utente e la direzione in avanti naturale usata dalle app per puntare durante il rendering del controller.
Per rappresentare meglio questi controller, è possibile analizzare due tipi di pose per ogni origine di interazione, posizione del grip e posizione del puntatore. È possibile esprimere tutte le coordinate della posizione nelle coordinate del mondo unity.
Posizione del grip
La posizione del grip rappresenta la posizione del palmo di una mano rilevata da un holoLens o del palmo che tiene premuto un controller di movimento. Nei visori VR immersive usare questa posa per eseguire il rendering della mano dell'utente o di un oggetto tenuto nella mano dell'utente, ad esempio una spada o una pistola.
- La posizione del grip è il centro del palmo quando si tiene il controller naturalmente, regolato a sinistra o a destra per allineare al centro la posizione all'interno del grip.
- L'asse destro dell'orientamento del grip è il raggio normale per il palmo, in avanti dal palmo sinistro, all'indietro dal palmo destro, quando si apre completamente la mano per formare una posa a cinque dita piatta.
- L'asse in avanti dell'orientamento del grip è il raggio che punta in avanti attraverso il tubo formato dalle dita non pollice quando si chiude parzialmente la mano, come se si tiene premuto il controller.
- L'asse su dell'orientamento del grip è l'asse su implicito nelle definizioni destra e avanti.
Accedere alla posa del grip tramite XR di Unity. API InputTracking.GetNodeStates , ad esempio XRNodeState.TryGetPosition o XRNodeState.TryGetRotation.
Posizione puntatore
La posizione del puntatore rappresenta la punta del controller che punta in avanti. Questa posizione viene usata meglio per eseguire il cast dei raggi che puntano all'interfaccia utente quando si esegue il rendering del modello controller stesso.
La posizione del puntatore è disponibile in Unity solo tramite l'API specifica di MR di Windows, sourceState.sourcePose.TryGetPosition/Rotation
, passando InteractionSourceNode.Pointer
come argomento .