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
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
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
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
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
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
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
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
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
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
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.