Guia de migração de conceito de MRTK2 para MRTK3

Ao começar a usar o MRTK3, você observará que vários conceitos no MRTK v2 foram alterados, substituídos ou removidos. Isso ocorre porque o MRTK3 usa a estrutura do Kit de Ferramentas de Interação XR (XRI) do Unity para lidar com a interação e o Sistema de Entrada do Unity mais OpenXR para entrada. Este documento ajudará a preencher a lacuna entre os conceitos do MRTK v2 e seus equivalentes do MRTK3.

Importante

Para desenvolvedores iniciantes no XRI, é recomendável examinar primeiro a Documentação de arquitetura do XRI do Unity. Toda a documentação do XRI também se aplica ao MRTK3, pois a maioria dos recursos de interação e entrada são simplesmente herdados do XRI.

Terminologia

Termo do MRTK v2 Termo do MRTK3 Descrição
Ponteiro Interagente Os interagentes executam interações em interativos. Alguns interagentes (mas não todos) são controlados por controladores, dos quais recebem ações de entrada e poses. Outros interagentes operam independentemente dos controladores.

O MRTK envia vários Interagentes personalizados que fornecem interações úteis de realidade misturada, além dos Interagentes básicos que o Unity já fornece. Os interagentes personalizados podem ser criados por meio da herança ou implementando as interfaces do Interagente (IXRHoverInteractor, IXRSelectInteractor etc.). Para obter mais informações, consulte a Documentação de arquitetura do interagente.
NearInteractionGrabbable, NearInteractionTouchable, IMixedRealityPointerHandler Interativo Os interativos são os destinatários das interações. O MRTK envia vários Interativos personalizados que fornecem interações úteis de realidade misturada, além dos Interativos básicos que o Unity já fornece. Os interativos personalizados podem ser criados por meio da herança ou implementando as interfaces do interativo (IXRHoverInteractable, IXRSelectInteractable etc.). Consulte a Documentação de arquitetura do interativo para obter mais informações sobre como o MRTK estende interativos do XRI.
Controller Controller Um ActionBasedController é uma coleção de ações de entrada do Unity que representa as associações relacionadas a um dispositivo específico. A coleção de ações de entrada pode ser derivada de vários dispositivos, pois não há uma relação direta entre ActionBasedControllers e dispositivos de entrada subjacentes. (DeviceBasedController é um mapeamento direto de um dispositivo de entrada, mas não os usamos.)

Muitos interagentes (ControllerBasedInteractors, especificamente) ouvem Controladores para ações de entrada – ou seja, todos os ControllerBasedInteractors sob um XRController compartilharão a mesma ação de seleção.
Sistema de teletransporte Sistema de locomoção O Sistema de locomoção permite que o usuário se mova sobre a cena durante uma experiência do XR. O sistema do MRTK v2 permite hotspots básicos de teletransporte e teleportação, com alto grau de personalização para o cursor de teleportação e o comportamento do ponteiro. O XRI oferece as seguintes funcionalidades adicionais para locomoção:
  • Um provedor de giro de ajuste que gira a plataforma por ângulos fixos
  • Um provedor de giro contínuo que gira suavemente a plataforma ao longo do tempo
  • Um provedor de movimentação contínua que move suavemente a plataforma ao longo do tempo
Provedor de foco XR Interaction Manager O XRInteractionManager é o mecanismo do Unity que serve como intermediário entre os interagentes e interativos na cena. O XRInteractionManager do Unity sincroniza e arbitra todas as interações entre interagentes e interativos e permite maior flexibilidade quando comparado ao Provedor de foco herdado.
Mediador de ponteiro Gerenciador de modo de interação O novo Gerenciador de modo de interação é usado para habilitar/desabilitar conjuntos de interagentes, dependendo do contexto dentro da cena. Consulte a documentação do gerenciador de modos para obter mais informações.
SceneQuerymask Camadas de interação As camadas de interação do XRI permitem que os desenvolvedores filtrem quais interagentes podem agir sobre quais interativos. Essas camadas são distintas das camadas físicas do Unity.
Foco Passar o mouse Os interagentes emitem Hovers em interativos quando o interativo é um destino válido para o interagente. Geralmente, um Hover indica a intenção do interagente, como direcionamento com um raio, proximidade da mão para captura ou se o usuário estiver olhando para o objeto.
Selecionar/cutucar/agarrar/voz etc. Selecionar Os interagentes emitem Selects em interativos quando o interativo é um destino válido e o interagente opta por fazê-lo. Os ControllerBasedInteractors geralmente emitem Selects quando a ação de entrada selecionada do controlador correspondente é disparada. Outros interagentes podem ter uma lógica mais complexa para determinar quando as seleções devem ser emitidas para o interativo de destino.

O MRTK v2 lidou com diferentes tipos de interações com eventos e caminhos de códigos separados – ou seja, uma captação foi uma interação fundamentalmente diferente de um clique de raio ou uma cutucada, gerada por sistemas separados. No MRTK3, todas essas maneiras de "selecionar" um objeto são unificadas sob a mesma interação Select.

Desencorajamos fortemente os desenvolvedores de criar uma lógica de interação que dependa de um tipo específico de interação; em vez disso, escreva um código generalizável que responda genericamente a todos os Selects. Dessa forma, suas interações funcionam em todas as modalidades de entrada e, até mesmo, para tipos de interações que ainda não foram desenvolvidos. Consulte a Arquitetura do interativo para ler mais informações sobre o motivo pelo qual não recomendamos isso.
N/D Ativar Ativar é uma ação extra que pode ser gerada em um objeto que já foi selecionado. Por exemplo, se um usuário Selecionar uma arma de esguicho com a alça do controlador, o gatilho vai disparar com uma ação Ativar.
Provedor de Dados XRSubsystem + Provedor A maioria dos provedores de dados não é mais necessária no MRTK3, pois o Sistema de Entrada do Unity e o OpenXR lidam com a maioria das tarefas de entrada multiplataforma. No entanto, para algumas exceções ainda não cobertas pelo Unity, fornecemos XRSubsystems que podem fornecer dados em diferentes plataformas – por exemplo, a HandsAggregatorSubsystem e a SpeechSubsystem. Consulte a documentação de arquitetura de subsistemas para obter uma leitura mais conceitual em nossa abordagem de subsistemas.

Eventos

Termo do MRTK v2 Termo do XRI Observações
OnFocusEnter/Exit FirstHoverEnter
LastHoverExit
Observe os prefixos First e Last. Eles estão incluídos nos nomes de eventos porque qualquer número de Interagentes pode focalizar simultaneamente um Interativo. Você também pode ouvir cada foco individual entrar/sair com HoverEnter e HoverExit, embora, geralmente, seja menos útil do que monitorar o status geral de foco.
OnPointerDown/Up FirstSelectEnter
LastSelectExit
Observe os prefixos First e Last. Eles são incluídos nos nomes de eventos porque qualquer número de Interagentes pode selecionar simultaneamente um Interativo (dependendo do modo de seleção). Você também pode ouvir cada seleção individual entrar/sair com SelectEnter e SelectExit, embora, geralmente, seja menos útil do que monitorar o status geral de seleção.
OnPointerDragged N/D Basta sondar as transformações de anexação interactorsSelecting com GetAttachTransform durante uma seleção. Tenha em mente que, dependendo do modo de seleção do interativo, um número não associado de interagentes pode selecionar (e manipular) um interativo.
OnSourcePoseChanged, OnSourceDetected, OnSourceLost N/D O XRI não gera esses eventos. Eles são tratados por meio do XRController monitorando seu dispositivo de entrada associado.