Sistema principale - MRTK2

Al centro del sistema di input è InputSystem, che è un servizio responsabile dell'inizializzazione e dell'utilizzo di tutte le funzionalità correlate all'input associate a MRTK.

Nota

Si presuppone che i lettori abbiano già letto e abbiano una conoscenza di base della terminologia .

Questo servizio è responsabile di:

  • Lettura del profilo di sistema di input
  • Avvio dei provider di dati configurati , ad esempio Windows Mixed Reality Device Manager e OpenVR Device Manager.
  • Istanza di GazeProvider, che è un componente responsabile della fornitura di informazioni sullo stile di HoloLens (prima generazione), oltre alle informazioni sullo sguardo visivo dello stile HoloLens 2.
  • Istanza di FocusProvider, che è un componente responsabile della determinazione degli oggetti con stato attivo. Questo argomento è descritto in modo più approfondito nella sezione puntatori e messa a fuoco della documentazione.
  • Fornire punti di registrazione per tutti gli eventi di input (come listener globali).
  • Fornire funzionalità di invio eventi per tali eventi di input.

Eventi di input

Gli eventi di input vengono in genere attivati su due canali diversi:

Oggetti in stato attivo

Gli eventi possono essere inviati direttamente a un GameObject con stato attivo. Ad esempio, un oggetto potrebbe avere uno script che implementa IMixedRealityTouchHandler. Questo oggetto otterrebbe eventi di tocco quando si concentra su una mano che si trova vicino. Questi tipi di eventi vanno "su" la gerarchia GameObject finché non trova un GameObject in grado di gestire l'evento.

Questa operazione viene eseguita usando ExecuteHierarchy dall'implementazione predefinita del sistema di input.

Listener globali

Gli eventi possono essere inviati ai listener globali. È possibile registrare tutti gli eventi di input usando l'interfaccia del sistema di IMixedRealityEventSystem input. È consigliabile usare il metodo RegisterHandler per la registrazione per gli eventi globali: la funzione deprecata Register causerà che i listener ricevano una notifica di TUTTI gli eventi di input, anziché solo gli eventi di input di un tipo specifico (dove il tipo è definito dall'interfaccia evento).

Si noti che i listener di fallback sono un altro tipo di listener globali che sono sconsigliati perché riceveranno ogni singolo evento di input che non è stato gestito altrove nella scena.

Ordine di invio di eventi

In genere, gli eventi vengono inviati ai listener nel modo seguente. Si noti che se uno dei passaggi seguenti contrassegna l'evento come gestito, il processo di invio eventi si arresta.

  1. L'evento viene inviato ai listener globali.
  2. L'evento viene inviato ai dialoghi modali dell'oggetto incentrato.
  3. L'evento viene inviato all'oggetto incentrato.
  4. L'evento viene inviato ai listener di fallback.

Gestione dispositivi e provider di dati

Queste entità sono responsabili dell'interfaccia con API di livello inferiore ,ad esempio API di Windows Mixed Reality o API OpenVR, e la conversione dei dati da tali sistemi in quelle che soddisfano le astrazioni di input di livello superiore di MRTK. Sono responsabili del rilevamento, della creazione e della gestione della durata dei controller.

Il flusso di base di una gestione dispositivi implica:

  1. Gestione dispositivi viene creata un'istanza dal servizio di sistema di input.
  2. Gestione dispositivi registra con il sistema sottostante, ad esempio la gestione dispositivi Windows Mixed Reality registra per gli eventi di input e movimento.
  3. Crea controller che individua dal sistema sottostante (ad esempio il provider potrebbe rilevare la presenza di mani articolate)
  4. Nel ciclo Update() chiamare UpdateController() per eseguire il polling per il nuovo stato del sistema sottostante e aggiornarne la rappresentazione del controller.