Introdução ao controlo ocular no MRTK2
Esta página aborda como configurar a cena do MRTK do Unity para utilizar o controlo ocular na sua aplicação. O documento seguinte parte do princípio de que está a começar com uma nova cena. Em alternativa, pode ver os nossos exemplos de controlo ocular do MRTK já configurados com inúmeros exemplos fantásticos nos quais pode criar diretamente.
Lista de verificação de requisitos de controlo ocular
Para que o controlo ocular funcione corretamente, têm de ser cumpridos os seguintes requisitos. Se não estiver familiarizado com o controlo ocular sobre HoloLens 2 e como o controlo ocular é configurado no MRTK, não se preocupe! Vamos entrar em detalhes sobre como abordar cada um deles mais detalhadamente nas secções seguintes.
- Tem de ser adicionado um "Fornecedor de Dados eye gaze" ao sistema de entrada. Este fornecedor de dados fornece dados de controlo ocular da plataforma.
- A capacidade "GazeInput" tem de estar ativada no manifesto da aplicação. Esta capacidade pode ser definida no Unity 2019, mas no Unity 2018 e anterior esta capacidade só está disponível no Visual Studio e através da ferramenta de compilação MRTK.
- O HoloLens tem de estar calibrado para o utilizador atual. Veja o nosso exemplo para detetar se um utilizador está ou não calibrado para os olhos.
Uma nota sobre a capacidade GazeInput
As ferramentas de compilação fornecidas pelo MRTK (Mixed Reality Toolkit –> Utilitários –> Janela de Compilação) podem ativar automaticamente a capacidade GazeInput. Para efetuar este passo, tem de se certificar de que a opção "Capacidade de Entrada de Olhar" está selecionada no separador "Opções de Compilação do Appx":
Esta ferramenta irá encontrar o manifesto do AppX depois de concluída a compilação do Unity e adicionar manualmente a capacidade GazeInput. Antes do Unity 2019, esta ferramenta NÃO está ativa ao utilizar a Janela de Compilação incorporada do Unity (Ficheiro –> Definições de Compilação).
Antes do Unity 2019, ao utilizar a janela de compilação do Unity, a capacidade terá de ser adicionada manualmente após a compilação do Unity, da seguinte forma:
- Abra o projeto do Visual Studio compilado e, em seguida, abra o "Package.appxmanifest" na sua solução.
- Certifique-se de que assinala a caixa de verificação "GazeInput" em Capacidades. Se não vir uma capacidade "GazeInput", verifique se o seu sistema cumpre os pré-requisitos para utilizar o MRTK (em particular, a versão do SDK do Windows).
Nota: Só tem de o fazer se criar uma nova pasta de compilação. Não terá de voltar a aplicar as suas alterações se já tiver criado o seu projeto do Unity e configurado o appxmanifest antes e agora voltar a direcionar a mesma pasta.
Configurar o controlo ocular passo a passo
Configurar o cenário
Configure o MixedRealityToolkit ao clicar em "Mixed Reality Toolkit –> Configurar...", na barra de menus.
Configurar os perfis MRTK necessários para o controlo ocular
Depois de configurar a cena do MRTK, ser-lhe-á pedido para escolher um perfil para MRTK. Pode selecionar DefaultMixedRealityToolkitConfigurationProfile e, em seguida, selecionar a opção "Copiar & Personalizar" .
Criar um "fornecedor de dados de olhar atento"
- Clique no separador "Entrada" no seu perfil MRTK.
- Para editar o predefinido ("DefaultMixedRealityInputSystemProfile"), clique no botão "Clonar" junto ao mesmo. É apresentado um menu "Clonar Perfil" . Clique em "Clonar" na parte inferior desse menu.
- Faça duplo clique no novo perfil de entrada, expanda "Fornecedores de Dados de Entrada" e selecione "+ Adicionar Fornecedor de Dados".
- Adicione o fornecedor de dados correto:
- Para Windows Mixed Reality legados
- Em Tipo , selecione "Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input" ->"WindowsMixedRealityEyeGazeDataProvider"
- Para o Plug-in do Windows XR
- Em Tipo , selecione "Microsoft.MixedReality.Toolkit.XRSDK.WindowsMixedReality" ->"WindowsMixedRealityEyeGazeDataProvider"
- Para OpenXR
- Em Tipo , selecione "Microsoft.MixedReality.Toolkit.XRSDK.OpenXR" ->"OpenXREyeGazeDataProvider"
- Para Windows Mixed Reality legados
Ativar "Utilizar Dados de Controlo Ocular"
- Navegue para o perfil de configuração do MRTK ->'Input' ->'Pointers'
- Clone " DefaultMixedRealityInputPointerProfile" para efetuar alterações ao mesmo.
- Localize "Utilizar Dados de Controlo Ocular" nas definições e ative-os.
- Poderá ver um botão "Definir capacidade GazeInput" agora e deve premi-lo para ativar a capacidade UWP.
Simular o controlo ocular no Editor do Unity
Pode simular entradas de controlo ocular no Editor do Unity para garantir que os eventos são acionados corretamente antes de implementar a aplicação no seu HoloLens 2. O sinal de olhar olhado é simulado usando a localização da câmara como origem do olhar e o vetor para a frente da câmara como direção do olhar. Embora isto seja ótimo para testes iniciais, tenha em atenção que não é uma boa imitação para movimentos oculares rápidos. Para tal, é melhor garantir testes frequentes das suas interações baseadas nos olhos no HoloLens 2.
Ativar o controlo ocular simulado:
- Clique no separador "Entrada" no perfil de configuração do MRTK.
- A partir daí, navegue para "Fornecedores de Dados de Entrada" ->"Serviço de Simulação de Entrada".
- Clone " DefaultMixedRealityInputSimulationProfile" para efetuar alterações ao mesmo.
- Selecione a definição "Modo de Simulação de Olhar Predefinido" adequada.
Desativar o cursor de olhar predefinido: em geral, recomendamos que evite mostrar um cursor de olhar para os olhos ou, se for absolutamente necessário, torná-lo muito subtil. Recomendamos que oculte o cursor de olhar para a cabeça predefinido anexado ao perfil de ponteiro de olhar do MRTK por predefinição.
- Navegue para o perfil de configuração do MRTK ->'Input' ->'Pointers'
- Clone " DefaultMixedRealityInputPointerProfile" para efetuar alterações ao mesmo.
- Na parte superior das "Definições do Ponteiro", deve atribuir um prefab de cursor invisível à "Prefab do Cursor de Gaze". Pode fazê-lo ao selecionar a prefab "EyeGazeCursor" da Fundação MRTK.
Ativar o olhar com base no olhar no fornecedor de olhares
No HoloLens v1, o olhar para a cabeça foi utilizado como a técnica de apontamento principal. Enquanto o olhar para a cabeça ainda está disponível através do GazeProvider no MRTK, que está ligado à câmara, pode utilizar o olhar atento ao selecionar a caixa de verificação "IsEyeTrackingEnabled" nas definições de olhar para o olhar do perfil do ponteiro de entrada.
Nota
Os programadores podem alternar entre o olhar baseado nos olhos e o olhar baseado na cabeça no código alterando a propriedade "IsEyeTrackingEnabled" de "GazeProvider".
Importante
Se qualquer um dos requisitos de controlo ocular não for cumprido, a aplicação voltará automaticamente ao olhar com base na cabeça.
Aceder a dados de olhar atento
Agora que a sua cena está configurada para utilizar o controlo ocular, vamos ver como aceder à mesma nos seus scripts: Aceder aos dados de controlo ocular através do EyeGazeProvider e das seleções de destino suportadas por olhos.
Testar a aplicação Unity num HoloLens 2
A criação da sua aplicação com monitorização ocular deve ser semelhante à forma como compilaria outras aplicações HoloLens 2 MRTK. Certifique-se de que ativou a capacidade "Gaze Input", conforme descrito acima na secção Uma nota sobre a capacidade GazeInput.
Confirme que o projeto está configurado para HoloLens 2
Certifique-se de que configurou corretamente o projeto ao rever os passos de configuração abrangidos em Configurar um projeto OpenXR com MRTK.
Pontos-chave em que pensar:
- Reveja as definições principais na janela Definições do Projeto .
- Certifique-se de que os Fornecedores de Plug-ins estão definidos corretamente
- Resolver triângulos de aviso.
- Os perfis de interação devem ser definidos
- Os Grupos de Funcionalidades OpenXR devem ser selecionados corretamente
Calibragem ocular
Não se esqueça de percorrer a calibragem ocular no HoloLens 2. O sistema de controlo ocular não devolverá nenhuma entrada se o utilizador não estiver calibrado. A forma mais fácil de chegar à calibragem é ao virar o visor para cima e, em seguida, para baixo. Deverá ser apresentada uma notificação do sistema que o acolhe como um novo utilizador e pede-lhe para passar pela calibragem ocular. Em alternativa, pode encontrar a calibragem ocular nas definições do sistema: Definições > Calibragem do Sistema > Calibragem > Executar calibragem ocular.
Permissão de controlo ocular
Quando inicia a aplicação no seu HoloLens 2 pela primeira vez, é apresentada uma mensagem a pedir permissão ao utilizador para utilizar o controlo ocular. Se o pedido não aparecer, normalmente é uma indicação de que a capacidade "GazeInput" não foi definida.
Depois de o pedido de permissão ter sido apresentado uma vez, não voltará a aparecer automaticamente. Se "negar a permissão de controlo ocular", pode repor esta opção em Definições –> Privacidade –> Aplicações.
Isto deve fazer com que comece a utilizar o controlo ocular na sua aplicação Do Unity do MRTK. Não se esqueça de ver os nossos tutoriais e exemplos de controlo ocular do MRTK que demonstram como utilizar entradas de controlo ocular e fornecer convenientemente scripts que pode reutilizar nos seus projetos.