Share via


Système élastique — MRTK2

Système élastique

MRTK est fourni avec un système de simulation élastique qui comprend une grande variété de sous-classes extensibles et flexibles, offrant des liaisons pour des ressorts quaternion à 4 dimensions, des ressorts à volume 3 dimensions et des systèmes de ressorts linéaires simples.

Actuellement, les composants MRTK suivants qui prennent en charge le gestionnaire d’élastiques peuvent tirer parti des fonctionnalités élastiques :

Gestionnaire d’élastiques

Système élastique2

Le gestionnaire d’élastiques traite les transformations passées et les alimente dans le système élastiques.

L’activation des élastiques pour les composants personnalisés peut être obtenue en deux étapes :

  1. L’appel de la méthode Initialize lors de la manipulation démarre, en mettant à jour le système avec la transformation hôte actuelle.
  2. Interrogation de ApplyHostTransform chaque fois qu’un calcul élastique doit être effectué sur la transformation cible mise à jour.

Notez que les élastiques continueront de simuler une fois la manipulation terminée (via la boucle de mise à jour du gestionnaire d’élastiques). Pour bloquer le comportement, la mise à jour automatique des élastiques EnableElasticsUpdate peut être définie sur false.

Par défaut, le composant de gestionnaire d’élastiques, lorsqu’il est ajouté à un objet de jeu, n’aura pas d’élastiques activés pour n’importe quel type de transformation. Le champ Manipulation types using elastic feedback doit être activé pour des types de transformation spécifiques afin de créer une configuration et des étendues élastiques pour le type sélectionné.

Configurations élastiques

Comme pour les configurations de contrôle de limites, elastic Manager est fourni avec un ensemble d’objets de configuration qui peuvent être stockés en tant qu’objets scriptables et partagés entre différentes instances ou préfabriqués. Les configurations peuvent être partagées et liées sous forme de fichiers de ressources pouvant faire l’objet d’un script individuel ou de ressources pouvant faire l’objet d’un script imbriqué à l’intérieur de préfabriqués. D’autres configurations peuvent également être définies directement sur le instance sans liaison à une ressource externe ou imbriquée pouvant faire l’objet d’un script.

L’inspecteur elastics Manager indique si une configuration est partagée ou incorporée dans le cadre de la instance actuelle en affichant un message dans l’inspecteur de propriétés. En outre, les instances partagées ne sont pas modifiables directement dans la fenêtre de propriétés elastics Manager elle-même, mais la ressource vers laquelle elle est liée doit être directement modfiée pour éviter toute modification accidentelle sur les configurations partagées.

Elastics Manager offre des options d’objets de configuration pour les types de transformation suivants, chacun d’eux représenté par un objet de configuration élastique :

  • Traduction élastique
  • Rotation élastique
  • Mettre à l’échelle élastique

Objet de configuration élastique

Une configuration élastique définit les propriétés d’un système différentiel d’oscillateur harmonique amorti. Les propriétés suivantes peuvent être ajustées, mais sont déjà fournies avec un ensemble de valeurs par défaut dans MRTK :

  • Masse : masse de l’élément oscillateur simulé.
  • HandK : constante de ressort de main.
  • EndK : constante de ressort end cap.
  • SnapK : constante de ressort de point d’ancrage.
  • Traînée : facteur de glissement/amortisseur, proportionnel à la vitesse.

Étendues élastiques

Les paramètres des étendues élastiques varient en fonction du type de manipulation. La traduction et l’échelle sont représentées par des étendues élastiques de volume et la rotation est représentée par une étendue élastique quaternion.

Étendue élastique du volume

Les étendues de volume définissent un espace tridimensionnel dans lequel l’oscillateur harmonique amorti est libre de se déplacer.

Limites élastiques d’étirement du volume

  • StretchBounds : représente les limites inférieures de l’espace élastique.
  • UseBounds : indique si les limites étendues doivent être respectées par le système. Si la valeur est true, lorsque l’itération actuelle de la position cible est en dehors des limites d’étirement, la force de fin est appliquée.
  • SnapPoints : pointe à l’intérieur de l’espace auquel le système doit s’aligner.
  • RepeatSnapPoints : répète les points d’ancrage vers l’infini. Les points d’ancrage existants servent de modulo où les points d’ancrage réels sont mappés aux multiples entiers les plus proches de chaque point d’ancrage.
  • SnapRadius : distance à laquelle les points d’ancrage commencent à forcer le ressort.

Grille d’alignement de volume élastique

Étendue élastique du quaternion

Les étendues de quaternion définissent un espace de rotation à quatre dimensions dans lequel l’oscillateur harmonique amorti est libre de pivoter.

Exemple de rotation élastique

  • SnapPoints : angles d’euler sur lesquels le système va s’aligner.
  • RepeatSnapPoints : répète les points d’ancrage. Les points d’ancrage existants servent de modulo où les points d’ancrage réels sont mappés aux multiples entiers les plus proches de chaque point d’ancrage.
  • SnapRadius : angle d’arc à laquelle les points d’ancrage commencent à forcer le ressort en degrés euler.

Exemple de scène Élastiques

Vous trouverez des exemples de configurations d’élastiques dans la ElasticSystemExample scène.

Exemple de scène Élastiques