Différences entre les versions de « Programmation objet et géométrie/Objets Python sous Blender/Création d'un objet 3D en Python sous Blender »

m
<source> -> <syntaxhighlight> (phab:T237267)
m (<source> -> <syntaxhighlight> (phab:T237267))
 
Une fois que l'on a transformé l'une des vues 3D en vue Texte (script Python), et entré le fameux ''import Blender'' qui permet de commencer, on va également importer la classe ''Mesh'' dont le tétraèdre sera une instance. Cette classe fait partie du paquet ''bpy'' (''blender python'') qu'on va donc importer, en plus de Blender lui-même:
 
<sourcesyntaxhighlight lang="python">
from Blender import *
import bpy
</syntaxhighlight>
</source>
 
Un tétraèdre est un polyèdre, et hérite donc de ses propriétés. On peut donc dire qu'un tétraèdre est une instance d'un polyèdre, ou qu'un polyèdre est une classe dont le tétraèdre hérite certaines propriétés.
Les 4 sommets du tétraèdre seront stockés dans un tableau appelé ''sommets''. Contrairement à CaRMetal, ce ne sont pas les noms des sommets qui seront stockés, mais directement leurs coordonnées:
 
<sourcesyntaxhighlight lang="python">
sommets=[ [-1,-1,-1], [1,1,-1], [1,-1,1], [-1,1,1] ]
</syntaxhighlight>
</source>
 
Pour définir le tétraèdre, il reste à lui fournir la liste de ses faces (les arêtes en découleront automatiquement).
C'est dans l'ordre 0, 1, 2 qu'on va donc entrer les sommets de la première face:
 
<sourcesyntaxhighlight lang="python">
faces= [ [0,1,2], [0,2,3], [0,3,1], [1,2,3] ]
</syntaxhighlight>
</source>
 
=Naissance du tétraèdre=
La méthode de la classe ''meshes'' (polyèdres) qui permet d'allouer un objet héritant de cette classe s'appelle, classiquement, ''new()'' ([[w:constructeur (programmation informatique)|constructeur]]). Elle accepte en paramètre le nom que portera l'objet (ici ''tetra''):
 
<sourcesyntaxhighlight lang="python">
tm = bpy.data.meshes.new('tetra')
</syntaxhighlight>
</source>
 
(la variable dans laquelle l'objet tétraèdre est stockée s'appelle ''tm'' pour ''tetrahedron mesh'')
À ce stade, le tétraèdre est un polyèdre, mais vide puisqu'il ne contient aucun sommet, aucune arête et aucune face. En fait la seule propriété qu'il possède est son nom ''tetra''. Il reste donc à lui fournir les deux listes créées auparavant, ''sommets'' et ''faces''. Cela se fait avec la méthode ''extend()'' commune aux propriétés ''verts'' (abréviation de ''vertices'') et ''faces'' du tétraèdre:
 
<sourcesyntaxhighlight lang="python">
tm.verts.extend(sommets)
tm.faces.extend(faces)
</syntaxhighlight>
</source>
 
Maintenant que Blender possède un objet ''tétraèdre régulier'' (qu'il n'avait pas auparavant), il ne reste plus qu'à en placer un dans la scène 3D:
Il faut s'assurer que la scène est active pour qu'on puisse y placer un objet, puis le placer en le rajoutant à la [[w:base de données|base de données]] des objets Blender:
 
<sourcesyntaxhighlight lang="python">
scn = bpy.data.scenes.active
ob = scn.objects.new(tm, 'tetra')
</syntaxhighlight>
</source>
 
Une fois qu'on a exécuté le script avec le raccourci clavier ''Alt+P'', un objet supplémentaire est apparu dans la scène 3D, et il s'appelle "tetra". En le texturant puis en effectuant un rendu (appui sur ''F12''), on a l'image suivante:
1 535

modifications