Contraindre des objets physiques

Comme son nom le suggère, une contrainte MassFX (ou "connexion") permet de limiter le mouvement des corps rigides de la simulation. Certains exemples de contraintes dans le monde réel impliquent des charnières, des clous, des fermetures éclair et des essieux.

Toutes les contraintes prédéfinies créent le même type d'objet assistant avec les mêmes paramètres. Les différents types de contraintes, telles que Charnière et Genou, définissent simplement certaines valeurs par défaut utiles pour la contrainte obtenue.

Un objet assistant Contrainte peut lier deux corps rigides ou en ancrer un seul sur une position fixe dans l'espace global. La contrainte constitue une relation hiérarchique: l'objet enfant doit être un corps rigide dynamique, tandis que l'objet parent peut être dynamique, cinématique ou nul (à ancrer dans l'espace global).

Par défaut, une contrainte est "Incassable": quelle que soit l'intensité de la force que vous lui appliquez ou la distance à laquelle vous l'entraînez hors de ses limites, elle reste en vigueur et essaie de replacer ses corps rigides dans la plage de votre choix. Toutefois, vous pouvez rendre une contrainte cassable en définissant des limites de force et de torsion indépendantes au-delà desquelles la contrainte est désactivée et ne s'applique plus à la simulation.

Objets parent et enfants

La plupart des contraintes connectent deux corps rigides. La contrainte est liée en tant qu'enfant du corps rigide parent, effectuant le déplacement et la rotation en même temps que lui, et en tant que parent du corps enfant auquel elle transmet le mouvement du corps parent. Par exemple, lors d'une simulation, les modèles d'une voiture et ses portes peuvent être connectés par une contrainte charnière avec la voiture en tant que parent et les portes en tant qu'enfant. Les limites de la distance à laquelle la porte peut s'ouvrir et se fermer ne changent pas lorsque la voiture pivote, mais sont relatives à l'orientation de la voiture.

Une contrainte entre deux corps rigides dynamique se comporte de façon similaire à la réalité: les forces appliquées à un corps rigide peuvent se propager à un autre, dans une direction quelconque. La plupart du temps, le mouvement de conduite d'une voiture entraîne les portes avec lui. Cependant, si deux frères costauds (et éventuellement ivres) tombent en panne d'essence et poussent la voiture par ses portes ouvertes, le corps de cette voiture se déplace également, en considérant que les portes ne se cassent pas. Si l'objet parent est dynamique, il a également tendance à se déplacer en tant qu'enfant.

Créer une contrainte

Pour créer une contrainte entre deux objets, sélectionnez l'objet parent dans la scène, suivi de l'objet enfant, puis choisissez l'une des valeurs prédéfinies de l'icône déroulante Contrainte de la barre d'outils MassFX. La contrainte est automatiquement placée sur le point de pivot de l'objet parent. Ensuite, lorsque vous déplacez la souris dans une fenêtre, le système suit le curseur de la souris pour définir la taille d'affichage de la contrainte. Plus vous rapprochez votre souris de l'objet parent, moins la contrainte devient importante. Pour finaliser la taille d'affichage de la contrainte et terminer sa création, cliquez avec le bouton de la souris.

Conseil : Si l'un des objets ou les deux ne sont pas des corps rigides, MassFX demande si vous souhaitez automatiquement appliquer le modificateur de corps rigides avant le placement de la contrainte.

Vous pouvez modifier la taille d'affichage ultérieurement, en tant que propriété de la contrainte. Cela influe uniquement sur la taille des traces de la contrainte dans les vues et n'a aucun effet sur les effets de simulation de cette contrainte.

Le placement de la contrainte a une incidence sur le décalage par rapport au parent où la contrainte est appliquée. Dans le cas où deux corps rigides se juxtaposent, comme par exemple une porte connectée à son cadre, vous devez en général placer la contrainte sur le pivot de l'objet enfant. Cependant, dans le cas où deux corps rigides sont séparés, comme par exemple une balle se balançant au bout d'un crochet, la position idéale de la contrainte est généralement située au niveau du pivot de l'objet parent. Le panneau déroulant Avancé de l'assistant de contrainte MassFX propose des boutons destinés à déplacer la contrainte automatiquement sur l'un de ces emplacements.

Création d'une contrainte universelle

Vous pouvez également contraindre un corps rigide par rapport à un emplacement dans la scène. Cette opération s'effectue en définissant le parent d'une contrainte existante sur une valeur nulle ou « non définie », en cliquant sur le bouton X situé en regard du bouton Parent dans le panneau déroulant Général de l'assistant Contrainte MassFX. Vous pouvez aussi tout simplement affecter une contrainte à un seul corps rigide sélectionné; ceci définit automatiquement le corps en tant qu'enfant et ancre la contrainte dans l'espace.

Contraintes ressorts et élastiques

L'assistant de contrainte MassFX prend en charge trois types de ressorts:

Amélioration des performances d'aperçu

Les contraintes disposent de visualisations personnalisées dans les fenêtres, permettant d'afficher les états Verrouillé/Limité/Libre de la translation, du balancement et de la torsion, accompagnés d'une représentation de ces limites. Cela est utile pour la compréhension de la rotation et des limites d'une contrainte. Toutefois, le traçage de ces visualisations affecte les performances de la fenêtre.

Si vous affichez l'aperçu d'une simulation qui comporte de nombreuses contraintes, il vous sera peut-être utile de désactiver l'affichage des assistants pour augmenter la vitesse des mises à jour de la fenêtre. Vous pouvez le faire dans le groupe de fonctions Affichage en activant l'option Masquer par catégorie Assistants.