Object Manipulator — MRTK3

Manipulateur d’objets

ObjectManipulator permet une manipulation intuitive des objets dans l’espace 3D avec n’importe quelle modalité ou n’importe quel appareil d’entrée. Il effectue une tâche similaire à XRGrabInteractable de XRI, mais offre des fonctionnalités supplémentaires et des interactions propres à la réalité mixte. Bien que XRGrabInteractable soit entièrement compatible avec nos interacteurs (et vice versa), nous vous recommandons quand même d’utiliser notre implémentation pour une expérience optimale.

Notes

ObjectManipulator est spécifiquement conçu pour manipuler les objets 3D directement et intuitivement. Si vous recherchez des interactions d’interface utilisateur courantes comme des curseurs ou des boutons, consultez nos articles sur les curseurs et les boutons à la place. Évitez d’utiliser ObjectManipulator pour écrire des micro-interactions.

Architecture

Dans MRTK v2, la majeure partie des mathématiques et de la logique complexe des différents types d’entrée était traitée par ObjectManipulator lui-même. Un chemin de code distinct devait être conservé pour chaque type d’interaction, ce qui offrait moins de flexibilité lors de l’introduction de nouveaux types d’interactions. Dans MRTK3, l’interaction est responsable des spécificités dans la façon dont un type particulier d’entrée est traduit en manipulation. ObjectManipulator écoute simplement ces interactions et applique la transformation pertinente à l’objet. Par conséquent, ObjectManipulator dans MRTK3 est beaucoup plus simple et plus petit en termes d’étendue. Consultez l’architecture de l’interaction pour obtenir une description de la façon dont les interactions communiquent par le biais de leurs transformations d’attachement.

Manipulation à n mains

ObjectManipulator prend en charge n’importe quel nombre d’interacteurs participants, ce qui permet de généraliser le comportement d’interaction entre des manipulations à une, deux voire n mains. En règle générale, le centroïde géométrique de toutes les attachTransforms des interactions participantes est utilisé pour les interactions à plusieurs mains. En tant que interactable XRI, il est compatible avec n’importe quel type d’interacteur qui envoie une transformation d’attachement dont le comportement est bon.

Si vous ne voulez pas autoriser les manipulations à plusieurs mains, définissez le Selection Mode XRI sur Single. Dans l’inspecteur, cette propriété s’appelle Multiselect Mode, nom plus spécifique pour éviter toute confusion avec notre Selection Mode MRTK, utilisé pour spécifier si un interactable peut être activé/désactivé (consultez la documentation Bouton pour plus d’informations.)

Mode multisélection

Contraintes

ObjectManipulator utilise l’API Constraints pour limiter les manipulations. Consultez la documentation de Contraintes pour plus d'informations.

Injection de logique de manipulation

Les développeurs peuvent personnaliser le comportement de manipulation d’ObjectManipulator sans sous-classer ni modifier le script lui-même. Il vous suffit d’écrire un nouveau ManipulationLogic<T> et de spécifier le type dans l’inspecteur avec la ManipulationLogicTypes propriété .

De même, les développeurs peuvent personnaliser le comportement de lissage en écrivant une nouvelle implémentation de ITransformSmoothingLogic et en spécifiant le type dans l’inspecteur avec la TransformSmoothingLogicType propriété .

Important

Si vous écrivez vous-même de nouveaux types de logique de manipulation pour un nouveau type d’interaction ou appareil d’entrée, vous suivez probablement un mauvais chemin. La logique de manipulation existante doit fonctionner pour les types d’entrée arbitraires, tant que la transformation d’attachement se comporte bien. Envisagez plutôt d’ajuster ou d’écrire une nouvelle interaction. Pour plus d’informations sur l’écriture d’une logique d’interaction au comportement approprié, consultez la documentation de l’architecture d’interaction et la documentation de l’architecture avec interaction.