Manipulateur d’objet — MRTK2
ObjectManipulator est le nouveau composant pour le comportement de manipulation, précédemment trouvé dans ManipulationHandler. Le manipulateur d’objets apporte un certain nombre d’améliorations et de simplifications. Ce composant remplace le gestionnaire de manipulation, qui sera déprécié.
Le script ObjectManipulator rend un objet mobile, évolutif et pivotable à l’aide d’une ou deux mains. Le manipulateur d’objet peut être configuré pour contrôler la façon dont l’objet répond aux différentes entrées. Le script doit fonctionner avec la plupart des formes d’interaction, telles que HoloLens 2 main articulée, HoloLens 2 rayons de main, le regard et les mouvements HoloLens 1 et l’entrée du contrôleur de mouvement immersif du casque.
Comment utiliser le manipulateur d’objet
Pour utiliser le manipulateur d’objet, ajoutez d’abord le ObjectManipulator
composant script à un GameObject. Veillez également à ajouter un collider à l’objet, en correspondant à ses limites de saisie.
Pour que l’objet réponde à une entrée de main articulée proche, ajoutez également le NearInteractionGrabbable
script.
Le comportement physique peut être activé pour le manipulateur d’objet en ajoutant un composant rigidbody à l’objet. Le comportement physique activé par l’ajout de ce composant est abordé plus en détail dans Physique et collisions.
De plus, la manipulation peut être contrainte en ajoutant des composants de contrainte de manipulation à l’objet . Il s’agit de composants spéciaux qui fonctionnent avec la manipulation et modifient le comportement de manipulation d’une manière ou d’une autre.
Propriétés et champs de l’inspecteur
Propriétés générales
Transformation de l’hôte
Transformation d’objet qui sera manipulée. La valeur par défaut est l’objet du composant.
Type de manipulation
Spécifie si l’objet peut être manipulé à l’aide d’une ou de deux mains. Étant donné que cette propriété est un indicateur, les deux options peuvent être sélectionnées.
- Une main : active la manipulation d’une seule main si cette option est sélectionnée.
- À deux mains : active la manipulation à deux mains si elle est sélectionnée.
Autoriser la manipulation à distance
Spécifie si la manipulation peut être effectuée à l’aide d’une interaction lointaine avec des pointeurs.
Propriétés de manipulation d’une main
Mode de rotation d’une main à proximité
Spécifie le comportement de l’objet lorsqu’il est saisi d’une main près. Ces options fonctionnent uniquement pour les mains articulées.
- Faire pivoter le centre de l’objet : l’objet pivote à l’aide de la rotation de la main, mais autour du point central de l’objet. L’objet semble moins se déplacer au fur et à mesure qu’il pivote, mais il peut y avoir un sentiment de déconnexion entre la main et l’objet. Plus utile pour les interactions à distance.
- Faire pivoter le point d’appui : faites pivoter l’objet avec la main sur le point de saisie entre le pouce et l’index. On doit avoir l’impression que l’objet est tenu par la main.
Mode de rotation d’une main loin
Spécifie le comportement de l’objet lorsqu’il est saisi d’une main à distance. Ces options fonctionnent uniquement pour les mains articulées.
- Faire pivoter vers le centre de l’objet : faites pivoter l’objet à l’aide de la rotation de la main, mais autour du point central de l’objet. Utile pour inspecter à distance sans que le centre de l’objet ne se déplace à mesure que l’objet pivote.
- Faire pivoter vers le point d’accaparement : faites pivoter l’objet à l’aide de la rotation de la main, mais autour du point d’accès du rayon pointeur. Utile pour une inspection.
Propriétés de manipulation à deux mains
Type de manipulation à deux mains
Spécifie comment la manipulation à deux mains peut transformer un objet. Étant donné que cette propriété est un indicateur, vous pouvez sélectionner n’importe quel nombre d’options.
- Déplacement : le déplacement est autorisé s’il est sélectionné.
- Mise à l’échelle : la mise à l’échelle est autorisée si elle est sélectionnée.
- Rotation : la rotation est autorisée si cette option est sélectionnée.
Contraintes
Activer les contraintes
Ce paramètre active le gestionnaire de contraintes liées. Les modifications de transformation sont traitées par les contraintes inscrites auprès du gestionnaire de contraintes sélectionné.
Gestionnaire de contraintes
La liste déroulante permet de sélectionner l’un des gestionnaires de contraintes attachés. Le manipulateur d’objet garantit qu’un gestionnaire de contraintes est attaché à tout moment. Notez que plusieurs composants du même type s’affichent sous le même nom dans unity. Pour faciliter la distinction entre plusieurs gestionnaires de contraintes sur le même objet, les options disponibles affichent un indicateur sur la configuration du gestionnaire de contraintes sélectionné (sélection manuelle ou automatique des contraintes).
Accéder au composant
La sélection du gestionnaire de contraintes est fournie avec un bouton Accéder au composant . Ce bouton entraîne le défilement de l’inspecteur jusqu’au composant sélectionné afin qu’il puisse être configuré.
Physique
Les paramètres de cette section s’affichent uniquement lorsque l’objet a un composant RigidBody.
Comportement de mise en production
Spécifiez les propriétés physiques qu’un objet manipulé doit conserver lors de sa mise en production. Étant donné que cette propriété est un indicateur, les deux options peuvent être sélectionnées.
- Conserver la vélocité : lorsque l’objet est libéré, si cette option est sélectionnée, elle conserve sa vitesse linéaire.
- Conserver Angular vélocité : lorsque l’objet est libéré, si cette option est sélectionnée, elle conserve sa vitesse angulaire.
Utiliser des forces pour une manipulation proche
Indique si des forces physiques sont utilisées pour déplacer l’objet lors de l’exécution de manipulations proches. Si vous définissez cette valeur sur false , l’objet se sent plus directement connecté à la main de l’utilisateur. La définition de cette valeur sur true honorera la masse et l’inertie de l’objet, mais peut avoir l’impression que l’objet est connecté par un ressort. La valeur par défaut est false.
Adoucissage
Lissage lointain
Indique si le lissage indépendant de la fréquence d’images est activé pour les interactions lointaines. Le lissage à distance est activé par défaut.
Lissage à proximité
Indique si le lissage indépendant de la fréquence d’images est activé pour les interactions proches. Le lissage proche est désactivé par défaut, car l’effet peut être perçu comme étant « déconnecté » de la main.
Lissage actif
Obsolète et seront supprimés dans une version ultérieure. Les applications doivent utiliser SmoothingFar, SmoothingNear ou une combinaison des deux.
Déplacer lerp time
Quantité de lissage à appliquer au mouvement. Le lissage de 0 signifie aucun lissage. Valeur maximale signifie qu’aucune modification de la valeur n’est apportée.
Faire pivoter lerp time
Quantité de lissage à appliquer à la rotation. Le lissage de 0 signifie aucun lissage. Valeur maximale signifie qu’aucune modification de la valeur n’est apportée.
Mettre à l’échelle lerp time
Quantité de lissage à appliquer à l’échelle. Le lissage de 0 signifie aucun lissage. Valeur maximale signifie qu’aucune modification de la valeur n’est apportée.
Événements de manipulation
Le gestionnaire de manipulation fournit les événements suivants :
- OnManipulationStarted : déclenché au démarrage de la manipulation.
- OnManipulationEnded : se déclenche à la fin de la manipulation.
- OnHoverStarted : se déclenche lorsqu’une main ou un contrôleur pointe le manipulateur, de près ou de loin.
- OnHoverEnded : se déclenche lorsqu’une main ou un contrôleur désactive le manipulable, de près ou de loin.
L’ordre de déclenchement des événements pour la manipulation est le suivant :
OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded
S’il n’y a aucune manipulation, vous obtiendrez toujours des événements de pointage avec l’ordre de déclenchement suivant :
OnHoverStarted ->OnHoverEnded
Physique et collisions
Le comportement physique peut être activé en ajoutant un composant de corps rigide au même objet qu’un manipulateur d’objet. Cela permet non seulement la configuration du comportement de libération ci-dessus, mais il permet également les collisions. Sans composant rigidbody, les collisions ne se comportent pas correctement pendant la manipulation :
- Les collisions entre un objet manipulé et un collisionneur statique (c’est-à-dire un objet avec un collider mais aucun corps rigide) ne fonctionnent pas, l’objet manipulé passe directement à travers le collisionneur statique sans être affecté.
- Les collisions entre un objet manipulé et un corps rigide (c’est-à-dire un objet avec un collisionneur et un corps rigide) provoquent une réponse de collision, mais la réponse est sauteuse et non naturelle. Il n’y a pas non plus de réponse de collision sur l’objet manipulé.
Lorsqu’un corps rigide est ajouté, les collisions doivent fonctionner correctement.
Sans structure rigide
Avec un corps rigide
Elastics (expérimental)
Les élastiques peuvent être utilisés lors de la manipulation d’objets via un manipulateur d’objets. Notez que le système élastique est toujours à l’état expérimental. Pour activer elastics, liez un composant de gestionnaire élastique existant ou créez et liez un gestionnaire élastique via le Add Elastics Manager
bouton .