PARTIE V: Physique

Nous voici quasiment arrivés à la fin de ce long tutoriel. Dans cette ultime partie, nous allons aborder deux façons différentes d’introduire de la physique dans notre scène.

  • Vent: Jusqu’à présent, une fois une plante complètement développée, elle ne bouge plus, et reste totalement figée. Pour briser cette ennuyeuse monotonie, nous allons animer la plante d’un léger mouvement, pour simuler la présence de vent.
  • Gravité: Nous verrons ensuite comment utiliser le moteur physique, pour faire chuter les blocs lors de la destruction de la plante.

Simuler du Vent

Comme d’habitude, nous commençons par déclarer deux variables dans notre classe: refEulerAngle pour conserver l’orientation de référence relative au parent, et initShift pour désynchroniser le mouvement des différents éléments de notre plante:

[snippet id= »124″]

Comme toujours, il ne faut pas oublier d’initialiser et propager la variable regEulerAngle dans la méthode addOrgan():

[snippet id= »125″]

Il est temps de mettre en place l’animation à la fin de la méthode Update():

[snippet id= »126″]

Pour éviter l’homogénéité des mouvements (aussi appelé « Effet Claudette » ), on pourra initialiser initshift avec une valeur aléatoire dans le constructeur ou dans la méthode Start():

[snippet id= »127″]

Moteur 3D

Dans la classe MorphoModule, on ajoutera une méthode pour détacher en organe de sa hiérarchie, en désactivant éventuellement le mode cinématique

[snippet id= »123″]

Modifions ensuite la méthode récursive MorphoScript::detachR() de façon a ce qu’elle appelle la méthode précédente. Son prototype est changé de façon à accepter deux booléens, kin pour contrôler l’activation du moteur physique et grav pour appliquer une gravité .

[snippet id= »128″]

Et… c’est tout! Vous pouvez essayer, le moteur physique prendra la main des que l’on détache un morceau de la structure, en cliquant dessus. En cas de détachement, le temps avant destruction est fixé à 10 secondes, ce qui permet aux organes de commencer leur mouvement de chute avant d’être définitivement détruits de la scène.

A titre indicatif, le code complet de la méthode Update est donné ici, avec quelques changements mineurs.

[snippet id= »130″]

Un sol pour rebondir

Ajouter un sol, pour voir rebondir les éléments, est très simple: il suffit de sélection ‘Plane’ dans le menu GameObject/3D Objects, pour ajouter un plan que l’on pourra placer sous la graine.

Matériaux

Si vous n’êtes pas  familier avec le moteur physique, c’est l’occasion d’expérimenter, en jouant en premier lieu sur les matériaux: ceux des prefabs, ceux du sol, etc.

Pour voir l’effet du flag ‘gravité’, on pourra différencier le clic gauche du clic droit de la souris: le flag est mis à vrai  pour un clic gauche, et à faux pour un clic droit:

[snippet id= »129″]

Conclusion

Ce tour d’horizon de la morphogenèse artificielle avec Unity3D est maintenant terminé. J’espère qu’il vous a plu! N’hésitez pas a faire part de vos commentaires, afin d’améliorer et clarifier le texte, et partager vos propres créations et mutations.

Comme dans les parties précédentes, le code source se trouve dans cette archive.