Manipulateur d’objets — MRTK2

Object manipulator

ObjectManipulator est le nouveau composant du 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 est un remplacement du 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’objets peut être configuré pour contrôler la façon dont l’objet répond à diverses entrées. Le script doit fonctionner avec la plupart des formes d’interaction, telles que HoloLens 2 main articulée, HoloLens 2 rayons de la main, HoloLens 1 regard et mouvements et entrée du contrôleur de mouvement du casque immersif.

Comment utiliser le manipulateur d’objets

Pour utiliser le manipulateur d’objets, ajoutez d’abord le composant de ObjectManipulator script à un GameObject. Veillez également à ajouter un collider à l’objet, correspondant à ses limites attrapables.

Pour que l’objet réponde à une entrée manuelle près articulée, ajoutez également le NearInteractionGrabbable script.

Le comportement physique peut être activé pour le manipulateur d’objets en ajoutant un composant rigide à l’objet. Le comportement physique activé en ajoutant ce composant est abordé plus en détail dans la physique et les collisions.

En outre, 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 certaine manière.

Using the Manipulation Handler in the Unity editor

Propriétés et champs de l’inspecteur

Object Manipulator Structure

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 main si elle est sélectionnée.
  • Deux mains : active la manipulation de deux mains si elle est sélectionnée.

Autoriser la manipulation de loin

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 près

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 sur le centre d’objets : l’objet pivote à l’aide de la rotation de la main, mais sur le point central de l’objet. L’objet semble se déplacer moins à mesure qu’il pivote, mais il peut y avoir un sentiment de déconnexion entre la main et l’objet. Plus utile pour l’interaction de loin.
  • Faire pivoter sur le point de saisie : faire pivoter l’objet avec la main sur le point de saisie entre le pouce et l’index. Il doit se sentir comme si l’objet est maintenu 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 le centre d’objets : faire pivoter l’objet à l’aide de la rotation de la main, mais à propos du point central de l’objet. Utile pour l’inspection à une distance sans déplacement du centre d’objets à mesure que l’objet pivote.
  • Faire pivoter sur le point de saisie : faire pivoter l’objet à l’aide de la rotation de la main, mais au sujet du point d’accès du rayon de pointeur. Utile pour une inspection.

Propriétés de manipulation à deux mains

Type de manipulation à deux mains

Spécifie comment la manipulation manuelle peut transformer un objet. Étant donné que cette propriété est un indicateur, un nombre quelconque d’options peut être sélectionné.

  • 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 elle est sélectionnée.

Manipulation Handler

Contraintes

Activer les contraintes

Ce paramètre active le gestionnaire de contraintes liées. Les modifications de transformation seront traitées par les contraintes inscrites dans le 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’objets garantit qu’il existe un gestionnaire de contraintes 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 de contrainte).

Accéder au composant

La sélection du gestionnaire de contraintes est fournie avec un bouton Atteindre le composant . Ce bouton entraîne le défilement de l’inspecteur vers le composant sélectionné afin qu’il puisse être configuré.

Physique

Paramètres de cette section n’apparaissent que 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 la mise en production. Étant donné que cette propriété est un indicateur, les deux options peuvent être sélectionnées.

  • Conserver la vitesse : 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 la manipulation proche

Indique si les forces physiques sont utilisées pour déplacer l’objet lors de l’exécution de manipulations proches. La définition de cette valeur sur false rend l’objet plus directement connecté à la main des utilisateurs. Définir cette valeur sur true honorera la masse et l’inertie de l’objet, mais peut se sentir comme si l’objet est connecté à travers un printemps. La valeur par défaut est false.

Adoucissage

Lissage loin

Indique si le lissage indépendant de la fréquence d’images est activé pour les interactions de loin. Le lissage lointain est activé par défaut.

Lissage près de

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 sera supprimé dans une version ultérieure. Les applications doivent utiliser SmoothingFar, SmoothingNear ou une combinaison des deux.

Déplacer l’heure du lerp

Quantité de lissage à appliquer au mouvement. Le lissage de 0 signifie qu’il n’y a pas de lissage. La valeur maximale signifie qu’aucune modification n’est apportée à la valeur.

Faire pivoter lerp time

Quantité de lissage à appliquer à la rotation. Le lissage de 0 signifie qu’il n’y a pas de lissage. La valeur maximale signifie qu’aucune modification n’est apportée à la valeur.

Mettre à l’échelle lerp time

Quantité de lissage à appliquer à l’échelle. Le lissage de 0 signifie qu’il n’y a pas de lissage. La valeur maximale signifie qu’aucune modification n’est apportée à la valeur.

Événements de manipulation

Le gestionnaire de manipulation fournit les événements suivants :

  • OnManipulationStarted : déclenché lors du démarrage de la manipulation.
  • OnManipulationEnded : se déclenche lorsque la manipulation se termine.
  • OnHoverStarted : se déclenche lorsqu’une main ou un contrôleur place le manipulateur, proche ou lointain.
  • OnHoverEnded : se déclenche lorsqu’une main ou un contrôleur désactive le manipulateur, proche ou lointain.

L’ordre de déclenchement de l’événement pour la manipulation est le suivant :

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

En l’absence de 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’objets. Non seulement cela permet la configuration du comportement de mise en production ci-dessus, il permet également des collisions. Sans composant rigide, 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 collider statique non affecté.
  • Les collisions entre un objet manipulé et un corps rigide (c’est-à-dire un objet avec un collisionneur et un corps rigide) provoquent la réaction rigide du corps rigide, mais la réponse est sautée 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

No Rigid Body

Avec un corps rigide

Rigid Body

Elastics (expérimental)

Les élastiques peuvent être utilisés lors de la manipulation d’objets via le manipulateur d’objets. Notez que le système élastique est toujours dans un état expérimental. Pour activer les élastiques, liez un composant de gestionnaire élastique existant ou créez et liez un nouveau gestionnaire d’élastiques via le Add Elastics Manager bouton.

Bounds Control Elastics

Voir aussi