Tout d'abord il faut qu'il soit bien clair que ceci n'a rien à voir
avec la façon dont Dynamics gère les corps souples. Dans les Dynamics
il y a des ressorts entre les points qui forcent le maillage à se comporter
comme un tissu alors qu'avec TP il n'y a aucune connection entre les points,
il y a seulement des connections entre les points d'un maillage déformé
et les points de l'objet original non déformé.
Nous utiliserons une géométrie originale et une géométrie
qui est déformée par l'action des particules. L'effet souple est
généré en appliquant une force aux particules qui tentent
de retrouver leur position par défaut, définie par la géométrie
originale. Imaginez une balle au fond d'un récipient, si vous lui donnez
une impulsion elle reviendra invariablement au point le plus bas du récipient.
Un punching ball fonctionne plus ou moins de la même manière.
Nous allons démarrer avec une scène
simple qui contient deux objets plan identiques nommés Original
et Corps souple. L'original est masqué puisque c'est l'objet déformé
que nous voulons voir au final. Avant de commencer à créer l'expression vous devez penser à ce que vous voulez réaliser et à ce que vous voulez contrôler. Dans notre cas nous voulons les contrôles suivants (le type de données est entre parenthèses):
Pensez à activer le nom des ports (Info) |
![]() |
| Notre expression sera composée de trois parties principales :
Nous disposons de plusieurs nœuds générateurs pour émettre des particules. Dans notre cas nous aurons besoin de PNaissance qui autorise le maximum de flexibilité. Avant tout nous avons besoin de connaître le nombre de particules.
Ce nombre dépend du nombre de vertices (Info)
de la géométrie. Le nœud Point peut nous donner cette
information. Connectez l'entrée "Objet" de ce nœud
au port "Géométrie originale" du groupe X principal,
et la sortie Quantité à l'entrée "Taux (par
image)" du nœud PNaissance. Pourquoi utiliser le Taux par image
? Parce que nous voulons que toutes les particules soient crées
simultanément sur une seule image et non pas sur une période
de temps. Pour cela nous devons régler le Type de naissance sur
Taux (par image).
|
|
|
|
Une partie importante manque toujours, il s'agit
de l'assignement de la position des particules. Nous avons besoin pour
cela d'un second nœud Point et d'un nœud PDéfinir les
données. Le second nœud Point est nécessaire parce
que vous ne pouvez pas utiliser un seul nœud pour accomplir deux
tâches différentes dans une expression. Le premier nœud
Point est utilisé uniquement lorsque le nœud PNaissance doit
savoir combien de particules seront émises, alors que le second
est utilisé tant qu'il y a des particules et des points. Fondamentalement
PNaissance est un nœud itérateur (Info).
|
|
|
|
| Comme vous le voyez, notre expression prend de plus en plus de place, il est temps de faire quelque chose pour y remédier. Veuillez sélectionner les nœuds qui déterminent le début de l'émission des particules et convertissez les en un Groupe X en sélectionnant la commande "Convertir en groupe X" du menu contextuel. Basculez le mode d'affichage du groupe sur "Standard" et activez le nom des ports. | ![]() |
| Renommer le groupe avec un nom explicite nous permettra par la suite de savoir ce qu'il fait. scène | ![]() |
| Il est temps de vérifier si tout cela fonctionne. Cochez
la case Activer de la propriété XPresso et vérifiez
que l'objet original est bien référencé dans la case
lien correspondante. La durée de vie des particules doit être
égale à la durée de l'animation et le début
de l'émission doit être à l'image 1 (deuxième
image). Lancez l'animation. Si tout va bien vous êtes récompensés par l'apparition d'une petite croix à l'emplacement de chaque vertex du plan. |
![]() |
| Maintenant que les particules sont en place, de quoi avons
nous encore besoin ? En premier lieu nous avons besoins qu'elles restent en place et, comme d'habitude, il existe plusieurs moyens pour réaliser cela. La première option serait de conserver en mémoire la position courante puis de l'utiliser comme référence, une autre serait de toujours utiliser la position des points de l'objet original.Nous choisirons la seconde option car elle nous permet d'accrocher le corps souple à un maillage qui est animé ou se déplace. Comme cette partie est totalement indépendante de la première, il n'est pas inutile d'arranger un peu mieux notre espace de travail pour faire de la place pour des nœuds supplémentaires. Il suffit tout simplement de sélectionner tous les nœuds et de créer un groupe X. De nouveau basculez le mode d'affichage sur "Standard". scène |
![]() |
A ce stade j'ai remarqué que j'avais oublié
deux choses dans la première partie de l'expression. Le second élément manquant est le moyen de stocker la connection entre les particules et les points, pour l'instant nous avons un simple groupe de particules mais aucun moyen de dire où elles doivent être placées. |
![]() |
Tout d'abord tracez une connection entre le port Lien du groupe Principal et le carré bleu en haut à gauche du groupe que vous venez de créer et ajoutez une entrée Lien. Maintenant basculez la vue de ce groupe X en mode "Plein écran". Le port Particules du nouveau nœud PGroupe est connecté à la sortie Naissance du nœud PNaissance et le port PGroupe à l'entrée externe que vous venez de créer :
|
|
|
|
| La seconde partie est un peu plus complexe. Nous aurons besoin
du gestionnaire de Paramètres Thinking Particles, disponible soit
par le menu Plugins, soit par le menu Personnalisé de l'éditeur
XPresso. Dans le gestionnaire activez l'onglet Canaux et ajoutez un canal
Entier avec Numéro comme nom. Pour définir ce numéro tracez simplement une nouvelle connection depuis la sortie Numéro du nœud PNaissance et relâchez la souris sur le carré bleu du nœud P Dédinir les données, le canal que nous venons de créer est disponible en tant que port. |
![]() ![]() |
Après avoir fait les corrections revenez à la vue standard. scène
Maintenant passon à l'élasticité
de notre corps souple. Nous aurons besoin que les particules suivent le
maillage de l'objet original d'une façon souple. Notre premier
candidat pour exécuter cette tâche est le nœud P Suivre
la position. Il peut déplacer une particule jusqu'à une
certaine position, non pas en une seule étape mais progressivement.
Son type peut être réglé sur Vitesse constante ou
Ressort. Nous choisirons Ressort car la vitesse constante ne donnerait
pas le résultat souhaité. L'option vitesse de ressort défini
la force avec laquelle la particule est entraînée vers sa
nouvelle position. Avec une valeur de 100 % il n'y a plus aucune élasticité,
le déplacement est instantané. |
|
|
|
| Nous aurons besoin d'un nœud P Conduit pour obtenir l'accès
aux particules. Le groupe de particules qu'il nous faut est determiné
en connectant le port "Groupe de particules" de l'entrée
externe du groupe X principal à l'entrée du nœud P Conduit. Nous aurons besoin du numéro des particules, il sera obtenu via le nœud P Prélever les données. Ce numéro est injecté dans un nœud "Point" de façon à sélectionner le bon vertex de l'objet original. (Vérifiez bien que l'entrée "Objet" est connectée au port "Géométrie originale" et que la case "coord. des points après déformation" est cochée.). La position que nous obtenons par le nœud "Point" pouir chaque particule est utilisée pour déterminer la position à suivre. Ainsi nous nous assurons que chaque particule suivra le point qui lui a été assigné au départ. Avec le nœud Math en mode soustraction et la valeur un dans la première entrée nous pouvons ajuster la souplesse. Maintenant une valeur de Souplesse égale à 0 donne une rigidité maximale au corps souple tandis que les valeurs allant de 0 à 1 augmentent progressivement sa souplesse. scène Si vous déplacez l'objet original pendant l'animation vous pouvez voir comment les particules le suivent. |
![]() |
| Nous abordons la dernière partie : l'assignation du maillage du corps souple sur les particules.Cette expression est similaire à la précédente dans la mesure où nous avons besoin des nœuds "P Conduit" et "P Prélever les données". Nous avons besoin de prélever les données "Position" et "Numéro". Ces valeurs sont injectées dans un nœud "Point". Le port d'entrée "Objet" du nœud "Point" est connecté à un nouveau nœud "Objet" que nous créons en faisant glisser l'objet "Corps souple" dans l'éditeur XPresso. Nous nous assurons que l'expression fonctionnera même si nous déplacons la propriété XPresso sur un autre objet que nous voulons utiliser comme corps souple en basculant la référence du nœud "Corps souple" sur "Utiliser une position hiérarchique". scène | ![]() |
| Tout cela est impeccable, nous avons un corps souple qui fonctionne mais
il manque encore une chose : une action. Il faut agir sur notre corps souple d'une manière quelconque ainsi nous pouvons vraiment voir ce qu'il peut faire. Projeter d'autres particules sur le corps couple nous permet de réaliser cela. |
| Je pense que nous avons eu suffisamment d'expressions complexes,
c'est pourquoi nous emploierons ici certains des préréglages
fournis avec les Thinking Particles pour s'amuser un peu. Dans le menu Objets->Bibliothèque d'objets vous trouverez "TP Basic Emitter" et "TP Particle Collision". Déplacez l'émetteur à -300 sur l'axe Z. Nous aurons besoin d'utiliser les groupes de particules pour séparer les particules du corps souple de celles que nous allons projeter sur lui. Dans les paramètres Thinking Particles ajoutez deux nouveaux groupes en dessous du groupe All et renommez les en fonction de leur rôle. Le groupe "Projectiles" est attribué à l'émetteur et à la détection de collision, le groupe "Corps souple" est affecté aux particules du corps souple et aussi à la détection de collision.scène Vous pouvez épicer la scène en ajoutant un préréglage "Wind" (Vent) avec une force et une turbulence élevées. |
![]() |
J'ai ajusté la vitesse d'émission et la taille des particules dans la scène finale. animation.