Navegação com suporte para olhos no MRTK — MRTK2

MRTK

Imagine você estiver lendo informações em uma ardósia e quando chegar ao final do texto exibido, o texto será rolado automaticamente para cima para revelar mais conteúdo. Ou você pode ampliar fluentemente onde você está olhando. O mapa também ajusta automaticamente o conteúdo para manter as coisas de interesse dentro do campo de exibição. Outro aplicativo interessante é a observação mãos-livres de hologramas 3D trazendo automaticamente as partes do holograma que você está olhando para a frente. Esses são alguns dos exemplos descritos nesta página no contexto de navegação com suporte para olhos.

As descrições a seguir pressupõem que você já esteja familiarizado com como configurar o acompanhamento ocular em sua cena do MRTK e com as noções básicas de como acessar dados de acompanhamento ocular no MRTK Unity. Os exemplos discutidos a seguir fazem parte da EyeTrackingDemo-03-Navigation cena (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).

Resumo: Rolagem automática de texto, painel com suporte para olhar e zoom de um mapa virtual, rotação 3D direcionada ao olhar sem mãos.

Rolagem automática

A rolagem automática permite que o usuário role os textos sem levantar um dedo. Basta continuar lendo e o texto rolará automaticamente para cima ou para baixo, dependendo de onde o usuário está procurando. Você pode começar com o exemplo fornecido em EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes). Este exemplo usa um componente TextMesh para permitir o carregamento flexível e a formatação de novo texto. Para habilitar a rolagem automática, basta adicionar os dois scripts a seguir ao componente do colisor da caixa de texto:

ScrollRectTransf

Para rolar por um TextMesh ou mais de modo geral, um componente RectTransform , você pode usar o script ScrollRectTransf . Se você quiser rolar por uma textura em vez de uma RectTransform, use ScrollTexture em vez de ScrollRectTransf. No seguinte, os parâmetros de ScrollRectTransf que estão disponíveis no Editor do Unity são explicados com mais detalhes:

Parâmetros Descrição
LimitPanning Se habilitado, interromperá o conteúdo rolável em seu limite.
RectTransfToNavigate Referência ao RectTransform para rolar.
RefToViewport Referência ao RectTransform pai do conteúdo rolável para determinar o deslocamento e o limite corretos.
AutoGazeScrollIsActive Se habilitado, o texto será rolado automaticamente se o usuário examinar uma região ativa (por exemplo, a parte superior e inferior do painel de rolagem se a velocidade de rolagem vertical não for zero).
ScrollSpeed_x Se definido como um valor diferente de zero, a rolagem horizontal será habilitada. Valores negativos significam uma alteração na direção da rolagem: da esquerda para a direita versus da direita para a esquerda.
ScrollSpeed_y Se definido como um valor diferente de zero, a rolagem vertical será habilitada. Valores negativos significam uma alteração na direção da rolagem: para cima para baixo versus para baixo para cima.
MinDistFromCenterForAutoScroll Distância mínima normalizada em x e y do centro da caixa de clique do destino (0, 0) para rolar. Assim, os valores devem variar entre 0 (sempre rolagem) e 0,5 (sem rolagem).
UseSkimProofing Se habilitado, ele evita movimentos repentinos de rolagem ao olhar rapidamente ao redor. Isso pode fazer com que a rolagem pareça menos responsiva. Ele pode ser ajustado com o valor SkimProofUpdateSpeed .
SkimProofUpdateSpeed Quanto menor o valor, mais lento a rolagem acelerará após o skimming. Valor recomendado: 5.

Eye-supported scroll setup in Unity

EyeTrackingTarget

Anexar o componente EyeTrackingTarget permite manipular de forma flexível eventos relacionados ao olhar. O exemplo de rolagem demonstra o texto de rolagem que começa quando o usuário olha para o painel e para quando o usuário está olhando para longe dele. Eye-supported scroll setup in Unity: EyeTrackingTarget

Painel e zoom compatíveis com o olhar

Who não usou um mapa virtual antes para procurar sua casa ou explorar lugares totalmente novos? O acompanhamento ocular permite que você mergulhe diretamente nas partes que você está interessado e, uma vez ampliado, você pode seguir sem problemas o curso de uma rua para explorar seu bairro! Isso não é apenas útil para explorar mapas geográficos, mas também para conferir detalhes em fotografias, visualizações de dados ou até mesmo imagens médicas transmitidas ao vivo. Usar essa funcionalidade em seu aplicativo é fácil! Para conteúdo renderizado em uma Textura (por exemplo, uma foto, dados transmitidos), basta adicionar o script PanZoomTexture . Para um RectTransform , use PanZoomRectTransf. Estendendo a funcionalidade de Rolagem Automática , basicamente habilitamos a rolagem vertical e horizontal ao mesmo tempo e ampliamos o conteúdo ao redor do ponto de foco atual do usuário.

Parâmetros Descrição
LimitPanning Se habilitado, interromperá o conteúdo rolável em seu limite.
HandZoomEnabledOnStartup Indica se os gestos das mãos são habilitados automaticamente para executar um gesto de zoom. Talvez você queira desabilitá-lo no início para evitar disparar acidentalmente ações de zoom.
RendererOfTextureToBeNavigated Renderizador referenciado da textura a ser navegada.
Zoom_Acceleration Aceleração de zoom definindo a inclinação do mapeamento de função de velocidade logística.
Zoom_SpeedMax Velocidade máxima de zoom.
Zoom_MinScale Escala mínima da textura para zoom - por exemplo, 0,5f (metade do tamanho original).
Zoom_MaxScale Escala máxima da textura para ampliar - por exemplo, 1f (o tamanho original) ou 2,0f (o dobro do tamanho original).
Zoom_TimeInSecToZoom Zoom cronometrado: uma vez disparado, um zoom será executado durante o tempo determinado em segundos.
Zoom_Gesture Tipo de gesto de mão a ser usado para ampliar/reduzir.
--- ---
Pan_AutoScrollIsActive Se habilitado, o texto será rolado automaticamente se o usuário examinar uma região ativa (por exemplo, a parte superior e inferior do painel de rolagem se a velocidade de rolagem vertical não for zero).
Pan_Speed_x Se definido como um valor diferente de zero, a rolagem horizontal será habilitada. Valores negativos significam uma alteração na direção da rolagem: da esquerda para a direita versus da direita para a esquerda.
Pan_Speed_y Se definido como um valor diferente de zero, a rolagem vertical será habilitada. Valores negativos significam uma alteração na direção da rolagem: para cima para baixo versus para baixo para cima.
Pan_MinDistFromCenter Distância mínima normalizada em x e y do centro da caixa de clique do destino (0, 0) para rolar. Assim, os valores devem variar entre 0 (sempre rolagem) e 0,5 (sem rolagem).
UseSkimProofing Se habilitado, ele evita movimentos repentinos de rolagem ao olhar rapidamente ao redor. Isso pode fazer com que a rolagem pareça menos responsiva. Ele pode ser ajustado com o valor SkimProofUpdateSpeed .
SkimProofUpdateSpeed Quanto menor o valor, mais lento a rolagem acelerará após o skimming. Valor recomendado: 5.

Eye-supported pan and zoom setup in Unity

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

Imagine olhando para um objeto 3D e as partes que você deseja ver mais de perto magicamente se voltam para você - como se o sistema lesse sua mente e soubesse virar o item em sua direção! Essa é a ideia para rotações 3D baseadas em atenção que permitem investigar todos os lados de um holograma sem levantar um dedo. Para habilitar esse comportamento, basta adicionar o script OnLookAtRotateByEyeGaze à parte de seu GameObject com um componente collider . Você pode ajustar vários parâmetros listados abaixo para limitar a rapidez e em quais direções o holograma será girado.

Como você pode imaginar, ter esse comportamento ativo em todos os momentos pode rapidamente se tornar bastante perturbador em uma cena lotada. É por isso que talvez você queira começar com esse comportamento desabilitado e habilitá-lo rapidamente usando comandos de voz. Como alternativa, adicionamos um exemplo em EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) para usar TargetMoveToCamera para o qual você pode selecionar um destino focado e ele voa na sua frente - basta dizer "Venha até mim".

Uma vez no modo próximo, o modo de rotação automática é habilitado automaticamente. Nesse modo, você pode observá-lo de todos os lados simplesmente inclinando-se para trás e olhando para ele, andando ao redor dele ou estendendo a mão para agarrá-lo e girá-lo com a mão. Quando você ignorar o destino (olhar & pinçar ou dizer "Enviar de volta"), ele retornará ao seu local original e deixará de reagir a você de longe.

Parâmetros Descrição
Speedx Velocidade de rotação horizontal.
Rápida Velocidade de rotação vertical.
InverseX Para inverter a direção de rotação horizontal.
Inverso Inversa a direção de rotação vertical.
RotationThreshInDegrees Se o ângulo entre 'Gaze to Target' e 'Câmera to Target' for menor que esse valor, não faça nada. Isso é para evitar pequenas rotações de nervosismo.
MinRotX Ângulo mínimo de rotação horizontal. Isso é para limitar a rotação em direções diferentes.
MaxRotX Ângulo máximo de rotação horizontal. Isso é para limitar a rotação em direções diferentes.
MinRotY Ângulo mínimo de rotação vertical para limitar a rotação ao redor do eixo x.
MaxRotY Ângulo máximo de rotação vertical para limitar a rotação ao redor do eixo y.

Eye-supported 3D rotation setup in Unity

Em resumo, os scripts acima devem permitir que você comece a usar o olhar para várias tarefas de navegação de entrada, como textos de rolagem, texturas de zoom e movimento panorâmico, além de girar a investigação de hologramas 3D.

Veja também


De volta ao "Rastreamento de olhos no MixedRealityToolkit"