L-systèmes: la grammaire qui fait pousser l’art végétal
Les systèmes qui portent son nom sont donc nés dans un laboratoire de biologie, avant de devenir une infrastructure de choix pour l’art génératif et la modélisation procédurale.
Le principe tient dans une opération précise: une chaîne de symboles est réécrite à chaque itération, et toutes les substitutions ont lieu en parallèle. Cette contrainte distingue les systèmes de Lindenmayer des grammaires classiques et suffit à produire des architectures visuelles capables de reproduire la logique d’une tige, d’une branche ou d’un réseau racinaire.
Dans les systèmes de Lindenmayer appliqués à l’art génératif, l’image n’est pas dessinée élément par élément. Elle est calculée à partir d’un ensemble réduit de règles. Le résultat dépend du nombre d’itérations, des angles, des longueurs, des probabilités et de la manière dont le programme interprète chaque symbole.
Aux origines de la morphogenèse: la vision d’Aristid Lindenmayer
Aristid Lindenmayer, biologiste et botaniste hongrois, conçoit les L-systèmes en 1968 à l’Université d’Utrecht. Son objectif initial est biologique: représenter le développement de cellules végétales et de structures vivantes à l’aide d’un modèle formel.
Le modèle ne décrit pas directement une plante complète. Il décrit une transformation. Une cellule, une séquence ou un état initial est soumis à une règle de réécriture. À chaque cycle, cette règle génère une nouvelle séquence. Celle-ci devient l’entrée du cycle suivant.
Le fonctionnement peut être résumé avec trois éléments:
- un alphabet, c’est-à-dire un ensemble de symboles disponibles;
- un axiome, qui constitue la chaîne de départ;
- une ou plusieurs règles de production, qui définissent la transformation des symboles.
Prenons une structure minimale. L’axiome est A. La règle indique que A devient AB, tandis que B devient A. Après plusieurs itérations, la chaîne s’allonge selon une logique déterminée. Le système ne contient pas de dessin explicite. Il contient une grammaire de transformation.
C’est cette séparation entre la règle et son résultat visuel qui intéresse le code créatif. Le programmeur ne décrit pas chaque branche. Il définit les conditions qui rendent possible l’apparition d’un réseau ramifié.
Le modèle biologique n’est pas une copie fidèle de la croissance végétale. Il s’agit d’une abstraction. La plante réelle dépend de la lumière, de l’eau, de la gravité, de la disponibilité des nutriments et de contraintes mécaniques. Un L-système peut représenter certaines relations de croissance, mais il ne simule pas automatiquement un organisme complet.
Cette distinction reste nécessaire dans l’art génératif. Un résultat qui ressemble à une fougère n’est pas pour autant une simulation botanique. C’est une structure visuelle produite par une grammaire, puis traduite en géométrie.
La force du L-système ne vient pas de son réalisme biologique. Elle vient de sa capacité à transformer une règle compacte en structure complexe.
Le système est donc moins un outil de dessin qu’un dispositif de compression. Quelques symboles et quelques règles peuvent générer une quantité considérable de segments, de ramifications et de variations. La complexité n’est pas écrite directement. Elle est déléguée au processus d’itération.
Une logique adaptée aux formes arborescentes
Les structures végétales présentent plusieurs propriétés qui correspondent bien à cette approche:
- elles sont hiérarchiques;
- elles se ramifient;
- elles répètent des motifs à différentes échelles;
- elles combinent régularité et variation;
- elles peuvent être décrites par des relations locales.
Une branche secondaire peut être comprise comme la transformation d’un symbole en une nouvelle séquence contenant à la fois la continuation de la tige et les instructions nécessaires à la bifurcation. En répétant cette opération, le programme fait émerger une architecture.
Cette logique s’applique à des formes très différentes: arbres, racines, nervures, coraux, réseaux vasculaires, silhouettes fractales ou structures abstraites. Le domaine visuel n’est pas limité au végétal. Le végétal constitue cependant le terrain le plus lisible, car la ramification rend immédiatement visible la relation entre règle et résultat.
La mécanique de la réécriture parallèle: au-delà des grammaires classiques
La particularité technique des L-systèmes réside dans la réécriture parallèle. Tous les symboles présents à une itération sont remplacés simultanément selon les règles définies.
Dans une grammaire formelle classique associée aux travaux de Noam Chomsky, les substitutions peuvent être appliquées de manière séquentielle. L’ordre des opérations peut modifier la chaîne obtenue. Dans un L-système, chaque symbole est évalué à partir de l’état de départ de l’itération. Les nouveaux symboles ne sont pas immédiatement réutilisés pendant le même cycle.
La différence semble théorique. Elle produit pourtant des effets concrets sur la forme.
Supposons qu’une chaîne contienne trois symboles. Une réécriture parallèle examine ces trois éléments, produit trois résultats, puis assemble ces résultats pour former la génération suivante. Le système ne parcourt pas la chaîne en modifiant progressivement les éléments déjà traités. Ce fonctionnement garantit une croissance synchronisée.
Pour une structure végétale, cette synchronisation est utile. Les branches peuvent évoluer au même rythme. La génération 1 produit les premiers embranchements. La génération 2 les subdivise. La génération 3 densifie l’ensemble. Le nombre d’éléments augmente rapidement, mais la logique reste stable.
Axiome, alphabet et règles
Un système minimal peut être organisé ainsi:
| Élément | Fonction | Effet visuel possible |
|---|---|---|
| Axiome | Définit la chaîne initiale | Point de départ de la croissance |
| Alphabet | Liste les symboles utilisés | Instructions de dessin ou variables |
| Règle de production | Transforme un symbole en chaîne | Allongement, bifurcation ou répétition |
| Itération | Répète la réécriture | Augmentation de la complexité |
| Interpréteur | Traduit les symboles en actions | Tracé, rotation, changement d’état |
Le symbole n’a pas de signification universelle avant l’interprétation. Une lettre peut représenter une instruction de tracé, une longueur, une transformation ou une variable intermédiaire. Cette souplesse permet de séparer la syntaxe du rendu.
Dans une application visuelle, on associe fréquemment F à une avance avec tracé. Le symbole + peut commander une rotation vers la droite, tandis que - impose une rotation vers la gauche. L’angle associé à ces rotations détermine directement la géométrie obtenue.
La même chaîne peut donc produire des images différentes selon l’interpréteur. Une séquence interprétée avec un angle de 25 degrés ne donnera pas la même structure qu’avec un angle de 60 degrés. Si la longueur diminue à chaque déplacement, la forme sera compacte. Si elle reste constante, l’image pourra rapidement sortir de l’espace disponible.
Le résultat dépend aussi de la profondeur d’itération. Une seule génération produit souvent une forme élémentaire. Plusieurs générations font apparaître des détails, mais augmentent la charge de calcul et la densité graphique.
Le coût de la complexité
La croissance d’un L-système n’est pas seulement une question esthétique. Elle affecte directement le temps de calcul, le nombre de segments à afficher et la lisibilité de l’image.
Une règle qui remplace un symbole par une chaîne courte produit une croissance progressive. Une règle qui multiplie rapidement les symboles peut provoquer une explosion du nombre d’instructions. Dans un environnement interactif, cette explosion se traduit par une baisse de la fréquence d’affichage, des délais de calcul et une perte de contrôle sur l’interface.
Le paramètre à surveiller n’est donc pas uniquement le nombre d’itérations. Il faut aussi mesurer:
- le nombre moyen de symboles produits par règle;
- le nombre de symboles réellement interprétés comme des tracés;
- la profondeur maximale de la structure;
- la mémoire nécessaire pour stocker la chaîne;
- le temps consacré à la génération et au rendu.
Dans une œuvre destinée à une installation immersive, cette chaîne de traitement doit être stabilisée avant l’ouverture au public. Une génération procédurale qui fonctionne sur une image fixe peut devenir instable dès qu’elle doit produire des images en temps réel, répondre aux mouvements des visiteurs ou synchroniser plusieurs écrans.
Le graphisme tortue: traduire le code en structures arborescentes
Le graphisme tortue sert d’interface entre la chaîne symbolique et l’image. Il repose sur un état courant comprenant au minimum une position et une orientation. Le programme lit les symboles dans l’ordre, puis exécute l’action associée à chacun d’eux.
Dans la convention la plus courante:
Ffait avancer la tortue et trace un segment;+modifie l’orientation dans un sens;-modifie l’orientation dans l’autre;- certains symboles permettent d’avancer sans tracer;
[sauvegarde l’état courant;]restaure un état précédemment sauvegardé.
La tortue n’est pas une entité graphique autonome. C’est un modèle de navigation dans l’espace. Elle conserve les paramètres nécessaires pour prolonger ou interrompre un tracé.
Cette méthode présente un avantage opérationnel: la grammaire produit une séquence d’instructions, tandis que le moteur graphique décide comment l’afficher. Le même L-système peut être rendu sous forme de lignes, de rubans, de cylindres, de particules ou de volumes tridimensionnels.
Le rôle des angles
L’angle est l’un des paramètres les plus sensibles. Une modification faible peut changer la silhouette générale de la plante. Avec des angles réguliers, le système produit une géométrie identifiable et relativement stable. Avec des angles irréguliers ou dépendants de variables, la structure devient moins prévisible.
Dans une image générative, l’angle peut être:
- fixe pour maintenir une symétrie;
- choisi parmi plusieurs valeurs;
- modifié selon la profondeur de la branche;
- influencé par une donnée extérieure;
- perturbé par une fonction de bruit;
- calculé à partir d’une interaction avec le public.
Le choix dépend du niveau de contrôle recherché. Une installation qui doit rester lisible dans un espace d’exposition ne peut pas déléguer tous ses paramètres au hasard. La variabilité doit rester compatible avec la composition, la distance de lecture et la capacité du système à maintenir une fréquence d’affichage stable.
Du segment à la matière
Le graphisme tortue produit souvent des segments vectoriels. Cela suffit pour comprendre la structure, mais pas toujours pour construire une œuvre aboutie. Le passage vers un langage plastique exige une couche supplémentaire.
Chaque segment peut devenir:
- une ligne dont l’épaisseur varie avec l’âge de la branche;
- un cylindre dans un espace tridimensionnel;
- une surface texturée;
- une émission lumineuse;
- un élément de particules;
- une trajectoire pour une animation;
- un masque destiné à une projection.
La génération procédurale plantes art ne se limite donc pas à la création de contours. Elle peut servir de système directeur pour plusieurs couches visuelles. La grammaire définit la structure. Le moteur de rendu lui attribue une matière.
Cette séparation améliore la réutilisation. Une même logique peut être exportée vers une image imprimée, une animation, une scène tridimensionnelle ou une installation interactive. Le coût de production se déplace alors vers l’intégration: gestion des formats, résolution, synchronisation, mémoire graphique et adaptation aux surfaces de projection.
L’art de la ramification: maîtriser les crochets et la pile d’états
Sans les crochets [ et ], un L-système peut produire une ligne continue ou une structure difficile à ramifier proprement. Les crochets introduisent une mémoire locale.
Lorsque le programme rencontre [, il enregistre la position et l’orientation courantes. Il peut ensuite modifier sa direction, tracer une branche secondaire et poursuivre son parcours. Lorsqu’il rencontre ], il restaure l’état sauvegardé. La tortue revient au point d’origine de la branche, avec son orientation précédente.
Ce mécanisme correspond à une pile d’états. Le dernier état sauvegardé est le premier restauré. Cette organisation permet d’imbriquer plusieurs niveaux de ramification.
La structure logique est simple:
1. sauvegarder la position et l’orientation;
2. avancer vers une nouvelle branche;
3. tracer la branche secondaire;
4. restaurer l’état précédent;
5. poursuivre la branche principale.
Le programme n’a pas besoin de recalculer le chemin inverse. Il restitue un état mémorisé. Cette opération réduit la complexité de gestion des embranchements et rend possible la construction d’arbres à plusieurs niveaux.
Une architecture hiérarchique
La pile n’est pas seulement une commodité de programmation. Elle détermine le type de structure obtenu. Une ramification peu profonde donne une forme ouverte et lisible. Une ramification imbriquée à chaque niveau produit une image dense, parfois presque fractale.
Les paramètres déterminants sont notamment:
- la profondeur maximale de la pile;
- l’angle entre la branche principale et les branches secondaires;
- la réduction de longueur à chaque génération;
- le nombre de branches créées par symbole;
- la fréquence des bifurcations;
- l’épaisseur et la transparence appliquées au rendu.
Une plante crédible ne dépend pas d’un seul paramètre. Si toutes les branches ont la même longueur, la même épaisseur et le même angle, le résultat sera rapidement mécanique. La variation doit être distribuée dans le système, sans supprimer la structure globale.
C’est ici que le concepteur doit arbitrer entre régularité et perturbation. Trop de régularité produit un motif décoratif. Trop de variation détruit la lecture arborescente. Le réglage efficace se situe dans une zone intermédiaire où la règle reste perceptible, mais où l’image ne ressemble pas à une répétition industrielle.
La ramification ne crée pas la complexité à elle seule. Elle crée un budget de décisions que le système doit ensuite gérer.
La question de l’échelle
Une branche générée à la quatrième itération ne doit pas nécessairement être traitée comme une branche de première génération. La longueur, l’épaisseur, la luminosité ou la saturation peuvent être liées à la profondeur.
Cette relation permet de construire une hiérarchie visuelle:
- les éléments principaux portent la masse de l’image;
- les branches secondaires définissent la direction;
- les ramifications fines ajoutent la texture;
- les derniers niveaux produisent le détail.
Dans une œuvre projetée à grande échelle, cette hiérarchie est indispensable. Une image trop détaillée dès le premier plan perd sa structure à distance. À l’inverse, une œuvre destinée à un écran rapproché peut exploiter des ramifications plus fines, à condition de maintenir une densité compatible avec la résolution.
Le même algorithme peut donc exiger plusieurs profils de rendu. Le format d’exposition, la distance du public et le dispositif d’affichage deviennent des variables du système artistique.
Évolutions créatives: vers des systèmes stochastiques et paramétriques
Le L-système déterministe applique toujours la même règle à un symbole donné. Cette stabilité facilite l’analyse et la reproduction. Elle limite toutefois la diversité des formes.
Les grammaires stochastiques introduisent plusieurs règles possibles pour un même symbole. Le programme sélectionne l’une d’elles selon une probabilité définie. La structure obtenue varie d’une exécution à l’autre, tout en conservant une logique commune.
Cette variation peut être contrôlée avec une graine aléatoire. Le système produit alors une forme reproductible tant que la graine reste identique. Cette fonction est utile dans une production artistique: l’œuvre peut évoluer, mais une version précise peut aussi être archivée ou régénérée.
La stochastique ne doit pas être confondue avec l’absence de règles. Le hasard intervient à l’intérieur d’un cadre. Il peut modifier:
- l’angle d’une branche;
- la probabilité d’une bifurcation;
- la longueur d’un segment;
- la densité d’un feuillage;
- la couleur d’une zone;
- la vitesse de croissance animée.
La question de la distribution est centrale. Un hasard uniforme donne rarement un résultat convaincant. Les probabilités doivent correspondre à la structure recherchée. Une branche principale peut rester majoritaire, tandis que les branches secondaires apparaissent selon une fréquence plus faible.
Les grammaires sensibles au contexte
Les variantes sensibles au contexte prennent en compte les symboles voisins. Une règle ne dépend plus seulement du symbole traité, mais aussi de ce qui l’entoure dans la chaîne.
Ce mécanisme permet de différencier des situations qui seraient identiques dans une grammaire simple. Un symbole peut produire une branche différente s’il se trouve près d’une bifurcation, à l’extrémité d’une chaîne ou entre deux catégories particulières.
L’intérêt est double. D’une part, le système peut représenter des interactions locales plus fines. D’autre part, la structure devient moins uniforme sans avoir recours à une perturbation aléatoire permanente.
Dans le code créatif, cette approche convient aux œuvres qui doivent réagir à leur environnement. La densité d’une forme peut être modifiée par la proximité d’un autre objet. Une branche peut éviter une zone déjà occupée. Une structure peut s’ouvrir vers une source lumineuse virtuelle ou se contracter autour d’un point de tension graphique.
Les systèmes paramétriques
Les L-systèmes paramétriques associent des variables numériques aux symboles. Une instruction peut alors contenir une longueur, un angle, une épaisseur ou une valeur de croissance.
Un symbole ne représente plus seulement une action générale. Il porte un état. La règle peut réduire progressivement la longueur d’une branche, augmenter son épaisseur, modifier son angle ou transmettre une variable aux générations suivantes.
Cette capacité rapproche le L-système d’un moteur de simulation, sans le transformer automatiquement en modèle scientifique. Le concepteur peut définir une relation entre profondeur et longueur, entre âge et opacité, ou entre énergie reçue et orientation.
Pour une utilisation avec p5.js, l’algorithme de Lindenmayer peut être séparé en deux fonctions: une fonction de génération de chaîne et une fonction d’interprétation graphique. Cette séparation rend le système plus facile à tester et à modifier. La première fonction produit la séquence. La seconde convertit cette séquence en tracés, transformations ou objets.
Le découpage permet aussi de mesurer les performances. Si le temps de génération augmente fortement, le problème vient de la réécriture. Si la chaîne est produite rapidement mais que l’affichage ralentit, le goulot d’étranglement se situe dans le rendu.
Les fractales et les limites de l’analogie végétale
Les fractales et les L-systèmes sont fréquemment associés parce qu’ils produisent tous deux des formes répétitives et hiérarchiques. Ils ne sont pourtant pas identiques.
Une fractale repose généralement sur une propriété d’auto-similarité ou sur une construction mathématique répétée à plusieurs échelles. Un L-système repose sur une grammaire de réécriture. Certaines grammaires génèrent des figures fractales, mais tous les L-systèmes ne produisent pas des fractales au sens strict.
La différence est utile dans la conception. Une forme fractale privilégie souvent une relation stable entre les niveaux. Un L-système peut intégrer des règles différentes, des variables, des probabilités et des conditions locales. Il offre donc une capacité d’adaptation plus large.
Dans une œuvre végétale, l’objectif n’est pas nécessairement de maximiser l’auto-similarité. Il peut être préférable de produire une organisation plausible, avec des irrégularités contrôlées. La symétrie exacte donne un résultat mathématique. La variation paramétrée donne une structure plus difficile à prévoir et souvent plus riche visuellement.
Le risque consiste à utiliser le vocabulaire du vivant sans modifier la mécanique du motif. Une suite de branches identiques, simplement répétée à plusieurs tailles, ne constitue pas une croissance convaincante. La hiérarchie doit s’accompagner de différences: orientation, densité, vitesse d’expansion, ordre d’apparition ou rapport entre tige et ramifications.
De la démonstration algorithmique à l’œuvre exposée
Un L-système peut être intéressant sur le plan informatique et insuffisant sur le plan artistique. La génération d’une forme complexe ne règle ni sa composition, ni sa temporalité, ni son rapport à l’espace d’exposition.
Pour passer du prototype à l’œuvre, plusieurs couches doivent être traitées séparément.
La couche grammaticale
Elle définit les règles de réécriture, les variables, les probabilités et la profondeur d’itération. Elle doit rester indépendante du format d’affichage autant que possible.
La couche géométrique
Elle transforme les instructions en segments, courbes, surfaces ou objets tridimensionnels. C’est à ce niveau que sont appliquées les réductions de longueur, les variations d’épaisseur et les transformations spatiales.
La couche de rendu
Elle attribue les couleurs, les textures, la lumière, la transparence et les effets de profondeur. Une même géométrie peut prendre des apparences radicalement différentes selon cette couche.
La couche d’interaction
Elle relie le système à des données extérieures: mouvement du public, son, température, flux vidéo, capteurs ou données temporelles. L’interaction ne doit pas nécessairement modifier les règles fondamentales. Elle peut agir sur l’angle, la densité ou la vitesse de croissance.
La couche d’exploitation
Elle concerne la stabilité du dispositif: mémoire, fréquence d’affichage, reprise après erreur, synchronisation, export et archivage. Cette couche est souvent négligée dans les démonstrations, mais elle conditionne la continuité d’une installation.
Dans une exposition immersive, le public ne voit pas la chaîne de caractères. Il voit les conséquences du système. Le travail technique consiste donc à conserver la lisibilité de la règle malgré l’augmentation du nombre d’éléments.
Une stratégie efficace consiste à préparer plusieurs niveaux de détail. Le moteur peut afficher une structure simplifiée lorsque le public est éloigné ou lorsque la charge de calcul augmente. Il active ensuite des ramifications supplémentaires lorsque les conditions le permettent.
Cette gestion progressive de la complexité améliore la scalabilité du dispositif. Elle évite de demander au système le niveau de détail maximal en permanence.
Ce que les L-systèmes changent dans l’écriture générative
Les L-systèmes déplacent la pratique artistique d’une logique de production vers une logique de définition. Le concepteur ne fabrique pas chaque élément final. Il détermine les conditions de son apparition.
Cela modifie le rapport à l’originalité. Une œuvre peut avoir une structure stable tout en produisant plusieurs sorties. La version exposée n’est plus nécessairement un objet unique calculé une fois. Elle peut être une instance parmi d’autres, générée selon une graine, une date, une interaction ou un état du dispositif.
L’archivage doit alors conserver plus que l’image finale. Il doit inclure:
- l’axiome;
- les règles de production;
- les paramètres numériques;
- la graine aléatoire;
- la version du programme;
- les polices, textures ou modèles utilisés;
- la résolution et le format de sortie;
- les conditions nécessaires à la régénération.
Sans ces éléments, l’image reste visible mais le système qui l’a produite disparaît. Pour une œuvre algorithmique, cette perte est comparable à la disparition d’un fichier source ou d’un protocole d’exécution.
La documentation devient donc une partie de l’infrastructure culturelle. Elle permet de restaurer une œuvre, de la transférer vers un nouveau moteur graphique ou de l’adapter à un dispositif d’exposition différent.
Recommandation d’implémentation
Pour construire un projet solide à partir d’un L-système, il est préférable de procéder par paliers:
1. définir un axiome et une règle déterministe minimale;
2. valider la réécriture parallèle indépendamment du rendu;
3. implémenter l’interpréteur avec une tortue graphique simple;
4. ajouter les crochets et vérifier la pile d’états;
5. mesurer le nombre de symboles à chaque itération;
6. introduire la réduction de longueur et d’épaisseur;
7. ajouter une variation stochastique contrôlée;
8. séparer la génération, la géométrie et l’affichage;
9. créer plusieurs profils de détail selon le support;
10. archiver les paramètres avec chaque sortie produite.
Cette méthode limite la friction entre recherche formelle et production visuelle. Elle permet d’identifier rapidement si un défaut vient de la grammaire, de la géométrie ou du moteur de rendu.
Les L-systèmes restent efficaces parce qu’ils proposent une structure claire: une règle, une transformation, une interprétation. Leur intérêt pour l’art génératif ne réside pas dans l’imitation superficielle des plantes, mais dans la possibilité de construire des formes complexes à partir d’un flux de décisions compact.
Nés en 1968 pour représenter la croissance biologique, ils sont devenus un outil de conception procédurale. Leur usage pertinent exige toutefois de conserver la distinction entre modèle, image et simulation. La grammaire produit une organisation. Le code lui donne une géométrie. Le dispositif d’exposition lui attribue une durée, une échelle et un contexte.
La recommandation est donc concrète: commencer par une grammaire déterministe mesurable, isoler chaque couche technique, puis introduire la variation seulement après stabilisation de la structure. Dans un projet de code créatif, l’irrégularité ne doit pas masquer l’architecture. Elle doit l’exploiter.




