Système élastique — MRTK2

Elastic System

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 de quaternion à 4 dimensions, des ressorts de volume 3 dimensions et des systèmes de printemps linéaires simples.

Actuellement, les composants MRTK suivants prenant en charge le gestionnaire élastique peuvent tirer parti des fonctionnalités élastiques :

Gestionnaire d’élastiques

Elastic System2

Les processus de gestionnaire d’élastiques ont passé des transformations et les alimentent dans le système élastique.

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

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

Notez que les élastiques continuent de simuler une fois la manipulation terminée (via la boucle de mise à jour du gestionnaire elastics). Pour bloquer le comportement, la mise à jour automatique d’Elastics 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’a 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 pour créer une configuration élastique et des étendues pour le type sélectionné.

Configurations élastiques

Comme pour les configurations de contrôle des limites, le gestionnaire élastique 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éfabs. Les configurations peuvent être partagées et liées en tant que fichiers de ressources scriptables individuels ou ressources scriptables imbriquées à l’intérieur des préfabriqués. D’autres configurations peuvent également être définies directement sur l’instance sans lier une ressource scriptable externe ou imbriquée.

L’inspecteur du gestionnaire d’élastiques indique si une configuration est partagée ou inline dans le cadre de l’instance actuelle en affichant un message dans l’inspecteur de propriété. En outre, les instances partagées ne sont pas modifiables directement dans la fenêtre de propriété du gestionnaire elastics elle-même, mais au lieu de cela, la ressource à laquelle il est lié doit être directement modfiée pour éviter les modifications accidentelles 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 elastic

Objet de configuration élastique

Une configuration élastique définit les propriétés d’un système différentiel d’oscilleur harmonique humide. Les propriétés suivantes peuvent être ajustées, mais elles 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 printemps de main.
  • EndK : constante de printemps de cap de fin.
  • SnapK : constante de printemps de point d’ancrage.
  • Glisser : facteur glisser/amortisseur, proportionnelle à la vitesse.

Étendues élastiques

Les paramètres des étendues élastiques varient selon le type de manipulation. La traduction et l’échelle sont représentées par les étendues élastiques en 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’oscilleur harmonique humide est libre de se déplacer.

Elastic Volume Stretch Bounds

  • StretchBounds : représente les limites inférieures de l’espace élastique.
  • UseBounds : indique si les limites d’étirement 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 s’aligne.
  • RépéterSnapPoints : répète les points d’ancrage vers l’infini. Les points d’ancrage existants serviront de modulo où les points d’ancrage réels sont mappés aux multiples entiers les plus proches de chaque point d’alignement.
  • SnapRadius : distance à laquelle les points d’ancrage commencent à forcer le printemps.

Elastic Volume Snap Grid

Extension élastique quaternion

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

Elastic Rotation Example

  • SnapPoints : angles euler vers lesquels le système s’aligne.
  • RepeatSnapPoints : répète les points d’ancrage. Les points d’ancrage existants serviront de modulo où les points d’ancrage réels sont mappés aux multiples entiers les plus proches de chaque point d’alignement.
  • SnapRadius: arc-angle auquel les points d’ancrage commencent à forcer le printemps en degrés euler.

Exemple de scène elastics

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

Elastics Example Scene