LSYSTEM
Introduction



Remerciements à NaN (Blender authors) pour ce superbe logiciel gratuit.
Lsystem est un script qui a été développé par Armagan Yavuz : www.geocitie.com/blenderdungeon
QUELQUES EXEMPLES TELECHARGEABLES
ARBRES                   PLANTES




INTRODUCTION

Ce qu'on peut obtenir
pommier
Pour tous les tests de ce didacticiel, j'ai utilisé Neo-lstseed la version corrigé du script L-System original
ainsi que la version 2.47 de blender
(Un fichier ". blend" qui contient le script est disponible ici :
NeoLsys.blend)


Qu'est-ce que Lsystem ?
C'est un script de génération automatique de végétaux qui à besoin de Blender pour fonctionner
Apparence de l'écran de Blender lors du chargement d'un fichier.blend qui contient le script Lsystem
Lsystem au lancement
Vue de l'interface Graphique neo-lstseed 
Vue de L'interface neo-lstseed
Code couleur pour les explications qui suivent.
Vue de L'interface neo-lstseed
PRINCIPE GENERAL
Le principe du script d'origine est de générer une plante différente à chaque fois que l'on appuie sur [Generate]. En fait le script créé deux maillages, un pour la structure (tronc et branches comprises) et un autre pour les feuilles. Sur cette structure on ne peut mettre qu'un seul type d'élément à la fois (soit des feuilles, soit des fruits, ou tout autre objet que l'on veut accrocher aux branches). Avec la version Neo-lstseed de JM SOLER, on a la possibilité de retrouver une forme identique lorsqu'elle nous plaît afin de pouvoir sur la même structure de base ajouter autant d'éléments différents que l'on veut, des fruits, des objets divers (en gardant un nombre de sommets modérés pour les modèles de feuilles). Cela est rendu possible grâce au bouton [Seed] et à la possibilité de conserver dans un fichier l'ensemble des réglages d'une forme choisie.

PREMIERE PARTIE : L-System de A.YAVUZ


L-SYSTEM
Le fonctionnement de base

Branches et Stem : ces deux paramètres sont liés et servent à définir la structure du végétal, tronc et branches.
Si  Stem est sur NONE donc non-activé, alors Branches contrôle entièrement les ramifications : branches et sous-branches.
Si Stem est activé avec Branches , alors Stem contrôle les branches principales et  Branches contrôle les sous-branches.


Branches Ce bouton leaves que l'on trouve à droite du titre de section permet de choisir le modèle de ramification qui sera répété de manière récursive pour construire les branches.
Deux types de modèles sont disponibles :
"split N"
and
"arm N"
modele1

modele2
Pour chacun de ses deux types on a plusieurs choix lorsqu'on déroule le menu avec le petit bouton double flèche.
BranchesModels

Résolution V : Cette valeur détermine le nombre de tronçons qui vont composer chaque branche.
Exemple avec Resolution V= 2
Exemple avec Resolution V= 4
resolution2
resolution4
En augmentant le paramètre "VResolution" on obtient un mesh plus lissé et de meilleure allure mais cela augmente le nombre de points du mesh.
De plus ce paramètre en affecte d'autres, tel : Shorten, ThinDwn, Twist and Force .
On clique à droite sur le bouton ResolButtonpour augmenter la valeur et à gauche pour la diminuer.


Repeat : C'est un facteur de multiplication qui détermine le nombre de répétitions du modèle de branches" (voir ci-dessus) avant le niveau suivant. 
Repeat 1
Repeat 2
repeat1
repeat 2


Spin : Torsion/rotation, chaque branche (branche mère et sous-branches) subit une rotation par rapport à l'axe central du cylindre qu'elle forme.
Exemple de Rotation -187.01
rotation

Curve: Courbure en français, courbe la branche mère et les sous-branches vers le sol.
curve

SubSlope (0 à 180) : détermine l'angle que forment les sous-branches avec le tronc (ou branche mère),
subslope
subslope
curseur curseur
Plus le curseur tend vers 0 plus l'extrémité des sous-branches tend vers le haut du tronc.
Plus le curseur tend vers 180 plus l'extrémité des sous-branches tend vers le sol.

SubOrient : Orientation des sous-branches, tenant compte du modèle de branche (armN ou splitN)
suborient
suborient
suborinet
curseur
curseur
curseur

SubLen : Longueur des sous-branches, relatif à la longueur du segment en cours.
SubThickness :  diamètre des sous-branches, relatif au diamètre du segment en cours.


Leaves :  ce bouton active la création des feuilles, seul les deux derniers niveaux de branches portent de feuilles.
Leaf Pattern Menu : leaves permet de sélectionner un type de disposition pour les feuilles.
resolutionV : ce bouton ne fait rien.
Repeat : facteur de multiplication qui détermine le nombre de feuilles par segment.
LengthMul : longueur supplémentaire qui n'affecte que les branches portant des feuilles.
ExtraSpin : torsion supplémentaire n'affectant que les branches qui portent des feuilles.
ExtraCurve : courbure supplémentaire pour les branches qui portent des feuilles uniquement.
LeafSlope : inclinaison des feuilles en fonction de la branche, affecte légèrement l'orientation des branches.
LeafOrient : orientation de la feuille l'effet du changement est fonction du modèle de feuille choisit, affecte légèrement l'orientation des branches.
Add leaves : active ou désactive la génération des feuilles.
LeafObj : assigne un objet en tant que feuille. Les objets "a" à "o" existent déjà dans le Layer 3 mais vous pouvez en créér d'autres voir l'exemple ci-dessous :
Quoi qu'il en soit, lorsqu'on créé un nouvel objet pour l'utiliser comme feuille, on essaye de minimiser le nombre de sommets..
Etape 1 :
Créer un objet aligné avec les maillages déjà présents. Ci-dessous, en rose, un objet "Sphere" a été créé.
leafobj1
Etape 2 :
On clique le bouton [AddLeaves] il s'enfonce, on inscrit dans le champ [leafobj:] le nom de l'objet maillage à utiliser celui que l'on vient de créer.
bouton
dans mon exemple une icosphère (4,4).

leaf0
On clique sur [GENERATE] et on obtient le résultat ci-dessous :
resultat
L'objet maillage Sphere a été utilisé comme feuille.
LeafScale : permet d'indiquer la taille des feuilles.


Force buttons :
UseThickness: Utilisez ce bouton si vous voulez que la force affecte plus les branches fines que les branches épaisses.
Bearing : qui signifie porter.
Elevation: Hauteur.
Magnitude: Valeur, ordre de grandeur, d'importance.
Contrôlent la direction et la magnitude de la force. Varie en fonction de resolutionV.
Exemples ci-dessous : à droite, seul resolution V a été changé par rapport aux réglages de gauche.
forcev0
forceV6
forceButton
forcebuttonV6
Prune buttons : Taille les sous-branches au hazard avec la valeur inscrite dans "Prob".
PruneFirst: "Prune" qui signifie tailler/élaguer, élague les sous-branches créées dans les premières N itérations.
Prob : de 0 à 0.500, valeur de probabilité.



General buttons :
Scale : Hauteur totale de l'arbre tel qu'il est définit par les section Branche et Stem, sans les feuilles.
Radius : épaisseur/diamètre globale de l'arbre..

Shorten : Contrôle de combien plus court sera le prochain segment. Dépend de resolutionV.
ThinDwn : Contrôle de combien plus étroit sera le prochain segment. Dépend de resolutionV.

Redir : change au hasard la direction des sous-branches.
Twist : applique une torsion au hasard le long de chaque branche. Dépend de resolutionV.

LOD : (Level Of Detail = Niveau de Détail) Fait décroître ResolutionU proportionellement à la décroissance ThinDwn.
Autrement dit : plus les branches sont fines moins elles sont définies/lissées.
ResolutionU : Nombre de points qui constituent le diamètre d'un anneau.

Iterations : Une itération correspond à un cycle de génération de sous-branches, On augmente cette valeur pour générer des sous-niveaux de branches supplémentaires. Pour chaque itération supplémentaire les sous-branches des niveaux inférieurs seront elles-mêmes subdivées en sous-branches plus petites.

genButEx regGenBut