Object Manipulator — MRTK3
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.)
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.