8/ |
"me" est un objet mesh. Cet objet
contient des méthodes et des propriétés. Pour l'instant
les propriétés sont vides. Il n'y rien à traiter.
Avant de commencer à intervenir à ce niveau il est bon de
comprendre comment sont gérées les informations touchant
à la forme des objets mesh dans un logiciel 3D.
A la base, il y a des points, ou sommets.
Ces sommets sont groupés en un ensemble ordonné, une liste,
un tableau à une dimension, dont l'indice de départ
est zéro, comme les tableaux en langage C. Il y a donc le
point [0], puis le point[1] et le point[2] ,etc. L'indice du dernier point
est [nombre de point -1]. Chaque point est lui-même constitué
d'un tableau, une autre liste, à trois entrées
contenant les coordonnées x,y et z.
|
Point1:__verts[0]------>{x[-1.0],y[-1.0],z[0.0]}
Point2:__verts[1]------>{x[1.0],y[1.0],z[0.0]}
Point3:__verts[2]------>{x[-1.0],y[0.0],z[0.0]}
Point4:__verts[3]------>{x[0.0],y[0.0],z[0.0]}
Point5:__verts[4]------>{x[1.0],y[0.0],z[0.0]}
.... |
Exemple d'une série de Points
|
C'est géométriquement à
partir des points que sont constituées les facettes. Elles ont aussi
plusieurs propriétés.
La plus importante: la liste
des sommet, un tableau qui référence les
adresses des coordonnées des points. Dans Blender les facettes peuvent
avoir 3 ou 4 sommets. Dans d'autres logiciels, la limite du nombre de sommets
par facette peut être: 65000, ça laisse rêveur.
|
Face1:___f[0]---->v.[0,3,2]
Face2:___f[1]---->v.[0,1,3]
Face3:___f[2]---->v.[1,4,3]
.... |
Exemple d'une série de faces
|
Clarifions notre objectif: créer
un réseau de faces. Nous n'essayerons pas d'attribuer une couleur.
Dans la situation actuelle nous partons de rien. Dans l'ordre: il
nous faut d'abord indiquer que le mesh n'a pas de face coloriée
et que le matériau n'est pas de type sticky.
Ensuite Il nous faut construire une liste de sommets et, en dernier
lieu, utiliser ces sommets pour fabriquer des faces.
La procédure de création
de sommets, qui est très indirecte, passe par deux phases.
Phase 1: un objet sommet
est créé en mémoire à l'aide de la méthode
NMesh.Vert().
Cette procedure reçoit entre ses parenthèses des paramètres
qui correspondent aux coordonnées 3D du sommet.
v=NMesh.Vert(1.0,0.0,0.0) |
Phase 2: le sommet v
est ajouté à la liste sommetde "me"
qui se nomme
"verts" en utilisant la méthode
standard d'ajout d'élément des listes du python "append()".
En python, les listes sont des objets qui ont des méthodes et des
propriétés.
On recommence l'opération
un nombre de fois suffisants pour créer au moins une face:
v=NMesh.Vert(1.0,1.0,0.0)
me.verts.append(v)
v=NMesh.Vert(0.0,1.0,0.0)
me.verts.append(v)
v=NMesh.Vert(0.0,0.0,0.0)
me.verts.append(v) |
La création de face est presque
identique. Il y a une phase supplémentaire car il faut remplir la
liste de point de la facette avant de l'ajouter à "me".
Phase 1: création d'un objet
facette en mémoire avec la méthode "NMesh.Face()"
Phase 2: remplissage de la facette
avec les adresses des coordonnées des points. Ces adresses sont
conservées dans une liste qui porte le doux nom de
"v"
f.v.append(me.verts[0])
f.v.append(me.verts[1])
f.v.append(me.verts[2])
f.v.append(me.verts[3]) |
Phase 3: nous ajoutons "f
" à la liste de face de "me"
Il ne reste plus qu'à introduire
ce nouvel objet dans la liste d'objets de la scène actuelle
de Blender en utilisant la méthode "PutRaw(mesh,[nom,
renormalise])" du module NMesh. Les paramètres attendus sont
le nom du mesh sur lequel nous avons travaillé et le "nom" qu'il
devrait avoir dans la liste d'objet de Blender. Enfin, le dernier
paramètre oblige Blender à recalculer le vecteur normal sur
chaque sommet.
NMesh.PutRaw(me,"plane",1) |
Il ne reste plus qu'à demander à
Blender de mettre à jour l'écran en le redessinant
avec le nouvel objet.
Le combo magique: Alt-p et Ô
miracle un carré vient de surgir à l'écran!!
Un autre combo: Alt-s ( qui
fonctionne très bien sur les très anciennes versions de Blender,
cependant un bug en rend l'utilisation impossible pour la sauvegarde
initiale dans les versions supérieures à la 2.12, il
est préférable d'utiliser Alt-Shift-f; après
une première sauvegarde Alt-s donnera pleinement satisfaction
jusqu'à la fin de la session), et la fenêtre d'enregistrement
fichier apparaît. Il est désormais possible de donner un nom
au fichier texte en remplaçant le "nom_de_fichier_courant.blend"
qui s'est automatiquement affiché par "essai.py"
|