Partager via


Manipulateur d’objet — MRTK3

Manipulateur d’objet

ObjectManipulator permet une manipulation intuitive d’objets dans l’espace 3D avec n’importe quel périphérique ou modalité d’entrée. Il effectue une tâche similaire à XRI XRGrabInteractable, mais offre des fonctionnalités supplémentaires et des interactions spécifiques à la réalité mixte. Bien que le XRGrabInteractable soit entièrement compatible avec nos interacteurs (et l’inverse est également vrai), nous vous recommandons d’utiliser notre implémentation pour une expérience optimale.

Remarque

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

Architecture

Dans MRTK v2, la plupart des logiques et mathématiques complexes pour les différents types d’entrée ont été gérées par ObjectManipulator elles-mêmes. Un codepath distinct devait être conservé pour chaque type d’interaction, ce qui entraînait moins de flexibilité lors de l’introduction de nouveaux types d’interactions. Dans MRTK3, l’interacteur est responsable des spécificités de la façon dont un type particulier d’entrée est traduit en manipulation. ObjectManipulator écoute simplement ces interacteurs et applique la transformation appropriée à l’objet. Par conséquent, ObjectManipulator dans MRTK3 est beaucoup plus simple et de plus petite portée. Consultez Architecture de l’interacteur pour obtenir des descriptions de la façon dont les interacteurs communiquent par le biais de leurs transformations d’attachement.

n-manipulations de mains

ObjectManipulator prend en charge n’importe quel nombre d’interacteurs participants, ce qui permet un comportement d’interaction généralisable sur les manipulations d’une, de deux et même nde mains. En règle générale, le centroïde géométrique des attachTransforms de tous les interacteurs participants est utilisé pour les interactions multi-mains. En tant qu’élément interagissant XRI, il est compatible avec tout type d’interacteur qui envoie une transformation d’attachement bien conduite.

Si vous ne souhaitez pas autoriser les manipulations multi-mains, définissez XRI Selection Mode sur Single. Nous alias cette propriété dans l’inspecteur avec le nom Multiselect Mode plus spécifique pour éviter toute confusion avec notre MRTK Selection Mode, qui est utilisé pour spécifier si un interactable peut être basculé (consultez la documentation button pour plus d’informations.)

Mode multisélection

Contraintes

ObjectManipulator utilise l’API Constraints pour limiter les manipulations. Pour plus d’informations, consultez la documentation contraintes .

Injection de logique de manipulation

Les développeurs peuvent personnaliser le comportement de manipulation de ObjectManipulator sans avoir à sous-classer ou modifier le script lui-même. Écrivez simplement un nouveau ManipulationLogic<T> et spécifiez 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é .

Importante

Si vous vous trouvez à écrire de nouveaux types de logique de manipulation pour un nouveau type d’interaction ou de périphérique d’entrée, vous allez probablement dans le mauvais chemin. La logique de manipulation existante doit fonctionner pour les types d’entrée arbitraires tant que la transformation d’attachement est bien conduite. Envisagez plutôt d’ajuster ou d’écrire un nouvel interacteur. Pour plus d’informations sur l’écriture d’une logique d’interaction, consultez la documentation sur l’architecture interactable et la documentation sur l’architecture interactable .