Sistema principale - MRTK2

Al centro del sistema di input è inputSystem, che è un servizio responsabile dell'inizializzazione e del funzionamento 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 sezione terminologia .

Questo servizio è responsabile di:

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

Eventi di input

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

Oggetti con 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 otterrà eventi di tocco quando viene messa a fuoco da una mano vicina. Questi tipi di eventi diventano "su" nella gerarchia GameObject finché non trova un GameObject in grado di gestire l'evento.

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

Listener globali

Gli eventi possono essere inviati ai listener globali. È possibile eseguire la registrazione per 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à la notifica di TUTTI gli eventi di input da parte dei listener, anziché solo degli eventi di input di un particolare tipo (dove il tipo è definito dall'interfaccia evento).

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

Ordine di invio degli 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 degli eventi viene arrestato.

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

Gestori di dispositivi e provider di dati

Queste entità sono responsabili dell'interazione con le 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 rientrano nelle 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 un gestore di dispositivi prevede:

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