Manipulador de Objetos – MRTK3
ObjectManipulator
permite a manipulação intuitiva de objetos no espaço 3D com qualquer dispositivo de entrada ou modalidade. Executa uma tarefa semelhante ao XRI XRGrabInteractable
, mas oferece funcionalidades adicionais e interações específicas da realidade mista. Embora seja XRGrabInteractable
totalmente compatível com os nossos interatores (e o contrário também é verdade), recomendamos que utilize a nossa implementação para obter a melhor experiência.
Nota
ObjectManipulator
foi concebido especificamente para manipular objetos 3D de forma direta e intuitiva. Se estiver à procura de interações comuns da IU, como controlos de deslize ou botões, veja os nossos artigos de controlos de deslize e botões. Evite utilizar ObjectManipulator
para escrever micro-interações.
Arquitetura
No MRTK v2, a maior parte da lógica e matemática complexas para os diferentes tipos de entrada foram processadas por ObjectManipulator
si só. Um codepath separado tinha de ser mantido para cada tipo de interação, o que resultou numa menor flexibilidade ao introduzir novos tipos de interações. No MRTK3, o interator é responsável pelas especificidades de como um determinado tipo de entrada é traduzido numa manipulação. O ObjectManipulator simplesmente escuta estes interatores e aplica a transformação relevante ao objeto. Como resultado, ObjectManipulator
no MRTK3 é significativamente mais simples e menor no âmbito. Veja a arquitetura do Interactor para obter descrições de como os interatores comunicam através das respetivas transformações de anexação.
n
manipulações entregues
ObjectManipulator
suporta qualquer número de interatores participantes, permitindo um comportamento de interação generalizável entre uma, duas e até n
manipulações entregues. Geralmente, o centroid geométrico de todos os attachTransforms dos interatores participantes é utilizado para interações multi-mãos. Como um XRI interacionável, é compatível com qualquer tipo de interator que submeta uma transformação de anexação bem comportada.
Se não quiser permitir manipulações com várias mãos, defina o XRI Selection Mode
como Single
. Aliamos esta propriedade no inspetor ao nome Multiselect Mode
mais específico para evitar confusões com o nosso MRTK Selection Mode
, que é utilizado para especificar se um interacionável pode ser alternado (consulte a Documentação do botão para obter mais esclarecimentos.)
Restrições
ObjectManipulator
utiliza a API Constraints para restringir as manipulações. Veja a documentação Restrições para obter mais informações.
Injeção lógica de manipulação
Os programadores podem personalizar o comportamento de manipulação de ObjectManipulator
sem precisar de subclasse ou modificar o script em si. Basta escrever um novo ManipulationLogic<T>
e especificar o tipo no inspetor com a ManipulationLogicTypes
propriedade.
Da mesma forma, os programadores podem personalizar o comportamento de suavização ao escrever uma nova implementação e ITransformSmoothingLogic
especificar o tipo no inspetor com a TransformSmoothingLogicType
propriedade.
Importante
Se estiver a escrever novos tipos de lógica de manipulação para um novo tipo de interação ou dispositivo de entrada, é provável que esteja a seguir o caminho errado. A lógica de manipulação existente deve funcionar para tipos de entrada arbitrários, desde que a transformação de anexação seja bem comportada. Considere ajustar ou escrever um novo interator. Leia a documentação de arquitetura do Interactor e a documentação arquitetura Interagiável para obter mais informações sobre como escrever lógica de interação bem comportada.