Guia de configuração de perfil do MRTK2

Realidade Misturada Toolkit centraliza a maior parte da configuração necessária para gerenciar o kit de ferramentas possível (exceto para verdadeiros "itens" de runtime).

Este guia é um passo a passo simples para cada uma das telas de perfil de configuração atualmente disponíveis para o kit de ferramentas.

O perfil de configuração do kit de ferramentas do main Realidade Misturada

O perfil de configuração do main, que está anexado ao GameObject MixedRealityToolkit em sua cena, fornece o ponto de entrada main para o Kit de Ferramentas em seu projeto.

Observação

Realidade Misturada Toolkit "bloqueia" as telas de configuração padrão para garantir que você sempre tenha um ponto de partida comum para seu projeto e é recomendável começar a definir suas próprias configurações à medida que seu projeto evolui. A configuração do MRTK não é editável durante o modo de reprodução.

Perfil de configuração do MRTK

Todos os perfis "padrão" para Realidade Misturada Toolkit podem ser encontrados no projeto do SDK na pasta Ativos/MRTK/SDK/Perfis.

Importante

DefaultHoloLens2ConfigurationProfile é otimizado para HoloLens 2. Consulte Perfis para obter os detalhes.

Ao abrir o perfil de configuração do kit de ferramentas main Realidade Misturada, você verá a seguinte tela no inspetor:

Cena de configuração do MRTK

Se você selecionar um ativo MixedRealityToolkitConfigurationProfile sem o MixedRealityToolkit na cena, ele perguntará se você deseja que o MRTK configure automaticamente a cena para você. Isso é opcional; no entanto, deve haver um objeto MixedRealityToolkit ativo na cena para acessar todas as telas de configuração.

Isso abriga a configuração de runtime ativa atual do projeto.

A partir daqui, você pode navegar até todos os perfis de configuração do MRTK, incluindo:

Esses perfis de configuração são detalhados abaixo em suas seções relevantes:


Configurações da experiência

Localizada na página de configuração do kit de ferramentas do main Realidade Misturada, essa configuração define a operação padrão da escala de ambiente Realidade Misturada para seu projeto.

Configurações de experiance

Configurações da câmera

As configurações da câmera definem como a câmera será configurada para seu projeto de Realidade Misturada, definindo as configurações genéricas de recorte, qualidade e transparência.

Perfil da Câmera

Configurações do sistema de entrada

O projeto Realidade Misturada fornece um sistema de entrada robusto e bem treinado para rotear todos os eventos de entrada ao redor do projeto que é selecionado por padrão.

Configurações do sistema de entrada 1

Por trás do Sistema de Entrada fornecido pelo MRTK há vários outros sistemas, eles ajudam a impulsionar e gerenciar as complexas inter-tecelagem necessárias para abstrair as complexidades de uma estrutura de multiplataforma/realidade misturada.

Configurações do Sistema de Entrada 2

Cada um dos perfis individuais é detalhado abaixo:


Configurações de visualização de limite

O sistema de limites converte o limite percebido relatado pelo limite/sistema guardião das plataformas subjacentes. A configuração do visualizador de limite oferece a capacidade de mostrar automaticamente o limite registrado em sua cena em relação à posição do usuário. O limite também reagirá/atualizará com base em onde o usuário se teletransporta dentro da cena.

Configurações de Visualização Limitada

Seleção do sistema de teletransporte

O projeto Realidade Misturada fornece um sistema de teletransporte completo para gerenciar eventos de teletransporte no projeto que é selecionado por padrão.

Configurações do sistema de teletransporte

Configurações de reconhecimento espacial

O projeto Realidade Misturada fornece um sistema de reconhecimento espacial recriado para trabalhar com sistemas de verificação espacial no projeto que é selecionado por padrão.

Configurações de Reconhecimento Espacial 1

Realidade Misturada configuração de reconhecimento espacial do Kit de Ferramentas permite que você adapte como o sistema é iniciado, seja automaticamente quando o aplicativo é iniciado ou posterior programaticamente, bem como define as extensões para o campo de exibição.

Ele também permite definir as configurações de malha e superfície, personalizando ainda mais como seu projeto entende o ambiente ao seu redor.

Isso só é aplicável a dispositivos que podem fornecer um ambiente verificado.

Configurações de Reconhecimento Espacial 2

Configurações de diagnóstico

Um recurso opcional, mas altamente útil do MRTK, é o plug-in diagnóstico funcionalidade.

Configurações de diagnóstico

O perfil diagnóstico fornece vários sistemas simples para monitorar enquanto o projeto está em execução, incluindo uma opção ativada/desativada útil para habilitar/desabilitar o painel de exibição na cena.

Configurações de diagnóstico Configurações do sistema 2

Configurações do sistema de cena

O MRTK fornece esse serviço opcional para ajudá-lo a gerenciar o carregamento/descarregamento complexo de cena aditiva. Para decidir se o Sistema de Cena seria uma boa opção para seu projeto, leia o Guia de Introdução do Sistema de Cena.

Configurações do Sistema de Cena 1

Configurações de serviços adicionais

Uma das áreas mais avançadas do Realidade Misturada Toolkit é sua implementação de padrão de localizador de serviço que permite o registro de qualquer "Serviço" com a estrutura. Isso permite que a estrutura seja estendida com novos recursos/sistemas facilmente, mas também permite que os projetos aproveitem esses recursos para registrar seus próprios componentes de runtime.

Qualquer serviço registrado ainda obtém a vantagem total de todos os eventos do Unity, sem a sobrecarga e o custo de implementar padrões singleton MonoBehaviour ou clunky. Isso permite componentes C# puros sem sobrecarga de cena para executar processos em primeiro plano e em segundo plano, por exemplo, sistemas de geração, lógica de jogo de runtime ou praticamente qualquer outra coisa.

configurações adicionais do sistema

Configurações de ações de entrada

As ações de entrada fornecem uma maneira de abstrair quaisquer interações físicas e entradas de um projeto de runtime. Todas as entradas físicas (de controladores/mãos/mouse/etc) são convertidas em uma ação de entrada lógica para uso em seu projeto de runtime. Isso garante que, independentemente de onde a entrada venha, seu projeto simplesmente implemente essas ações como "Coisas para fazer" ou "Interagir com" em suas cenas.

Para criar uma nova ação de entrada, basta clicar no botão "Adicionar uma nova Ação" e inserir um nome de texto amigável para o que ela representa. Em seguida, você só precisa selecionar um eixo (o tipo de dados) que a ação deve transmitir ou, no caso de controladores físicos, o tipo de entrada física ao qual ela pode ser anexada, por exemplo:

Restrição de eixo Tipo de Dados Descrição Uso de exemplo
Nenhum Sem dados Usado para uma ação ou evento vazio Gatilho de evento
Bruto (reservado) objeto Reservado para uso futuro N/D
Digital bool Um booliano ativado ou desativado de dados de tipo Um botão do controlador
Eixo Único FLOAT Um único valor de dados de precisão Uma entrada com intervalo, por exemplo, um gatilho
Eixo Duplo Vector2 Uma data de tipo float duplo para vários eixos Um Dpad ou thumbstick
Três Posições de Dof Vector3 Dados de tipo posicional do com eixo float 3 Controlador somente de estilo de posição 3D
Rotação de Três Dof Quatérnion Entrada somente rotacional com 4 eixos float Um controlador de estilo de três graus, por exemplo, controlador Oculus Go
Seis Dof pose Realidade Misturada (Vector3, Quaternion) Uma entrada de estilo de posição e rotação com componentes Vector3 e Quaternion Um controlador de movimento ou ponteiro

Os eventos que utilizam ações de entrada não se limitam a controladores físicos e ainda podem ser utilizados dentro do projeto para que os efeitos de runtime gerem novas ações.

Observação

As ações de entrada são um dos poucos componentes que não podem ser editados em runtime, são apenas uma configuração de tempo de design. Esse perfil não deve ser trocado enquanto o projeto estiver em execução devido à dependência da estrutura (e de seus projetos) nas IDs geradas para cada ação.

Perfil de Configuração

Regras de ações de entrada

As regras de ação de entrada fornecem uma maneira de converter automaticamente um evento gerado para uma ação de entrada em ações diferentes com base em seu valor de dados. Eles são gerenciados perfeitamente dentro da estrutura e não incorrem em custos de desempenho.

Por exemplo, converter o único evento de entrada de eixo duplo de um DPad em para as quatro ações correspondentes "Dpad Up" / "DPad Down" / "Dpad Left" / "Dpad Right" (conforme mostrado na imagem abaixo).

Isso também pode ser feito em seu próprio código. No entanto, como esse era um padrão muito comum, a estrutura fornece um mecanismo para fazer isso "pronto para uso"

As regras de ação de entrada podem ser configuradas para qualquer um dos eixos de entrada disponíveis. No entanto, as ações de entrada de um tipo de eixo podem ser convertidas em outra ação de entrada do mesmo tipo de eixo. Você pode mapear uma ação de eixo duplo para outra ação de eixo duplo, mas não para uma ação digital ou nenhuma.

Perfil de regras de ação de entrada


Configuração do ponteiro

Ponteiros são usados para impulsionar a interatividade na cena de qualquer dispositivo de entrada, dando um teste de direção e de clique com qualquer objeto em uma cena (que tem um colisor anexado ou é um componente de interface do usuário). Os ponteiros são configurados automaticamente por padrão para controladores, headsets (foco/foco) e entrada por mouse/toque.

Os ponteiros também podem ser visualizados dentro da cena ativa usando um dos muitos componentes de linha fornecidos pelo Realidade Misturada Toolkit ou qualquer um dos seus próprios se implementarem a interface IMixedRealityPointer do MRTK.

Perfil de ponteiro de entrada
  • Extensão de apontamento: determina a extensão de apontamento global para todos os ponteiros, incluindo o foco.
  • Máscaras de camada raycast apontando: determina em quais camadas os ponteiros serão raycast.
  • Depurar Raios Apontadores de Desenho: um auxiliar de depuração para visualizar os raios usados para raycasting.
  • Depurar cores de raios apontadores de desenho: um conjunto de cores a serem usadas para visualização.
  • Pré-fabricado do cursor de foco: facilita a especificação de um cursor de foco global para qualquer cena.

Há um botão auxiliar adicional para ir rapidamente para o Provedor de Foco para substituir alguns valores específicos de Gaze, se necessário.


Configuração de gestos

Gestos são uma implementação específica do sistema que permite atribuir ações de entrada aos vários métodos de entrada "Gesto" fornecidos por vários SDKs (por exemplo, HoloLens).

Observação

A implementação de Gestos atual é apenas para o HoloLens e será aprimorada para outros sistemas à medida que forem adicionados ao Kit de Ferramentas no futuro (ainda não há datas).

Configuração de gesto

Comandos de fala

Como gestos, algumas plataformas de runtime também fornecem funcionalidade inteligente de "Conversão de Fala em Texto" com a capacidade de gerar comandos que podem ser recebidos por um projeto do Unity. Esse perfil de configuração permite que você configure o seguinte:

  1. Configurações Gerais – "Comportamento de Início" definido como Início Automático ou Início Manual determina se é necessário inicializar KeywordRecognizer na inicialização do sistema de entrada ou permitir que o projeto decida quando inicializar o KeywordRecognizer. "Nível de Confiança de Reconhecimento" é usado para inicializar a API KeywordRecognizer do Unity
  2. Comandos de Fala – registra "palavras" e as converte em ações de entrada que podem ser recebidas pelo seu projeto. Eles também podem ser anexados a ações de teclado, se necessário.

Importante

Atualmente, o sistema só dá suporte à fala durante a execução em plataformas Windows 10, por exemplo, HoloLens e Windows 10 Desktop e será aprimorado para outros sistemas à medida que forem adicionados ao MRTK no futuro (ainda sem datas).

Telas do Perfil de Configuração

Configuração de mapeamento do controlador

Uma das principais telas de configuração para Realidade Misturada Toolkit é a capacidade de configurar e mapear os vários tipos de controladores que podem ser utilizados pelo seu projeto.

A tela de configuração abaixo permite que você configure qualquer um dos controladores atualmente reconhecidos pelo kit de ferramentas.

Mapeamento do controlador

O MRTK fornece uma configuração padrão para os seguintes controladores/sistemas:

  • Mouse (incluindo suporte a mouse espacial 3D)
  • Tela touch
  • Controladores xbox
  • controladores de Windows Mixed Reality
  • Gestos do HoloLens
  • Controladores de wand HTC Vive
  • Controladores Oculus Touch
  • Controlador remoto Oculus
  • Dispositivos OpenVR genéricos (somente usuários avançados)

Clicar na Imagem para qualquer um dos sistemas de controlador predefinidos permite que você configure uma única ação de entrada para todas as suas entradas correspondentes, por exemplo, consulte a tela de configuração do controlador Oculus Touch abaixo:

Tela de configuração do controlador

Também há uma tela avançada para configurar outros controladores de entrada OpenVR ou Unity que não são identificados acima.


Configurações de visualização do controlador

Além do mapeamento do controlador, um perfil de configuração separado é fornecido para personalizar como os controladores são apresentados em suas cenas.

Isso pode ser configurado em um "Global" (todas as instâncias de um controlador para uma mão específica) ou específico para um tipo/mão de controlador individual.

O MRTK também dá suporte a modelos de controlador do SDK nativo para Windows Mixed Reality e OpenVR. Eles são carregados como GameObjects em sua cena e posicionados usando o acompanhamento do controlador da plataforma.

Se a representação do controlador na cena precisar ser deslocada da posição do controlador físico, basta definir esse deslocamento em relação ao pré-fabricado do modelo do controlador (por exemplo, definir a posição de transformação do pré-fabricado do controlador com uma posição de deslocamento).

Perfil de visualização

Utilitários do editor

Os utilitários a seguir funcionam apenas no editor e são úteis para melhorar a produtividade do desenvolvimento.

Utilitários de Configuração do Editor do MRTK

Inspetores de serviço

Os Inspetores de Serviço são um recurso somente editor que gera objetos na cena que representam serviços ativos. Selecionar esses objetos exibe inspetores que oferecem links de documentação, controle sobre visualizações do editor e insights sobre o estado do serviço.

Inspetores de Serviço

Você pode habilitar os inspetores de serviço verificando Usar Inspetores de Serviço em Configurações do Editor no Perfil de Configuração.

Renderizador de buffer de profundidade

Compartilhar o buffer de profundidade com algumas plataformas de realidade misturada pode melhorar a estabilização do holograma. Por exemplo, a plataforma Windows Mixed Reality pode modificar a cena renderizada por pixel para considerar movimentos sutis da cabeça durante o tempo necessário para renderizar um quadro. No entanto, essas técnicas exigem buffers de profundidade com dados precisos para saber onde e quão longe a geometria está do usuário.

Para garantir que uma cena renderize todos os dados necessários para o buffer de profundidade, os desenvolvedores podem alternar o recurso Buffer de Profundidade de Renderização em Configurações do Editor no Perfil de Configuração. Isso usará o buffer de profundidade atual e o renderizará como cor para o modo de exibição de cena aplicando um efeito pós-processamento, DepthBufferRenderer, à câmera main.

Utilitário de buffer de profundidade de renderizaçãoO cilindro azul na cena tem um material com ZWrite desativado para que nenhum dado de profundidade seja gravado

Alterando perfis em runtime

É possível atualizar perfis em runtime, e geralmente há dois cenários e momentos diferentes em que isso é útil:

  1. Opção de perfil de inicialização pré-MRTK: na inicialização, antes que o MRTK seja inicializado e o perfil se torne ativo, substituindo o perfil ainda não em uso para habilitar/desabilitar recursos diferentes com base nos recursos do dispositivo. Por exemplo, se a experiência estiver em execução em VR que não tenha hardware de mapeamento espacial, provavelmente não fará sentido ter o componente de mapeamento espacial habilitado.
  2. Opção de perfil ativo: após a inicialização, depois que o MRTK é inicializado e um perfil se torna ativo, trocando o perfil atualmente em uso para alterar a maneira como determinados recursos se comportam. Por exemplo, pode haver uma subexperiência específica no aplicativo que deseja remover completamente os ponteiros de mão distante.

Opção de perfil de inicialização pré-MRTK

Isso pode ser feito anexando um MonoBehaviour (exemplo abaixo) que é executado antes da inicialização do MRTK (ou seja, Awake()). Observe que o script (ou seja, chamar para SetProfileBeforeInitialization) deve ser executado antes do script, o MixedRealityToolkit que pode ser obtido definindo as configurações da Ordem de Execução do Script.

using Microsoft.MixedReality.Toolkit;
using UnityEngine;

/// <summary>
/// Sample MonoBehaviour that will run before the MixedRealityToolkit object, and change
/// the profile, so that when MRTK initializes it uses the profile specified below
/// rather than the one that is saved in its scene.
/// </summary>
/// <remarks>
/// Note that this script must have a higher priority in the script execution order compared
/// to that of MixedRealityToolkit.cs. See https://docs.unity3d.com/Manual/class-MonoManager.html
/// for more information on script execution order.
/// </remarks>
public class PreInitProfileSwapper : MonoBehaviour
{

    [SerializeField]
    private MixedRealityToolkitConfigurationProfile profileToUse = null;

    private void Awake()
    {
        // Here you could choose any arbitrary MixedRealityToolkitConfigurationProfile (for example, you could
        // add some platform checking code here to determine which profile to load).
        MixedRealityToolkit.SetProfileBeforeInitialization(profileToUse);
    }
}

Em vez de "profileToUse", é possível ter algum conjunto arbitrário de perfis que se aplicam a plataformas específicas (por exemplo, um para HoloLens 1, um para VR, um para HoloLens 2 etc. É possível usar vários outros indicadores (por exemplo https://docs.unity3d.com/ScriptReference/SystemInfo.html, ou se a câmera é opaca/transparente) para descobrir qual perfil carregar.

Opção de perfil ativo

Isso pode ser feito definindo a MixedRealityToolkit.Instance.ActiveProfile propriedade como um novo perfil substituindo o perfil ativo.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

Observe que, ao definir ActiveProfile durante o runtime, a destruição dos serviços em execução no momento ocorrerá após o último LateUpdate() de todos os serviços, e a instanciação e inicialização dos serviços associados ao novo perfil ocorrerão antes da primeira Atualização() de todos os serviços.

Uma hesitação de aplicativo perceptível pode ocorrer durante esse processo. Além disso, qualquer script com prioridade mais alta do que o MixedRealityToolkit script pode inserir sua Atualização antes que o novo perfil seja configurado corretamente. Confira Configurações da Ordem de Execução de Script para obter mais informações sobre a prioridade do script.

No processo de alternância de perfil, a câmera de interface do usuário existente permanecerá inalterada, garantindo que os componentes da interface do usuário do Unity que exigem tela ainda funcionem após o comutador.

Confira também