Partilhar via


Navegação com suporte ocular no MRTK — MRTK2

MRTK

Imagine que está a ler informações numa ardósia e, quando chega ao fim do texto apresentado, o texto desloca-se automaticamente para cima para revelar mais conteúdo. Ou pode ampliar fluentemente onde está a olhar. O mapa também ajusta automaticamente o conteúdo para manter os aspetos interessantes no seu campo de vista. Outra aplicação interessante é a observação mãos-livres de hologramas 3D ao trazer automaticamente as partes do holograma que está a ver para a frente. Estes são alguns dos exemplos descritos nesta página no contexto da navegação suportada por olhos.

As descrições seguintes partem do princípio de que já está familiarizado com a configuração do controlo ocular na cena do MRTK e com as noções básicas de acesso aos dados de controlo ocular no MRTK Unity. Os exemplos abordados no seguinte fazem parte da EyeTrackingDemo-03-Navigation cena (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).

Resumo: Deslocamento automático do texto, painel suportado pelo olhar e zoom de um mapa virtual, rotação 3D direcionada para olhar livre.

Deslocamento automático

O deslocamento automático permite que o utilizador percorra os textos sem levantar um dedo. Continue a ler e o texto deslocar-se-á automaticamente para cima ou para baixo, dependendo de onde o utilizador estiver a procurar. Pode começar a partir do exemplo fornecido em EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes). Este exemplo utiliza um componente TextMesh para permitir o carregamento e formatação flexíveis de novo texto. Para ativar o deslocamento automático, basta adicionar os dois scripts seguintes ao componente collider da caixa de texto:

ScrollRectTransf

Para percorrer um TextMesh ou, de uma forma mais geral, um componente RectTransform , pode utilizar o script ScrollRectTransf . Se quiser percorrer uma textura em vez de rectTransform, utilize ScrollTexture em vez de ScrollRectTransf. No seguinte, os parâmetros de ScrollRectTransf que estão disponíveis no Editor do Unity são explicados mais detalhadamente:

Parâmetros Description
LimitPanning Se estiver ativada, irá parar o conteúdo deslocável no limite.
RectTransfToNavigate Referência ao RectTransform para se deslocar.
RefToViewport Referência ao rectTransform principal do conteúdo deslocável para determinar o desvio e o limite corretos.
AutoGazeScrollIsActive Se estiver ativado, o texto deslocar-se-á automaticamente se o utilizador observar uma região ativa (por exemplo, a parte superior e inferior do painel de deslocamento se a velocidade de deslocamento vertical não for zero).
ScrollSpeed_x Se definido como um valor desigual a zero, o deslocamento horizontal será ativado. Os valores negativos significam uma alteração na direção do deslocamento: da esquerda para a direita vs. da direita para a esquerda.
ScrollSpeed_y Se definido como um valor desigual a zero, o deslocamento vertical será ativado. Os valores negativos significam uma alteração na direção do deslocamento: Para cima para baixo vs. para baixo para cima.
MinDistFromCenterForAutoScroll Normalizou a distância mínima em x e y a partir do centro da caixa de destino (0, 0) para deslocar. Assim, os valores têm de variar entre 0 (deslocar sempre) e 0,5 (sem deslocamento).
UseSkimProofing Se estiver ativada, impede movimentos repentinos de deslocamento quando se olha rapidamente. No entanto, isto pode fazer com que o deslocamento se sinta menos reativo. Pode ser otimizado com o valor SkimProofUpdateSpeed .
SkimProofUpdateSpeed Quanto mais baixo for o valor, mais lento o deslocamento acelerará após o skimming. Valor recomendado: 5.

Configuração de deslocamento suportada por olhos no Unity

EyeTrackingTarget

Anexar o componente EyeTrackingTarget permite processar de forma flexível eventos relacionados com o olhar. O exemplo de deslocamento demonstra o texto de deslocamento que começa quando o utilizador olha para o painel e para quando o utilizador está a olhar para o lado. Configuração de deslocamento suportada por olhos no Unity: EyeTrackingTarget

Panorâmica e zoom suportados por gaze

Quem nunca utilizou um mapa virtual antes para procurar a sua casa ou explorar lugares totalmente novos? A monitorização ocular permite-lhe explorar diretamente as partes em que está interessado e, uma vez ampliado, pode seguir sem problemas o curso de uma rua para explorar o seu bairro! Isto não só é útil para explorar mapas geográficos, mas também para ver detalhes em fotografias, visualizações de dados ou até imagens médicas transmitidas em direto. É fácil utilizar esta capacidade na sua aplicação! Para conteúdos compostos com uma Textura (por exemplo, uma fotografia, dados transmitidos em fluxo), basta adicionar o script PanZoomTexture . Para um RectTransform , utilize PanZoomRectTransf. Ao expandir a capacidade de Deslocamento Automático , ativamos essencialmente o deslocamento vertical e horizontal ao mesmo tempo e ampliamos o conteúdo em torno do ponto de foco atual do utilizador.

Parâmetros Description
LimitPanning Se estiver ativada, irá parar o conteúdo deslocável no limite.
HandZoomEnabledOnStartup Indica se os gestos de mão são ativados automaticamente para efetuar um gesto de zoom. Poderá querer desativá-lo inicialmente para evitar acionar acidentalmente ações de zoom.
RendererOfTextureToBeNavigated Compositor referenciado da textura a navegar.
Zoom_Acceleration Aceleração de 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 ampliar - por exemplo, 0,5f (metade do tamanho original).
Zoom_MaxScale Escala máxima da textura para reduzir - por exemplo, 1f (o tamanho original) ou 2,0f (o dobro do tamanho original).
Zoom_TimeInSecToZoom Zoom temporizado: uma vez acionado, será efetuada uma ampliação/ampliação durante um determinado período de tempo em segundos.
Zoom_Gesture Tipo de gesto de mão a utilizar para ampliar/reduzir.
--- ---
Pan_AutoScrollIsActive Se estiver ativado, o texto deslocar-se-á automaticamente se o utilizador observar uma região ativa (por exemplo, a parte superior e inferior do painel de deslocamento se a velocidade de deslocamento vertical não for zero).
Pan_Speed_x Se definido como um valor desigual a zero, o deslocamento horizontal será ativado. Os valores negativos significam uma alteração na direção do deslocamento: da esquerda para a direita vs. da direita para a esquerda.
Pan_Speed_y Se definido como um valor desigual a zero, o deslocamento vertical será ativado. Os valores negativos significam uma alteração na direção do deslocamento: Para cima para baixo vs. para baixo para cima.
Pan_MinDistFromCenter Normalizou a distância mínima em x e y a partir do centro da caixa de destino (0, 0) para deslocar. Assim, os valores têm de variar entre 0 (deslocar sempre) e 0,5 (sem deslocamento).
UseSkimProofing Se estiver ativada, impede movimentos repentinos de deslocamento quando se olha rapidamente. No entanto, isto pode fazer com que o deslocamento se sinta menos reativo. Pode ser otimizado com o valor SkimProofUpdateSpeed .
SkimProofUpdateSpeed Quanto mais baixo for o valor, mais lento o deslocamento acelerará após o skimming. Valor recomendado: 5.

Configuração de zoom e painel suportados por olhos no Unity

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

Imagine olhar para um objeto 3D e as partes que pretende ver mais de perto magicamente virar-se para si - como se o sistema lesse a sua mente e soubesse virar o item na sua direção! Esta é a ideia para rotações 3D baseadas em atenção que lhe 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 velocidade e as direções em que o holograma se irá virar.

Como pode imaginar, ter este comportamento sempre ativo pode tornar-se rapidamente bastante distraído numa cena cheia. É por isso que poderá querer começar com este comportamento desativado e, em seguida, ativá-lo rapidamente com comandos de voz. Em alternativa, adicionámos um exemplo em EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) para utilizar TargetMoveToCamera para o qual pode selecionar um destino focado e voa à sua frente - basta dizer "Venha ter comigo".

Uma vez no modo próximo, o modo de rotação automática é ativado automaticamente. Nesse modo, pode observá-lo de todos os lados simplesmente inclinando-se para trás e olhando para ele, andando à sua volta ou estendendo a mão para agarrar e rodar com a sua mão. Quando dispensar o destino (procure & aproximar ou diga "Enviar de volta"), este regressará à localização original e deixará de reagir de longe.

Parâmetros Description
SpeedX Velocidade de rotação horizontal.
Rápido Velocidade de rotação vertical.
InversoX Para inversamente a direção de rotação horizontal.
Inverso Para inversamente a direção da rotação vertical.
RotaçãoThreshInDegrees Se o ângulo entre "Olhar para Destino" e "Câmara para Destino" for menor do que 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 de rotação horizontal máximo. Isto é para limitar a rotação em direções diferentes.
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 por olhos no Unity

Em resumo, os scripts acima devem permitir-lhe começar a utilizar o olhar para várias tarefas de navegação de entrada, tais como textos de deslocamento, zoom e texturas panorâmicas, bem como a investigação de hologramas 3D.

Ver também


Voltar ao "Controlo ocular no MixedRealityToolkit"