Le didacticiel précédent a permis d'apprendre à créer un polygone. Mais en modélisation 3D, il est extrèmement rare que l'on construise un objet avec un seul polygone, le plus souvent il s'agit d'un ensemble compliqué, d'un réseau, d'une résille. Il n'est evidemment pas possible d'envisager la création "à la main" de chaque polygone. Surtout quand on sait qu'un mesh de Blender peut en contenir plus de 65000. C'est ici que va se révéler la puissance du langage de programmation, dans la possibilité d'automatiser cette opération. Pour cela nous avons besoin de savoir construire une boucle itérative en python. Créer une boucle itérative en python Une boucle itérative pourrait correspondre
au pseudo code:
En pascal ou en modula cela donnerait:
En langage C:
En Basic:
Dans ces langages les boucles se déroulent entre des bornes qui sont clairement définies: les limites en nombres d'itérations comme les limites du texte de la boucle elle-même. Que ces limites soient des parenthèses, les mots clefs "begin/end" ou "for/next" le résultat est le même. Hélas, le python est optimisé, on peut même dire qu'il a été conçu, pour travailler avec des listes. Une boucle itérative prendra comme borne une liste. Cela signifie que la boucle débutera sur le premier élément de la liste, puis sautera au second et ainsi de suite. Cette opération sera effectuée au moins une fois pour chaque élément de la liste jusqu'à ce que la fin de la liste soit atteinte. En Python:
De plus cette_variable
est vraiment le énième élément de cette_liste.
Si
cette_variable est traitée dans le corps de la fonction cela
revient à travailler directement sur l'élément en
question.
Ce n'est pas le propos de ce didacticiel que de montrer les avantages incontestables de cette façon de procéder. Il est clair pourtant qu'il y a là de quoi être surpris, surtout si on a une déjà une certaine expérience de la programmation. Et nous sommes bien ennuyés car
pour travailler FACILEMENT avec notre maillage, nous avons
besoin d'accéder à des valeurs qui correspondent à
les lignes et des positions dans ces lignes, en fait des cellules dans
un tableau bidimentionnel (niveau quatrième de collège, espace
2D abscisses et ordonnées, rien d'impossible à comprendre).
news://news.zoo-logique.org/3D.Blender
|