Navegação suportada por olhos no MRTK


De volta a "Eye tracking in the MixedRealityToolkit"

MRTK

Imagine estiver a ler informações numa ardósia e quando chegar ao final do texto apresentado, o texto desloca-se automaticamente para revelar mais conteúdo. Ou podes fazer zoom fluentemente onde estás a olhar. O mapa também ajusta automaticamente o conteúdo para manter as coisas de interesse dentro do seu campo de visão. Outra aplicação interessante é a observação mãos-livres de hologramas 3D, trazendo automaticamente as partes do holograma que está a olhar para a frente. Estes são alguns dos exemplos que são descritos nesta página no contexto da navegação suportada pelos olhos.

As seguintes descrições assumem que já está familiarizado com a forma de configurar o rastreio ocular na sua cena mrtk e com os fundamentos de acesso a dados de rastreio de olhos na Unidade MRTK. Os exemplos discutidos no seguinte fazem parte da EyeTrackingDemo-03-Navigation cena (Ativos/MRTK/Exemplos/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).

Resumo: Deslocação automática de texto, panorâmica apoiada por olhos e zoom de um mapa virtual, rotação 3D dirigida a olhar mãos-livres.

Pergaminho automático

O deslocal automático permite ao utilizador deslocar-se através de textos sem levantar um dedo. Basta continuar a ler e o texto deslocar-se-á automaticamente para cima ou para baixo, dependendo do local onde o utilizador está a procurar. Pode começar pelo exemplo fornecido em EyeTrackingDemo-03-Navigation (Ativos/MRTK/Exemplos/Demos/EyeTracking/Scenes). Este exemplo utiliza um componente TextMesh para permitir o carregamento flexível e formatação de novo texto. Para ativar o deslocamento automático, basta adicionar os seguintes dois scripts ao componente do colisor da caixa de texto:

Transporte de Pergaminhos

Para percorrer um TextMesh ou, de um modo mais geral, um componente RectTransform, pode utilizar o script ScrollRectTransf. Se quiser percorrer uma textura em vez de uma RectTransform,utilize a ScrollTexture em vez de ScrollRectTransf. Nos seguintes, os parâmetros do ScrollRectTransf que estão disponíveis no Editor de Unidade são explicados com mais pormenor:

Parâmetros Description
LimitePanning Se ativado, irá parar o conteúdo de scrollable no seu limite.
RectTransfToNavigate Referência ao RectTransform para deslocar.a.
RefToViewport Referência ao recttransform do conteúdo scrollável para determinar a correta compensação e limite.
AutoGazeScrollIsActive Se ativado, o texto deslocar-se-á automaticamente se o utilizador olhar para uma região ativa (por exemplo, a parte superior e inferior do painel de deslocação se a velocidade de deslocação vertical não for zero).
ScrollSpeed_x Se for definido para um valor desigual a zero, o deslocação horizontal será ativado. Valores negativos significam uma mudança na direção do pergaminho: Da esquerda para a direita vs. direita para a esquerda.
ScrollSpeed_y Se for definido para um valor desigual a zero, o deslocação vertical será ativado. Valores negativos significam uma mudança na direção do pergaminho: Para baixo vs. para cima.
MinDistFromCenterForAutoScroll Distância mínima normalizada em x e y do centro da caixa de impacto do alvo (0,0) para rolar. Assim, os valores devem variar entre 0 (sempre pergaminho) e 0,5 (sem pergaminho).
UseSkimProofing Se ativado, evita movimentos repentinos de deslocação quando olhamos rapidamente. Isto pode fazer com que o scrolling se sinta menos responsivo. Pode ser sintonizado com o valor SkimProofUpdateSpeed.
SkimProofUpdateSpeed Quanto mais baixo o valor, mais lento o scrolling acelerará após o skimming. Valor recomendado: 5.

Configuração de pergaminho suportado pelo olho na Unidade

EyeTrackingTarget

A fixação do componente EyeTrackingTarget permite lidar com eventos relacionados com o olhar flexível. A amostra de deslocamento demonstra o texto de deslocação que começa quando o utilizador olha para o painel e para quando o utilizador está a olhar para o lado. Configuração de pergaminho suportado pelo olho na Unidade: EyeTrackingTarget

Pan e zoom apoiados pelo olhar

Quem nunca usou um mapa virtual antes para procurar a sua casa ou para explorar lugares inteiramente novos? O rastreio de olhos permite-lhe mergulhar diretamente nas partes que lhe interessam e uma vez ampliado, você pode seguir suavemente o curso de uma rua para explorar o seu bairro! Isto não só é útil para explorar mapas geográficos, mas também para verificar detalhes em fotografias, visualizações de dados ou até mesmo imagens médicas transmitidas em direto. Utilizar esta capacidade na sua aplicação é fácil! Para conteúdos renderizados a uma Textura (por exemplo, uma foto, dados transmitidos), basta adicionar o script PanZoomTexture. Para uma utilização RectTransform,o PanZoomRectTransf. Alargando a capacidade de deslocamento automático, essencialmente permitimos deslocar-nos vertical e horizontalmente ao mesmo tempo e ampliar o conteúdo em torno do ponto de focagem atual do utilizador.

Parâmetros Description
LimitePanning Se ativado, irá parar o conteúdo de scrollable no seu limite.
HandZoomEnabledOnStartup Indica se os gestos com as mãos são automaticamente ativados para realizar um gesto de zoom. É melhor desativá-lo no início para evitar desencadear acidentalmente ações de zoom.
RendererOfTextureToBeNavvigated Renderizador referenciado da textura a navegar.
Zoom_Acceleration Aceleração do zoom que define a inclinação do mapeamento da função de velocidade logística.
Zoom_SpeedMax Velocidade máxima de zoom.
Zoom_MinScale Escala mínima da textura para zoom in - por exemplo, 0,5f (metade do tamanho original).
Zoom_MaxScale Escala máxima da textura para zoom out - por exemplo, 1f (o tamanho original) ou 2,0f (o dobro do tamanho original).
Zoom_TimeInSecToZoom Zoom cronometrado: Uma vez acionado, será realizado um zoom dentro/fora durante o tempo em segundos.
Zoom_Gesture Tipo de gesto de mão para usar para ampliar dentro/fora.
--- ---
Pan_AutoScrollIsActive Se ativado, o texto deslocar-se-á automaticamente se o utilizador olhar para uma região ativa (por exemplo, a parte superior e inferior do painel de deslocação se a velocidade de deslocação vertical não for zero).
Pan_Speed_x Se for definido para um valor desigual a zero, o deslocação horizontal será ativado. Valores negativos significam uma mudança na direção do pergaminho: Da esquerda para a direita vs. direita para a esquerda.
Pan_Speed_y Se for definido para um valor desigual a zero, o deslocação vertical será ativado. Valores negativos significam uma mudança na direção do pergaminho: Para baixo vs. para cima.
Pan_MinDistFromCenter Distância mínima normalizada em x e y do centro da caixa de impacto do alvo (0,0) para rolar. Assim, os valores devem variar entre 0 (sempre pergaminho) e 0,5 (sem pergaminho).
UseSkimProofing Se ativado, evita movimentos repentinos de deslocação quando olhamos rapidamente. Isto pode fazer com que o scrolling se sinta menos responsivo. Pode ser sintonizado com o valor SkimProofUpdateSpeed.
SkimProofUpdateSpeed Quanto mais baixo o valor, mais lento o scrolling acelerará após o skimming. Valor recomendado: 5.

Configuração de panela e zoom suportada pelos olhos na Unidade

Rotação 3D baseada em atenção

Imagine a olhar para um objeto 3D e as partes que queres ver mais magicamente vira-te para ti - como se o sistema lesse a tua mente e soubesses virar o item para ti! Esta é a ideia para rotações 3D baseadas em atenção que permitem investigar todos os lados de um holograma sem levantar um dedo. Para ativar este comportamento, basta adicionar o script OnLookAtRotateByEyeGaze à parte do seu GameObject com um componente Collider. Pode ajustar vários parâmetros listados abaixo para limitar a rapidez e em que direções o holograma irá girar.

Como podem imaginar, ter este comportamento ativo a todo o momento pode rapidamente tornar-se bastante distraídor numa cena cheia de gente. É por isso que pode querer começar com este comportamento desativado e, em seguida, capacitá-lo rapidamente usando comandos de voz. Em alternativa, adicionámos um exemplo em EyeTrackingDemo-03-Navigation (Ativos/MRTK/Exemplos/Demos/EyeTracking/Scenes) para utilizar EyeTrackingDemo-03-Navigation para o qual pode selecionar um alvo focado e voa à sua frente - basta dizer "Venha a mim".

Uma vez no modo próximo, o modo de rotação automática está automaticamente ativado. Nesse modo, pode observá-lo de todos os lados, inclinando-se para trás e olhando para ele, andando à sua volta ou estendendo a mão para agarrar e rodar com a mão. Quando descartar o alvo (olhe & para o pinch ou diga &ele voltará à sua localização original e deixará de reagir à sua distância.

Parâmetros Description
SpeedX Velocidade de rotação horizontal.
Speedy Velocidade de rotação vertical.
InverseX Para inverter a direção de rotação horizontal.
Inverso Para inverter a direção de rotação vertical.
RotaçãoThreshInDegrees Se o ângulo entre 'Gaze to Target' e 'Camera to Target' for inferior a este valor, não faça nada. Isto é para evitar pequenas rotações nervosas.
MinRotX Ângulo de rotação horizontal mínimo. Isto é para limitar a rotação em direções diferentes.
MaxRotX Ângulo máximo de rotação horizontal. Isto é para limitar a rotação em direções diferentes.
Rio MinRotY Ângulo de rotação vertical mínimo para limitar a rotação em torno do eixo x.
MaxRotY Ângulo de rotação vertical máximo para limitar a rotação em torno do eixo y.

Configuração de rotação 3D suportada pelo olho na Unidade

Em resumo, os scripts acima devem permitir que você possa começar a usar o olhar para várias tarefas de navegação de entrada, tais como textos de scrolling, texturas de zooming e panorâmica, bem como rotação investigando hologramas 3D.

Ver também