Spostamento supportato dagli occhi 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. Oppure è possibile ingrandire fluentemente dove si sta guardando. La mappa inoltre regola automaticamente il contenuto per mantenere gli elementi di interesse all'interno del campo visivo. Un'altra applicazione interessante è l'osservazione a mani libere degli ologrammi 3D portando automaticamente le parti dell'ologramma che si sta guardando nella parte anteriore. 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 come configurare il tracciamento oculare nella scena MRTK e con le nozioni di base per l'accesso ai dati di tracciamento oculare in MRTK Unity.
Gli esempi illustrati di seguito fanno tutti parte della EyeTrackingDemo-03-Navigation
scena (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).
Sommario: Scorrimento automatico del testo, panoramica supportata con lo sguardo fisso e zoom di una mappa virtuale, rotazione 3D diretta con lo sguardo fisso.
Scorrimento automatico
Lo scorrimento automatico consente all'utente di scorrere i testi senza sollevare un dito.
Basta continuare a leggere e il testo scorre automaticamente verso l'alto o verso il basso a seconda di dove l'utente sta cercando.
È possibile iniziare dall'esempio fornito in EyeTrackingDemo-03-Navigation
(Assets/MRTK/Examples/Demos/EyeTracking/Scenes).
In questo esempio viene usato un componente TextMesh per consentire il caricamento e la formattazione flessibili del nuovo testo.
Per abilitare lo scorrimento automatico, è sufficiente aggiungere i due script seguenti al componente collider della casella di testo:
ScrollRectTransf
Per scorrere un elemento TextMesh o, più in generale, un componente RectTransform , è possibile usare lo script ScrollRectTransf . Se vuoi scorrere una trama invece di RectTransform, usa ScrollTexture invece di ScrollRectTransf. Di seguito vengono illustrati in modo più dettagliato i parametri di ScrollRectTransf disponibili in Unity Editor:
Parametri | Descrizione |
---|---|
LimitPanning | Se abilitato, interromperà il contenuto scorrevole al suo limite. |
RectTransfToNavigate | Riferimento a RectTransform in cui scorrere. |
RefToViewport | Riferimento all'oggetto 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 rispetto a 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: da alto a basso o verso il basso verso l'alto. |
MinDistFromCenterForAutoScroll | Distanza minima normalizzata in x e y dal centro della casella di hit 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 ci si guarda rapidamente intorno. In questo modo, tuttavia, lo scorrimento potrebbe risultare meno reattivo. Può essere ottimizzato con il valore SkimProofUpdateSpeed . |
SkimProofUpdateSpeed | Più basso è il valore, più lento sarà lo scorrimento dopo lo skimming. Valore consigliato: 5. |
EyeTrackingTarget
Il collegamento del componente EyeTrackingTarget consente di gestire in modo flessibile gli eventi correlati allo sguardo fisso.
L'esempio di scorrimento illustra il testo di scorrimento che inizia quando l'utente esamina il pannello e si arresta quando l'utente si allontana da esso.
Panoramica e zoom supportati per lo sguardo fisso
Chi non ha mai usato una mappa virtuale prima di cercare la propria casa o esplorare luoghi completamente nuovi? Il tracciamento oculare ti consente di immergerti direttamente esattamente nelle parti a cui sei interessato e, una volta ingrandito, puoi seguire senza problemi il corso di una strada per esplorare il tuo quartiere! Questo è utile non solo per esplorare le mappe geografiche, ma anche per controllare i dettagli in fotografie, visualizzazioni dei dati o persino immagini mediche in streaming live. Usare questa funzionalità nell'app è facile. Per il contenuto sottoposto a rendering in una trama (ad esempio, una foto, dati trasmessi in streaming), è sufficiente aggiungere lo script PanZoomTexture . Per un oggetto RectTransform usare PanZoomRectTransf. Estendendo la funzionalità Scorrimento automatico , è essenzialmente possibile scorrere sia verticalmente che orizzontalmente contemporaneamente e ingrandire il contenuto proprio intorno al punto attivo corrente dell'utente.
Parametri | Descrizione |
---|---|
LimitPanning | Se abilitato, interromperà il contenuto scorrevole al suo limite. |
HandZoomEnabledOnStartup | Indica se i movimenti della mano vengono abilitati automaticamente per eseguire un movimento di zoom. È possibile disabilitarla in un primo momento per evitare di attivare accidentalmente azioni di zoom. |
RendererOfTextureToBeNavigated | Renderer di riferimento della trama da esplorare. |
Zoom_Acceleration | Accelerazione dello zoom che definisce la ripidità 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 (dimensione originale) o 2,0f (doppio della dimensione originale). |
Zoom_TimeInSecToZoom | Zoom temporizzato: dopo l'attivazione, verrà eseguito uno zoom avanti/indietro per la quantità di tempo specificata in secondi. |
Zoom_Gesture | Tipo di movimento della mano da usare per 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 rispetto a 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: da alto a basso o verso il basso verso l'alto. |
Pan_MinDistFromCenter | Distanza minima normalizzata in x e y dal centro della casella di hit 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 ci si guarda rapidamente intorno. In questo modo, tuttavia, lo scorrimento potrebbe risultare meno reattivo. Può essere ottimizzato con il valore SkimProofUpdateSpeed . |
SkimProofUpdateSpeed | Più basso è il valore, più lento sarà lo scorrimento dopo lo skimming. Valore consigliato: 5. |
Rotazione 3D basata sull'attenzione
Immagina di guardare un oggetto 3D e le parti che vuoi vedere più da vicino si girano magicamente verso di te - come se il sistema leggesse la tua mente e sapesse di trasformare l'elemento verso di te! Questa è l'idea per le rotazioni 3D basate sull'attenzione che consentono di analizzare tutti i lati di un ologramma senza sollevare un dito. Per abilitare questo comportamento, è sufficiente aggiungere lo script OnLookAtRotateByEyeGaze alla parte di GameObject con un componente Collider . È possibile modificare diversi parametri elencati di seguito per limitare la velocità e le direzioni in cui verrà ruotato l'ologramma.
Come si può immaginare, avere questo comportamento attivo in ogni momento può diventare rapidamente piuttosto distratta 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 un obiettivo attivo e vola davanti a te, semplicemente pronunciando "Vieni da me".
Una volta in modalità near, la modalità di rotazione automatica viene abilitata automaticamente. In questa modalità, puoi osservarlo da tutti i lati semplicemente pendendo indietro e guardandolo, camminando intorno ad esso o raggiungendo per afferrarlo e ruotarlo con la mano. Quando si chiude la destinazione (guardare & avvicinamento delle dita o dire "Invia indietro", tornerà alla posizione originale e smetterà di reagire da lontano.
Parametri | Descrizione |
---|---|
SpeedX | Velocità di rotazione orizzontale. |
Veloce | Velocità di rotazione verticale. |
InverseX | Per invertirne la direzione di rotazione orizzontale. |
Inversa | Per invertirne la direzione di rotazione verticale. |
RotationThreshInDegrees | Se l'angolo tra "Da sguardo alla destinazione" e "Da fotocamera a destinazione" è minore di questo valore, non eseguire alcuna operazione. Ciò consente di evitare piccole rotazioni instabilità. |
MinRotX | Angolo di rotazione orizzontale minimo. Ciò consente di limitare la rotazione in direzioni diverse. |
MaxRotX | Angolo di rotazione orizzontale massimo. Ciò consente 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 sintesi, gli script precedenti dovrebbero consentire di iniziare a usare lo sguardo fisso per varie attività di navigazione di input, ad esempio lo scorrimento di testi, lo zoom e la panoramica delle trame e la rotazione degli ologrammi 3D.
Vedere anche
- Configurazione MRTK di base per l'uso del tracciamento oculare
- Selezione della destinazione supportata dagli occhi