Condividi tramite


Spostamento supportato dagli occhi 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. 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.

Configurazione dello scorrimento supportata dagli occhi in Unity

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. Configurazione dello scorrimento supportata dagli occhi in Unity: EyeTrackingTarget

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.

Configurazione dello zoom e della panoramica supportate dagli occhi in Unity

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.

Configurazione della rotazione 3D supportata dagli occhi in Unity

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


Torna a "Tracciamento oculare in MixedRealityToolkit"