Guia de configuração de perfil 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").

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 principal do Realidade Misturada Toolkit

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

Observação

Realidade Misturada Kit de Ferramentas "bloqueia" as telas de configuração padrão para garantir que você sempre tenha um ponto de partida comum para seu projeto e é incentivado a 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 principal do Realidade Misturada Toolkit, 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 ativo 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 principal de configuração do Realidade Misturada Toolkit, 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 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, esses ajudam a conduzir e gerenciar as complexas interconsecações 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 limites

O sistema de limites converte o limite percebido relatado pelo limite de plataformas subjacentes/sistema guardião. A configuração do visualizador de limites oferece a capacidade de mostrar automaticamente o limite registrado dentro da 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 delimitada

Seleção do sistema de teletransporte

O projeto Realidade Misturada fornece um sistema de teletransporte completo em destaque 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 configura as extensões para o campo de exibição.

Ele também permite que você defina 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, é a funcionalidade de diagnóstico do plug-in.

Configurações de diagnóstico

O perfil de diagnóstico fornece vários sistemas simples para monitorar enquanto o projeto está em execução, incluindo um comutador ativado/desativado ú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 um bom ajuste para seu projeto, leia o Guia 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 facilidade com novos recursos/sistemas, 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 um padrão 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, gerando sistemas, 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, não importa de onde a entrada venha, seu projeto simplesmente implementa 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 ele representa. Em seguida, você só precisa selecionar um eixo (o tipo de dados) que a ação destina-se a 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 sobre ou desativar dados de tipo Um botão controlador
Eixo Único FLOAT Um único valor de dados de precisão Uma entrada de 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 do Dof Vector3 Dados de tipo posicional com 3 eixos flutuantes Controlador somente estilo de posição 3D
Rotação de Três Dof Quatérnion Entrada somente rotacional com 4 eixos flutuantes Um controlador de estilo three degrees, por exemplo, controlador Oculus Go
Seis Dof Realidade Misturada Pose (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 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 traduzir 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 diretamente dentro da estrutura e não incorrem em custos de desempenho.

Por exemplo, converter o evento de entrada de eixo duplo único de um DPad em 4 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 "fora da caixa"

Regras de ação de entrada podem ser configuradas para qualquer um dos eixos de entrada disponíveis. No entanto, 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

Os ponteiros são usados para conduzir a interatividade na cena de qualquer dispositivo de entrada, dando uma direção e um teste de ocorrência com qualquer objeto em uma cena (que tenha um colisor anexado ou seja um componente de interface do usuário). Os ponteiros são configurados automaticamente para controladores, fones de ouvido (foco/foco) e mouse/entrada por 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 se implementarem a interface IMixedRealityPointer do MRTK.

Perfil do Ponteiro de Entrada
  • Extensão de apontamento: determina a extensão de apontamento global para todos os ponteiros, incluindo o olhar.
  • Apontando máscaras de camada raycast: determina em quais camadas os ponteiros serão raycast.
  • Depurar raios pontuais: um auxiliar de depuração para visualizar os raios usados para raycasting.
  • Depurar cores de raios apontando: um conjunto de cores a ser usado 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 para o 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 atual de Gestos é somente 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 – o conjunto "Comportamento de Início" como Início Automático ou Início Manual determina se a palavra-chaveRecognizer será inicializada na inicialização do sistema de entrada ou se o projeto decidirá quando inicializar a palavra-chaveRecognizer. "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 projeto. Eles também podem ser anexados a ações de teclado, se necessário.

Importante

Atualmente, o sistema só dá suporte à fala ao ser executado 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 de 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 configurar 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 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 de qualquer um dos sistemas de controladores pré-criados permite configurar uma única ação de entrada para todas as entradas correspondentes, por exemplo, consulte a tela de configuração do controlador Oculus Touch abaixo:

Tela de configuração do controlador

Há também 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 seus 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 SDK nativos 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 de 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 inspetores de serviço verificando Usar Inspetores de Serviço nas 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 de 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 DepthBufferRendererpós-processamento, à câmera principal.

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 no runtime

É possível atualizar perfis no runtime, e geralmente há dois cenários e horários 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 está em execução em VR que não tem hardware de mapeamento espacial, provavelmente não faz 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 sub-experiência específica no aplicativo que deseja remover completamente ponteiros de mão distantes.

Alternância de perfil de inicialização do 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, chamada para SetProfileBeforeInitialization) precisa ser executado anteriormente ao script, o MixedRealityToolkit que pode ser obtido definindo as configurações da Ordem de Execução de 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 um conjunto arbitrário de perfis que se aplicam a plataformas específicas (por exemplo, uma para o HoloLens 1, outra para VR, outra 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.

Comutador de perfil ativo

Isso pode ser feito definindo a MixedRealityToolkit.Instance.ActiveProfile propriedade para 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 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á antes da primeira Atualização() de todos os serviços.

Uma hesitação perceptível do aplicativo 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. Consulte as configurações da Ordem de Execução de Script para obter mais informações sobre a prioridade de 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 a opção.

Confira também