Manipulador de objetos – MRTK3

Manipulador de objetos

O ObjectManipulator permite a manipulação intuitiva de objetos no espaço 3D com qualquer modalidade ou dispositivo de entrada. Ele executa uma tarefa semelhante à XRGrabInteractable do XRI, mas oferece recursos adicionais e interações específicas da realidade misturada. Embora o XRGrabInteractable seja totalmente compatível com nossos interagentes (e vice-versa), ainda recomendamos o uso da nossa implementação para obter a melhor experiência possível.

Observação

O ObjectManipulator foi projetado especificamente para manipular objetos 3D de maneira direta e intuitiva. Se você estiver procurando interações comuns da interface do usuário, como controles deslizantes ou botões, veja os artigos controles deslizantes e botões. Evite usar o ObjectManipulator para gravar microinterações.

Arquitetura

No MRTK v2, a maior parte da lógica e da matemática complexas dos diferentes tipos de entrada eram processadas pelo próprio ObjectManipulator. Um codepath separado teve que ser mantido para cada tipo de interação, resultando em menos flexibilidade ao introduzir novos tipos de interações. No MRTK3, o interagente é responsável pelas especificidades de como um tipo específico de entrada é convertido em uma manipulação. O ObjectManipulator simplesmente escuta esses interagentes e aplica a transformação relevante ao objeto. Como resultado, o ObjectManipulator no MRTK3 é significativamente mais simples e tem um escopo menor. Consulte a Arquitetura do interagente para obter descrições de como os interagentes se comunicam por meio de suas transformações de anexação.

Manipulações de n mãos

O ObjectManipulator dá suporte a qualquer número de interagentes participantes, permitindo um comportamento de interação generalizável em manipulações de uma, duas e até mesmo n mãos. Geralmente, o centroide geométrico de todos os attachTransforms dos participantes é usado para interações com várias mãos. Por ser um interativo do XRI, ele é compatível com qualquer tipo de interagentes que envie uma transformação de anexação com comportamento válido.

Se você não quiser permitir manipulações com várias mãos, defina o XRI Selection Mode como Single. Nomeamos essa propriedade no inspetor com o nome Multiselect Mode mais específico, a fim de evitar confusão com o Selection Mode do MRTK, usado para especificar se um interativo é alternável (confira a documentação do Botão para saber mais).

Modo de seleção múltipla

Restrições

O ObjectManipulator usa a API de restrições para restringir as manipulações. Consulte a Documentação de restrições para obter mais informações.

Injeção lógica de manipulação

Os desenvolvedores podem personalizar o comportamento de manipulação do ObjectManipulator sem precisar subclassificar nem modificar o script. Basta escrever um novo ManipulationLogic<T> e especificar o tipo no inspetor com a ManipulationLogicTypes propriedade .

Da mesma forma, os desenvolvedores podem personalizar o comportamento de suavização escrevendo uma nova implementação de ITransformSmoothingLogic e especificando o tipo no inspetor com a TransformSmoothingLogicType propriedade .

Importante

Se você se encontrar escrevendo novos tipos de lógica de manipulação para um novo tipo de interação ou dispositivo de entrada, provavelmente você está indo pelo caminho errado. A lógica de manipulação existente deve funcionar para qualquer tipo de entrada, desde que a transformação de anexação tenha um comportamento válido. Considere ajustar ou escrever um novo interagente. Leia a Documentação de arquitetura do interagente e a Documentação de arquitetura do interativo para obter mais informações sobre como escrever uma lógica de interação bem comportada.