Spostamento oculare supportato in MRTK - MRTK2
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. |
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.
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. |
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. |
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
- Configurazione MRTK di base per l'uso del rilevamento oculare
- Selezione di destinazione supportata dall'occhio