Gestionnaire de contraintes — MRTK2

Le gestionnaire de contraintes permet d’appliquer un ensemble de composants de contrainte à une transformation. Les composants de type TransformConstraint qui sont attachés à l’objet de jeu peuvent être pris en considération. Par défaut, le gestionnaire de contraintes collecte automatiquement tous les composants de contrainte attachés à l’objet de jeu et les applique aux transformations traitées. Toutefois, les utilisateurs peuvent choisir de configurer manuellement la liste des contraintes appliquées et d’autoriser uniquement un sous-ensemble de contraintes jointes à être appliquées.

Actuellement, les éléments d’expérience utilisateur MRTK suivants prennent en charge le gestionnaire de contraintes :

Propriétés et champs de l’inspecteur

Le gestionnaire de contraintes peut être utilisé dans deux modes :

  • Sélection de contrainte automatique
  • Sélection de contrainte manuelle

Sélection de contrainte automatique

Sélection automatique

Le mode par défaut du gestionnaire de contraintes, la sélection automatique des contraintes, fournit une liste de tous les composants de contrainte attachés, ainsi que des boutons d’accéder aux boutons et un bouton Ajouter une contrainte.

Ajouter une contrainte à l’objet de jeu

Ce bouton permet d’ajouter un composant de contrainte directement à partir de l’inspecteur du gestionnaire de contraintes. Tous les types de contraintes d’un projet doivent être visibles ici. Pour plus d’informations, consultez Contraintes de transformation .

Accéder au composant

Toutes les contraintes trouvées sur l’objet seront répertoriées ici avec un bouton Accéder au composant . Ce bouton entraîne le défilement de l’inspecteur jusqu’au composant de contrainte sélectionné afin qu’il puisse être configuré.

Sélection de contrainte manuelle

Sélection manuelle

Si le gestionnaire de contraintes est défini en mode manuel, seules les contraintes liées dans la liste de contraintes sont traitées et appliquées à la transformation. La liste affichée affiche uniquement les contraintes sélectionnées par l’utilisateur, ainsi que les boutons ou options permettant de supprimer ou d’ajouter des entrées. Lors de l’activation du mode manuel pour la première fois, le gestionnaire de contraintes remplit la liste de tous les composants disponibles comme point de départ pour la sélection des composants de contrainte attachés.

Supprimer l’entrée

Cette opération supprime l’entrée de la liste sélectionnée manuellement. Notez que cette option ne supprime pas le composant de contrainte de l’objet de jeu. Les composants de contrainte doivent toujours être supprimés manuellement pour ne pas interrompre accidentellement tout autre composant faisant référence à ce composant.

Ajouter une entrée

L’ajout d’une entrée ouvre une liste déroulante affichant tous les composants de contrainte disponibles qui ne figurent pas encore dans la liste manuelle. En cliquant sur l’une des entrées, ce composant sera ajouté à la sélection manuelle de la contrainte.

Ajouter une nouvelle contrainte

Cette option ajoute un composant du type sélectionné à l’objet de jeu et ajoute le composant de contrainte nouvellement créé à la liste des contraintes manuelles.

Contraintes de transformation

Les contraintes peuvent être utilisées pour limiter la manipulation d’une manière ou d’une autre. Par exemple, certaines applications peuvent nécessiter une rotation, mais également exiger que l’objet reste droit. Dans ce cas, une RotationAxisConstraint peut être ajoutée à l’objet et utilisée pour limiter la rotation à l’axe y. MRTK fournit un certain nombre de contraintes, qui sont toutes décrites ci-dessous.

Il est également possible de définir de nouvelles contraintes et de les utiliser pour créer un comportement de manipulation unique qui peut être nécessaire pour certaines applications. Pour ce faire, créez un script qui hérite de TransformConstraint et implémente la propriété abstraite ConstraintType et la méthode abstraite ApplyConstraint. Lors de l’ajout d’une nouvelle contrainte à l’objet, elle doit limiter la manipulation de la façon définie. Cette nouvelle contrainte doit également apparaître dans la sélection automatique du gestionnaire de contraintes ou ajouter une liste déroulante d’entrée en mode manuel.

Toutes les contraintes fournies par MRTK partagent les propriétés suivantes :

Type de main

Spécifie si la contrainte est utilisée pour une main, deux mains ou les deux types de manipulation. Étant donné que cette propriété est un indicateur, les deux options peuvent être sélectionnées.

  • Une main : la contrainte est utilisée lors de la manipulation d’une seule main si elle est sélectionnée.
  • À deux mains : la contrainte est utilisée lors de la manipulation à deux mains si elle est sélectionnée.

Type de proximité

Spécifie si la contrainte est utilisée pour les types de manipulation proches, lointains ou les deux. Étant donné que cette propriété est un indicateur, les deux options peuvent être sélectionnées.

  • Proche : la contrainte sera utilisée lors d’une manipulation proche si elle est sélectionnée.
  • Lointaine : la contrainte sera utilisée lors d’une manipulation lointaine si elle est sélectionnée.

FaceUserConstraint

Utilisateur du visage de la contrainte

Lorsque cette contrainte est attachée à un objet, la rotation est limitée afin que l’objet soit toujours confronté à l’utilisateur. Cela est utile pour les ardoises ou les panneaux. Les propriétés de FaceUserConstraint sont les suivantes :

Face à l’extérieur

L’objet s’affiche loin de l’utilisateur si la valeur est true.

FixedDistanceConstraint

Contrainte Distances fixes

Cette contrainte corrige la distance entre l’objet manipulé et une autre transformation d’objet au début de la manipulation. Cela est utile pour des comportements tels que la fixation de la distance entre l’objet manipulé et la transformation de la tête. Les propriétés de FixedDistanceConstraint sont les suivantes :

Transformation de contrainte

Il s’agit de l’autre transformation à laquelle l’objet manipulé aura une distance fixe. La transformation de l’appareil photo est définie par défaut.

FixedRotationToUserConstraint

Rotation fixe

Cette contrainte corrige la rotation relative entre l’utilisateur et l’objet manipulé pendant sa manipulation. Cela est utile pour les ardoises ou les panneaux, car il garantit que l’objet manipulé montre toujours le même visage à l’utilisateur qu’au début de la manipulation. n’a pas de FixedRotationToUserConstraint propriétés uniques.

FixedRotationToWorldConstraint

Rotation fixe vers le monde

Cette contrainte corrige la rotation globale de l’objet manipulé pendant sa manipulation. Cela peut être utile dans les cas où aucune rotation ne doit être transmise par manipulation. n’a pas de FixedRotationToWorldConstraint propriétés uniques :

MaintainApparentSizeConstraint

Conserver la taille apparente

Lorsque cette contrainte est attachée à un objet, quelle que soit la distance entre l’objet et l’utilisateur, elle conserve la même taille apparente pour l’utilisateur (c’est-à-dire qu’elle occupe la même proportion du champ de vision de l’utilisateur). Cela peut être utilisé pour garantir qu’une ardoise ou un panneau de texte reste lisible lors de la manipulation. n’a pas de MaintainApparentSizeConstraint propriétés uniques :

MoveAxisConstraint

Axe de déplacement des contraintes

Cette contrainte peut être utilisée pour déterminer le long des axes sur lesquels un objet manipulé peut être déplacé. Cela peut être utile pour manipuler des objets sur la surface d’un plan ou le long d’une ligne. Les propriétés de MoveAxisConstraint sont les suivantes :

Contrainte sur le mouvement

Spécifie les axes sur lesquels empêcher le mouvement. Par défaut, ces axes seront globaux plutôt que locaux, mais cela peut être modifié ci-dessous. Étant donné que cette propriété est un indicateur, vous pouvez sélectionner n’importe quel nombre d’options.

  • Axe X : le déplacement le long de l’axe des X est limité s’il est sélectionné.
  • Axe Y : le mouvement le long de l’axe y est limité si cette option est sélectionnée.
  • Axe Z : le mouvement le long de l’axe des zs est limité s’il est sélectionné.

Utiliser l’espace local pour la contrainte

Limite relative les axes de transformation locale de l’objet manipulé si la valeur est true. False par défaut.

RotationAxisConstraint

Axe de rotation des contraintes

Cette contrainte peut être utilisée pour déterminer quels axes un objet manipulé peut faire l’objet d’une rotation. Cela peut être utile pour maintenir un objet manipulé à la verticale, tout en autorisant les rotations de l’axe Y, par exemple. Les propriétés de RotationAxisConstraint sont les suivantes :

Contrainte sur la rotation

Spécifie les axes pour lesquels empêcher la rotation. Par défaut, ces axes seront globaux plutôt que locaux, mais cela peut être modifié ci-dessous. Étant donné que cette propriété est un indicateur, vous pouvez sélectionner n’importe quel nombre d’options.

  • Axe Y : la rotation autour de l’axe y est limitée si cette option est sélectionnée.
  • Axe Z : la rotation autour de l’axe des zs est limitée si cette option est sélectionnée.
  • Axe X : la rotation autour de l’axe x est limitée si elle est sélectionnée.

Utiliser l’espace local pour la contrainte

Limite relative les axes de transformation locale de l’objet manipulé si la valeur est true. False par défaut.

MinMaxScaleConstraint

Min Max Constatint

Cette contrainte permet de définir des valeurs minimales et maximales pour l’échelle de l’objet manipulé. Cela est utile pour empêcher les utilisateurs de mettre à l’échelle un objet trop petit ou trop grand. Les propriétés de MinMaxScaleConstraint sont les suivantes :

Mise à l’échelle minimale

Valeur d’échelle minimale pendant la manipulation.

Mise à l’échelle maximale

Valeur d’échelle maximale pendant la manipulation.

Par rapport à l’état initial

Si la valeur est true, les valeurs ci-dessus sont interprétées comme étant relatives à l’échelle initiale des objets. Sinon, elles seront interprétées comme des valeurs d’échelle absolues.