Partilhar via


Manipulador de Objetos – MRTK3

Manipulador de objetos

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.

nmanipulações entregues

ObjectManipulator suporta qualquer número de interatores participantes, permitindo um comportamento de interação generalizável entre uma, duas e até nmanipulaçõ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.)

Modo de seleção múltipla

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.