Condividi tramite


Spostamento oculare supportato in MRTK - MRTK2

MRTK

Si supponga di leggere informazioni su uno slate e quando si raggiunge la fine del testo visualizzato, il testo scorre automaticamente verso l'alto per visualizzare più contenuto. In alternativa, è possibile ingrandire in modo fluente la posizione in cui si sta guardando. La mappa regola automaticamente anche il contenuto per mantenere gli elementi di interesse all'interno del campo di visualizzazione. Un'altra applicazione interessante è l'osservazione senza mani degli ologrammi 3D portando automaticamente le parti dell'ologramma che si sta guardando davanti. Questi sono alcuni degli esempi descritti in questa pagina nel contesto della navigazione supportata dagli occhi.

Le descrizioni seguenti presuppongono che si abbia già familiarità con la configurazione del tracciamento oculare nella scena MRTK e con le nozioni di base sull'accesso ai dati di tracciamento oculare in MRTK Unity. Gli esempi illustrati di seguito fanno parte della EyeTrackingDemo-03-Navigation scena Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation.

Riepilogo: Scorrimento automatico del testo, panoramica supportata dagli occhi e zoom di una mappa virtuale, rotazione 3D diretta con sguardo fisso a mani libere.

Scorrimento automatico

Lo scorrimento automatico consente all'utente di scorrere i testi senza sollevare un dito. È sufficiente continuare la lettura e il testo scorrerà automaticamente verso l'alto o verso il basso a seconda della posizione in cui l'utente sta cercando. È possibile iniziare dall'esempio fornito in EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes). In questo esempio viene utilizzato un componente TextMesh per consentire il caricamento flessibile e la formattazione di un nuovo testo. Per abilitare lo scorrimento automatico, è sufficiente aggiungere i due script seguenti al componente collisore della casella di testo:

ScrollRectTransf

Per scorrere un controllo TextMesh o più in generale un componente RectTransform , è possibile usare lo script ScrollRectTransf . Se vuoi scorrere una trama anziché rectTransform, usa ScrollTexture anziché ScrollRectTransf. Di seguito sono descritti in dettaglio i parametri di ScrollRectTransf disponibili nell'editor di Unity:

Parametri Descrizione
LimitPanning Se abilitata, arresterà il contenuto scorrevole al limite.
RectTransfToNavigate Riferimento a RectTransform in cui scorrere.
RefToViewport Riferimento al rectTransform padre del contenuto scorrevole per determinare l'offset e il limite corretti.
AutoGazeScrollIsActive Se abilitato, il testo scorrerà automaticamente se l'utente esamina un'area attiva , ad esempio la parte superiore e inferiore del pannello di scorrimento se la velocità di scorrimento verticale non è zero.
ScrollSpeed_x Se impostato su un valore diverso da zero, lo scorrimento orizzontale verrà abilitato. I valori negativi indicano una modifica nella direzione di scorrimento: da sinistra a destra e da destra a sinistra.
ScrollSpeed_y Se impostato su un valore diverso da zero, lo scorrimento verticale verrà abilitato. I valori negativi indicano una modifica nella direzione di scorrimento: verso il basso o verso il basso verso l'alto.
MinDistFromCenterForAutoScroll Distanza minima normalizzata in x e y dal centro della casella di selezione della destinazione (0, 0) per scorrere. Pertanto, i valori devono essere compresi tra 0 (scorrimento sempre) e 0,5 (senza scorrimento).
UseSkimProofing Se abilitata, impedisce movimenti di scorrimento improvvisi quando si guarda rapidamente intorno. Questo può rendere lo scorrimento meno reattivo. Può essere ottimizzato con il valore SkimProofUpdateSpeed .
SkimProofUpdateSpeed Minore è il valore, più lentamente lo scorrimento accelera dopo lo skimming. Valore consigliato: 5.

Configurazione dello scorrimento supportata dall'occhio in Unity

EyeTrackingTarget

L'associazione del componente EyeTrackingTarget consente di gestire in modo flessibile gli eventi correlati allo sguardo fisso. L'esempio di scorrimento illustra lo scorrimento del testo che inizia quando l'utente esamina il pannello e si arresta quando l'utente sta guardando da esso. Configurazione dello scorrimento supportata dagli occhi in Unity: EyeTrackingTarget

Panoramica e zoom supportati per lo sguardo fisso

Chi non ha usato prima una mappa virtuale per cercare la propria casa o per esplorare luoghi completamente nuovi? Il tracciamento oculare ti permette di immergerti direttamente nelle parti che ti interessano e una volta ingrandita, puoi seguire senza problemi il corso di una strada per esplorare il tuo quartiere! Ciò non è utile solo per esplorare le mappe geografiche, ma anche per esaminare i dettagli nelle fotografie, nelle visualizzazioni dei dati o anche nelle immagini mediche in streaming live. Per usare questa funzionalità nell'app è facile. Per il rendering del contenuto in una trama (ad esempio, una foto, dati trasmessi), è sufficiente aggiungere lo script PanZoomTexture . Per un oggetto RectTransform , usare PanZoomRectTransf. L'estensione della funzionalità Di scorrimento automatico consente essenzialmente di scorrere verticalmente e orizzontalmente contemporaneamente e ingrandire il contenuto intorno al punto di attivazione corrente dell'utente.

Parametri Descrizione
LimitPanning Se abilitata, arresterà il contenuto scorrevole al limite.
HandZoomEnabledOnStartup Indica se i movimenti della mano vengono abilitati automaticamente per eseguire un movimento di zoom. È possibile disabilitarlo inizialmente per evitare di attivare accidentalmente le azioni di zoom.
RendererOfTextureToBeNavigated Renderer di riferimento della trama da esplorare.
Zoom_Acceleration Accelerazione zoom che definisce la ripidazza del mapping delle funzioni di velocità logistica.
Zoom_SpeedMax Velocità massima di zoom.
Zoom_MinScale Scala minima della trama per lo zoom avanti, ad esempio 0,5f (metà delle dimensioni originali).
Zoom_MaxScale Scala massima della trama per lo zoom indietro, ad esempio 1f (dimensioni originali) o 2,0f (doppia dimensione originale).
Zoom_TimeInSecToZoom Zoom temporizzato: una volta attivato, verrà eseguito uno zoom avanti/indietro per la quantità di tempo specificata in secondi.
Zoom_Gesture Tipo di movimento della mano da usare per eseguire lo zoom avanti/indietro.
--- ---
Pan_AutoScrollIsActive Se abilitato, il testo scorrerà automaticamente se l'utente esamina un'area attiva , ad esempio la parte superiore e inferiore del pannello di scorrimento se la velocità di scorrimento verticale non è zero.
Pan_Speed_x Se impostato su un valore diverso da zero, lo scorrimento orizzontale verrà abilitato. I valori negativi indicano una modifica nella direzione di scorrimento: da sinistra a destra e da destra a sinistra.
Pan_Speed_y Se impostato su un valore diverso da zero, lo scorrimento verticale verrà abilitato. I valori negativi indicano una modifica nella direzione di scorrimento: verso il basso o verso il basso verso l'alto.
Pan_MinDistFromCenter Distanza minima normalizzata in x e y dal centro della casella di selezione della destinazione (0, 0) per scorrere. Pertanto, i valori devono essere compresi tra 0 (scorrimento sempre) e 0,5 (senza scorrimento).
UseSkimProofing Se abilitata, impedisce movimenti di scorrimento improvvisi quando si guarda rapidamente intorno. Questo può rendere lo scorrimento meno reattivo. Può essere ottimizzato con il valore SkimProofUpdateSpeed .
SkimProofUpdateSpeed Minore è il valore, più lentamente lo scorrimento accelera dopo lo skimming. Valore consigliato: 5.

Configurazione panoramica e zoom supportata dall'occhio in Unity

Rotazione 3D basata sull'attenzione

Immagina di guardare un oggetto 3D e le parti che vuoi vedere più strettamente ruotare verso di te , come se il sistema leggesse la tua mente e sa girare l'elemento verso di te! Questo è l'idea di rotazioni 3D basate sull'attenzione che consentono di analizzare tutto il lato di un ologramma senza sollevare un dito. Per abilitare questo comportamento, aggiungere semplicemente lo script OnLookAtRotateByEyeGaze alla parte di GameObject con un componente Collider . È possibile modificare diversi parametri elencati di seguito per limitare la velocità e la velocità in cui verrà trasformato l'ologramma.

Come si può immaginare, avere questo comportamento attivo in ogni momento può diventare rapidamente piuttosto distratto in una scena affollata. Questo è il motivo per cui è possibile iniziare con questo comportamento disabilitato e quindi abilitarlo rapidamente usando i comandi vocali. In alternativa, è stato aggiunto un esempio in EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) per usare TargetMoveToCamera per cui è possibile selezionare una destinazione focalizzata e vola davanti a voi, semplicemente dire "Vieni a me".

Una volta nella modalità vicina, la modalità di rotazione automatica viene abilitata automaticamente. In questa modalità, è possibile osservarlo da tutti i lati semplicemente sporgendo e guardandolo, camminando intorno a esso o raggiungendolo per afferrarlo e ruotarlo con la mano. Quando si ignora la destinazione (guardare & pizzica o si dice "Invia indietro"), tornerà alla sua posizione originale e smetterà di reagire a voi da lontano.

Parametri Descrizione
SpeedX Velocità di rotazione orizzontale.
Veloce Velocità di rotazione verticale.
InverseX Per inversare la direzione di rotazione orizzontale.
Inverso Per inversare la direzione di rotazione verticale.
RotationThreshInDegrees Se l'angolo tra "Gaze to Target" e "Camera to Target" è minore di questo valore, non fare nulla. Si tratta di impedire piccole rotazioni jittery..
MinRotX Angolo di rotazione orizzontale minimo. Si tratta di limitare la rotazione in direzioni diverse.
MaxRotX Angolo di rotazione orizzontale massimo. Si tratta di limitare la rotazione in direzioni diverse.
MinRotY Angolo di rotazione verticale minimo per limitare la rotazione intorno all'asse x.
MaxRotY Angolo di rotazione verticale massimo per limitare la rotazione intorno all'asse y.

Configurazione di rotazione 3D supportata dall'occhio in Unity

In riepilogo, gli script precedenti devono consentire di iniziare a usare lo sguardo oculare per varie attività di navigazione di input, ad esempio lo scorrimento di testi, lo zoom e la panoramica delle trame, nonché la rotazione degli ologrammi 3D.

Vedi anche


Tornare a "Rilevamento oculare nel MixedRealityToolkit"