Guia de configuração do perfil MRTK2

O Realidade Misturada Toolkit centraliza a maior parte da configuração necessária para gerenciar o kit de ferramentas o mais 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 de Realidade Misturada Toolkit principal

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

Observação

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 é 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.

MRTK configuration profile

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

Importante

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

Ao abrir o Perfil de Configuração do Realidade Misturada Toolkit principal, você verá a seguinte tela no inspetor:

MRTK configuration scene

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 de configuração de Realidade Misturada Toolkit principal, essa configuração define a operação padrão da escala de ambiente Realidade Misturada para seu projeto.

Experiance settings

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.

Camera Profile

Configurações do sistema de entrada

O Realidade Misturada Project 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.

Input System settings 1

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

Input System settings 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 de plataformas subjacentes/sistema guardião. A configuração do visualizador de limites 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.

Boundry Visualization Settings

Seleção do sistema de teletransporte

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

Teleport System settings

Configurações de reconhecimento espacial

O Realidade Misturada Project fornece um sistema de reconhecimento espacial reconstruído para trabalhar com sistemas de verificação espacial no projeto selecionado por padrão.

Spatial Awareness settings 1

A Realidade Misturada Toolkit configuração de reconhecimento espacial permite personalizar como o sistema é iniciado, seja automaticamente quando o aplicativo é iniciado ou posterior programaticamente, bem como definir 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 para dispositivos que podem fornecer um ambiente verificado.

Spatial Awareness settings 2

Configurações de diagnóstico

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

Diagnostics settings

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.

Diagnostics settings System settings 2

Configurações do sistema de cena

O MRTK fornece esse serviço opcional para ajudá-lo a gerenciar 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.

Scene System settings 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 um padrão MonoBehaviour ou singleton desajeitado. 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.

additional System settings

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 vem, seu projeto simplesmente implemente essas ações como "Coisas a 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 do 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.

Configuration Profile

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.

Input action rules profile


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.

Input Pointer Profile
  • 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 é apenas para o HoloLens e será aprimorada para outros sistemas à medida que forem adicionados ao Toolkit no futuro (ainda não há datas).

Gesture configuration

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 geral – 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 não há datas).

Configuration Profile screens

Configuração de mapeamento do controlador

Uma das principais telas de configuração do 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.

Controller Mapping

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 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:

Controller config screen

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 controle 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 prefab do modelo de controlador (por exemplo, definir a posição de transformação do prefab do controlador com uma posição de deslocamento).

Visualization profile

Utilitários do editor

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

MRTK Editor Configuration Utilities

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. A seleção desses objetos exibe inspetores que oferecem links de documentação, controle sobre visualizações do editor e insights sobre o estado do serviço.

Service Inspectors

Você pode habilitar inspetores de serviço verificando Os Inspetores de Serviço de Uso no Editor Configurações 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 levar em conta os 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 no Editor Configurações 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.

Render Depth Buffer UtilityO cilindro azul na cena tem um material com ZWrite desativado para que nenhum dado de profundidade seja gravado

Alteração de perfis em runtime

É possível atualizar perfis em runtime, e geralmente há dois cenários e horários diferentes nos quais 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, substitua 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 for inicializado e um perfil se tornar ativo, troque o perfil atualmente em uso para alterar a forma como determinados recursos se comportam. Por exemplo, pode haver uma sub-experiência específica no aplicativo que deseja que ponteiros de mão distantes sejam completamente removidos.

Pre MRTK initialization profile switch

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) precisa ser executado antes do script, o MixedRealityToolkit que pode ser alcançado 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 the 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 HoloLens 1, uma 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, durante ActiveProfile 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 notável hesitação do aplicativo pode ocorrer durante esse processo. Além disso, qualquer script com prioridade maior 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 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 a opção.

Veja também