L-Systems : “put the Flash back in Flash” ?

Posted on January 6, 2009
Filed Under Actionscript, Entertainment |

Actuellement, la plupart des tentatives de reproduction de végétaux en Actionscript se basent sur une implémentation naïve à base de récursivité, avec plus ou moins de succès. Ce type d’implémentation nécessitant un appel systématique à des constantes aléatoires à chaque itération, on ne dispose pas de moyen de gérer l’aspect à une échelle macroscopique. L’usage est de procéder par essais/erreurs en tweakant petit à petit les facteurs aléatoires introduits. Le résultat reste néanmoins intéressant, mais c’est long à “régler”.

Pourtant il existe un outil mathématique simple à appréhender et conçu justement pour générer des structures à l’aide de facteurs simples : les L-Systems (systèmes de Lindenmayer).

Un L-system noté L se définit de la manière suivante : L = {V,S,ω,P}
- V : alphabet, un ensemble des “mots”,
- S : constantes, les constantes, qui ne sont pas interprétées,
- ω : axiome, la chaîne de départ,
- P : les régles appliquées à chaque itération.

A chaque itération i - qu’on limitera évidemment - voilà ce qui se produit:
- si i = 0, on prend x = ω
- si i != 0, on prend x = x(i-1),
- x est une chaîne de caractères,
- on parse x
- à chaque token appartenant à V, on applique l’ensemble des régles P
- on itère.

Le résultat d’un L-system est donc une simple chaîne de caractère. En Flash, et en programmation graphique en général, on utilisera chaque token comme une instruction de dessin spécifique, c’est la “Turtle interpretation” quand on utilise la norme du langage Logo. Une simple boucle sur la chaîne suffit à la parser et faire afficher des jolis arbres à l’écran. On “régle” le système en tweakant simplement les régles P, c’est simple et rapide.

En creusant on arrive facilement à des “L-system stochastiques à signal acropète“, autrement connus sous le nom de peupliers.

Il existe quelques beaux joujous permettant d’expérimenter les L-systems de manière simple et intuitive :
- en 2D, l’outil Context Free permet de faire des trucs moches.
- en 3D, l’outil Structure Synth couplé au moteur de rendu Sunflow permet de faire des trucs qui lattent simplement et rapidement.

Parmi les gens qui ont essayé de faire des choses esthétiques avec des L-system, il y a l’architecte Michael Hansmeyer qui a beaucoup travaillé dessus, en bossant simplement avec un tableur Excel pour le calcul de la chaîne, et un ensemble de scripts MEL (Maya) pour les rendus, et ça poutre :

J’ose à peine imaginer le résultat sous Papervision. Je n’ai jamais trouvé aucun intérêt aux fractales, qu’il soit esthétique ou mathématique, mais les L-systems sous Papervision, ça m’intéresse.

Comments

One Response to “L-Systems : “put the Flash back in Flash” ?”

  1. nicoptere on January 28th, 2009 11:18 pm

    salut,
    chouette blog :)

    je souscris à la puissance du L-system par rapport au fractales tout cons. de base l’algo est ‘organique’.
    j’avais fait des recherches et une implémentation (doit pas être terrible d’ailleurs) : http://www.nicoptere.net/blog/index.php/2007/07/21/19-l-system

Leave a Reply




Technorati