Morphogénese artificielle : Simulation de croissance de plantes

La morphogenèse (du grec morphê (forme) et genesis (création)), est le processus biologique qui détermine la façon dont un organisme développe sa forme. Dans  ces pages, nous allons nous intéresser à des algorithmes et modèles inspirés de processus morphogénétiques rencontrés dans la nature, afin de produire des formes, des structures 3D générées et animées en temps réel. Au programme donc, du calcul procédural, mâtiné de vie artificielle… mais du concret, car il va s’agir d’implémenter tout cela! Je m’efforcerai de décrire les étapes importantes pour que vous puissiez refaire vos propres applications. C’est d’ailleurs le but principal de ces pages, alors n’hésitez pas à partager vos applications!

Le premier sujet auquel nous allons nous intéresser est la simulation de la croissance de plantes. C’est un domaine très documenté, il fera un excellent sujet de départ. Notez bien qu’il ne s’agit pas seulement de créer des formes des plantes, mais bien de les faire se développer, de les faire partir d’un unique organe, la graine en quelque sorte, pour obtenir une plante complète. Cette façon de procéder nous permettra d’ajouter des contraintes dynamiques sur la croissance de la plante (l’utilisateur pourra élaguer la plante par exemple), mais aussi de ne pas figer la structure de la plante à l’avance, ce qui nous permettra d’explorer un vaste espace de formes possibles.

Implémentation avec Unity3D

J’ai choisi d’utiliser Unity3D pour réaliser l’implémentation de cette application, dont la dernière version se trouve ici (il faut installer le plugin Unity3D pour votre navigateur).

Unity3D est une plateforme qui présente de nombreux avantages que je ne rappellerai pas ici,  et qui est en tout cas tout à fait adaptée à la modélisation d’une structure hiérarchique comme une plante. De plus le moteur physique intégré a Unity nous offrira quelques récréations sympathiques: dans cette application, elle nous servira à animer la chute des éléments de la structure.

L’implémentation présentée ici n’est certainement pas la façon la plus efficace de procéder avec Unity3D, mais nous verrons comment faire en sorte de ne pas être trop gourmand en ressources.

Bien évidemment, il devrait relativement simple d’implémenter la même chose en utilisant d’autres langages et d’autres frameworks (par exemple des projets Music2eye comme les Surnatures ont été entièrement écrites en C++, en utilisant SDL et OpenGL), mais il apparaît qu’avec Unity, nous pourrons nous focaliser sur les parties importantes, en mettant de coté de nombreux problèmes, comme le moteur 3D, le moteur physique, l’interactivité, le calcul de collisions, etc.

Plan du tutoriel

 Contributions des lecteurs

Une version utilisant l’oculus rift, par Raimce: