Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
BoundsControl fournit un cadre englobant de taille automatique, ainsi que des affordances de manipulation pour la rotation et la mise à l’échelle.
Dans MRTK 2.x, BoundsControl a été principalement généré au moment de l’exécution via l’utilisation de la configuration ScriptableObjects. Dans MRTK3, la configuration et la personnalisation de BoundsControl ont été considérablement simplifiées. Les visuels et les poignées de limites sont simplement un préfabriqué personnalisable que BoundsControl instancie au moment de l’exécution. Les développeurs peuvent modifier et personnaliser le préfabriqué des visuels, ou même créer de nouveaux visuels de limites à partir de zéro. Nous fournissons des implémentations de visuels de limites standard, en suivant le nouveau langage de conception Mixed Reality.
Les nouveaux visuels offrent un retour visuel simplifié qui illustre l’intention de l’utilisateur et la manipulation de l’objet avec un bruit visuel peu intrusif.
Installation
Ajoutez simplement BoundsControl à un objet existant et remplissez la BoundsVisualsPrefab référence avec les visuels de limites que vous souhaitez utiliser. Nous fournissons quelques visuels de limites prédéfinis que vous pouvez utiliser.
Importante
Nous recommandons vivement aux développeurs d’ajouter MinMaxScaleConstraint pour empêcher l’utilisateur de mettre à l’échelle l’objet vers une taille trop petite ou grande.
Pour utiliser les effets d’intention et de focus des visuels de limites, vous devez avoir un StatefulInteractable sur l’objet . Si l’interactable n’est pas détecté automatiquement, vous pouvez spécifier la connexion dans l’inspecteur BoundsControl.
Remarque
Nous recommandons aux développeurs d’utiliser ObjectManipulator avec BoundsControl pour offrir aux utilisateurs une manipulation directe en plus de la manipulation basée sur l’affordance. ObjectManipulator peut servir de StatefulInteractable pour les états de pointage/focus auxquels les visuels de limites répondent.
Préfabriqués de visuels de limites
Nous proposons plusieurs visuels de limites prédéfinis à utiliser avec BoundsControl. Les développeurs sont encouragés à créer des variantes préfabriquées de ces visuels et à les personnaliser en fonction de leurs besoins. Les animations de handle et les états sont alimentés par StateVisualizer, ce qui permet aux développeurs de personnaliser davantage l’apparence des affordances.
Gérer le style d’occlusion
Ces visuels de limites offrent une conception visuelle simplifiée avec moins de distractions pour l’utilisateur. Seuls les handles appropriés le long des bords des limites sont visibles. Les visuels de limites contractent, développent et modifient la couleur/l’épaisseur en fonction de l’intention de l’utilisateur et de la progression de la sélection. Nous vous recommandons vivement d’utiliser ce style visuel de limites.
Intention seule
Dans certains contextes, les handles peuvent être indésirables, et les développeurs peuvent vouloir utiliser les visuels de limites uniquement comme un indicateur agréable de l’intention de l’utilisateur. Bien que ce préfabriqué effectue le travail, le même effet peut être obtenu avec l’un des autres visuels de limites en sélectionnant HandleType.None. Nous avons constaté que les visuels de limites pouvant être mis en file d’attente sont un élément de retour visuel satisfaisant et agréable pour de nombreux contextes différents, pas seulement pour la manipulation basée sur le handle.
Style hérité
Ces visuels de limites affichent toutes les poignées et les bords de la zone. Cela correspond davantage au langage de conception hérité et au comportement précédent observé dans MRTK 2.x ; Toutefois, cette conception peut être plus gênante pour les utilisateurs en raison d’un bruit visuel inutile. En outre, la présence des poignées qui se trouvent devant l’objet (et derrière) peut entraîner des problèmes avec la manipulation indirecte du pincement du regard. Nous vous déconseillons d’utiliser ce style pour les nouvelles applications, en particulier celles qui tirent parti du ciblage du regard.
Conception d’interaction
Dans l’itération actuelle, nous proposons une interaction simple d’activation/désactivation. En cliquant sur les limites sur place (en d’autres termes, en sélectionnant l’objet, en ne le déplaçant pas et en le relâchant), les poignées peuvent être activées et désactivées. La tolérance de distance pour cette case activée peut être ajustée avec DragToggleThreshold, et ce comportement d’activation lui-même peut être activé/désactivé avec la ToggleHandlesOnClick propriété .
Les handles peuvent être activés ou désactivés manuellement à partir du code à tout moment en définissant HandlesActive.
Calcul automatique des limites
BoundsControl tente de calculer automatiquement les limites de l’objet associé. Si une forme de limite spécifique est souhaitée, case activée l’option OverrideBounds et spécifiez directement l’objet bounds. Le système de calcul des limites calcule uniquement les limites de l’objet de remplacement spécifié.
influence BoundsCalculationMethod la façon dont l’algorithme calcule les limites. Si la forme visuelle de l’objet placé entre parenthèses ne correspond pas nécessairement au collider, ou si l’inverse est vrai, les développeurs peuvent ajuster la méthode de calcul pour préférer utiliser des limites de renderer ou de collider, ou une combinaison des deux.
Quelle que soit la méthode de calcul, l’option Padding remplira uniformément les limites en unités mondiales. Lorsque les limites sont aplatissements, l’axe aplatit n’est pas rempli.
Aplatissement
BoundsControl peut également être utilisé pour manipuler du contenu 2D. Si FlattenMode a la valeur Auto, l’objet BoundsControl s’aplatit en limites rectangulaires 2D si l’objet est suffisamment plat le long d’un axe. Si l’objet n’est pas assez plat, mais que vous souhaitez toujours des affordances de limites rectangulaires, FlattenMode.Always aplatira toujours l’objet BoundsControl le long de l’axe le plus mince. À l’inverse, FlattenMode.Never empêche l’objet BoundsControl de s’aplatir, même lorsque l’objet est très mince.
Options de manipulation
Le comportement de manipulation de BoundsControl peut être ajusté de plusieurs façons. L’option RotateAnchor contrôle le point de pivot autour duquel le BoundsControl est pivoté lors de l’utilisation des affordances de rotation. Les points croisés dynamiques de certains objets sont éloignés de leur centre visuel, ce qui peut causer de l’inconfort et de l’imprécision lors de la manipulation avec les poignées de rotation. Si vous spécifiez BoundsCenter pour, RotateAnchor le BoundsControl tourne toujours autour du centre géométrique des limites calculées plutôt que de l’origine réelle de l’objet.
Le comportement de mise à Uniform l’échelle peut être défini sur ou Non Uniform. En mode Uniforme, tous les axes de l’objet sont mis à l’échelle ensemble, ce qui maintient les proportions et l’apparence. La mise à l’échelle non uniforme permet à chaque axe de l’objet d’être mis à l’échelle indépendamment.