Manipulateur d’objet — MRTK2

Manipulateur d’objets

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.

Utilisation du gestionnaire de manipulation dans l’éditeur Unity

Propriétés et champs de l’inspecteur

Structure du manipulateur d’objet

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.

Gestionnaire de manipulation

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

Aucun corps rigide

Avec un corps rigide

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 .

Elastics de contrôle de limites

Voir aussi