import Blender
import Blender
print Blender.Get('curframe')
Get
signifie "obtenir".'curframe'
est ce
qu'on appelle une
chaîne de caractères (string en anglais). Get
du module Blender
..Blender.Get('curframe')
de
notre programme peut se comprendre de la façon suivante: Blender.Get('curframe')
print
Blender.Window.GetCursorPos()
print
Blender.Scene.getCurrent().getName()
lobjet =
Blender.Object.Get('Cube')
print 'le type de
l\'objet est
: ',
print lobjet.getType()
print
'la taille de
l\'objet est : ',
print lobjet.getSize()
print 'la position de l
\'
objet est : ',
print lobjet.getLocation()
A l'exécution de ce
programme,
vous devriez voir apparaître sur
votre console les lignes suivantes:le
type
de l'objet est : (1.0, 1.0, 1.0)
la
taille de
l'objet est : (1.0, 1.0, 1.0)
la position
de l'objet
est : (0.0, 0.0, 0.0)
getSize()
et getLocation()
renvoie donc des listes de 3 valeurs correspondantes aux 3 dimensions
de l'espace dans lequel nous travaillons.getLocation()
ou
getSize()
l'index de la coordonnée à
isolée entre
crochet ([0]
pour X, [1]
pour Y et [2]
pour Z).print 'la
position en X
de l\'''objet
est : ',
print lobjet.getLocation()[0]
print
'la
position en Y
de l\'''objet est : ',
print lobjet.getLocation()[1]
print
'la
position en Z
de l\'''objet est : ',
print lobjet.getLocation()[2]
import Blender
lobjet = Blender.Object.Get('Cube')
A partir de cet object Blender, on accède aux
données spécifiques à ce
dernier par l'appel
à
la fonction GetData()
lamesh =
lobjet.getData ()
Comme l'object Blender nommé 'Cube' est de type
NMesh, on
récupère dans la variable lamesh, un object de
type NMesh.verts
qui contient
une liste de NMVert.verts
contenue dans
l'objet NMesh est une
liste contenant autant d'élements que de vertices dans notre
mesh.
print 'Il y a', len(lamesh.verts), ' vertices dans l'objet'
for vertice in
lamesh.verts:
print 'Les coordonnées du vertice
d\'index ',
vertice.index,
print 'sont ', vertice.co
index
(
qui fournit l'index du vertice dans la liste verts
de la mesh) et co
(qui donne les
coordonnées
(X,Y,Z) du vertice).
import Blender
lobjet = Blender.Object.Get('Cube')
lamesh = lobjet.getData ()
print 'Il y a', len(lamesh.verts), ' vertices dans l\'objet'
for vertice in lamesh.verts:
print 'Les coordonnées du vertice
d\'index ',
vertice.index,
print 'sont ', vertice.co
Il y a 8 vertice(s)
dans l'objet
Les coordonnÚes du vertice d'index 0
sont [1.0000,
1.0000, -1.0000]
Les coordonnÚes du vertice d'index 1
sont [1.0000,
-1.0000, -1.0000]
Les coordonnÚes du vertice d'index 2
sont [-1.0000,
-1.0000, -1.0000]
Les coordonnÚes du vertice d'index 3
sont [-1.0000,
1.0000, -1.0000]
Les coordonnÚes du vertice d'index 4
sont [1.0000,
1.0000, 1.0000]
Les coordonnÚes du vertice d'index 5
sont [1.0000,
-1.0000, 1.0000]
Les coordonnÚes du vertice d'index 6
sont [-1.0000,
-1.0000, 1.0000]
Les coordonnÚes du vertice d'index 7
sont [-1.0000,
1.0000, 1.0000]
lobjet =
Blender.Object.Get('Cube')
lobjet.setName('CubeNouveauNom')
Ou le redimensionner, on utilisera pour cela la
méthode setSize
de l'objet:
lobjet.setSize([2.0,1.0,1.0])
lobjet.setLocation([-2.0,1.0,0.0])
lobjet.setEuler([90.0,0.0,45.0])
# On
raffraîchit
l'affichage
Blender.Redraw()
# On multiplie sa
taille en X
par 2 et on laisse inchangés les tailles en Y et Z
lobjet.setSize([ \
Blender.Object.Get('CubeNouveauNom').getSize()[0]*2,\
Blender.Object.Get('CubeNouveauNom').getSize()[1],\
Blender.Object.Get('CubeNouveauNom').getSize()[2]\
])
setLocation()
et
setEuler()
, on utilisera les
méthodes getLocation()
et getEuler()
Blender.Scene.GetCurrent()
unobjet =
Blender.Object.New('Empty' , 'Mon Empty')
Blender.Scene.GetCurrent().link(unobjet)
Blender.Redraw()
from
Blender import NMesh
# On
crée un object de
type NMesh
me=NMesh.New('MaMesh')
# On ajoute 3
vertices
à la mesh
me.verts.append(NMesh.Vert(0.0,0.0,0.0))
me.verts.append(NMesh.Vert(1.0,0.0,0.0))
me.verts.append(NMesh.Vert(0.0,1.0,0.0))
# On fabrique une
face avec
les 3 vertices nouvellement créé
f=NMesh.Face()
f.v.append(me.verts[0])
f.v.append(me.verts[2])
f.v.append(me.verts[1])
# On ajoute la
face à
l'objet NMesh
me.faces.append(f)
#Et enfin, on
crée un
objet blender qui s'ajoute à la scène courante
ob=NMesh.PutRaw(me)
unobjet =
Blender.Object.New('Empty' , 'Mon Empty')
Blender.Scene.GetCurrent().link(unobjet)
lipo
=
Blender.Ipo.New('Object','UneIpo')
Nous avons à présent
créer un objet
à animer .. et nous avons créé une Ipo
pour
décrire notre animation. Il nous faut dire à
Blender que
cette Ipo s'applique à l'objet que nous avons
créer. Pour
ce faire, nous utilisons la fonction setIpo()
de notre objet à
animer.unobjet.setIpo(lipo)
lipo
et c'est sur
cette courbe
que nous placerons nos points.posX
=
lipo.addCurve('LocX')
Si nous avions voulu animer d'autres
propriétés de
l'objet (son orientation, sa taille, .. ) nous aurions passer un
paramètre différent à la fonction addCurve() de notre
Ipo (LocX,
LocY, LocZ, RotX, RotT, RotZ, sizeX, SizeY, SizeZ, etc ...)start_frame =
Blender.Get
('curframe')
end_frame =
start_frame + 25
Les 2 lignes ci-dessus placent dans les variables start_frame
et end_frame
, les valeurs correspondantes
respectivement
au numéro de la frame courante et au numéro de la
frame
courante augmentée de 25.posX.addBezier
((start_frame,
unobjet
.getLocation()[0]))
posX.addBezier
((end_frame,
unobjet
.getLocation()
[0] + 6))
start_frame
),
un
point à la courbe LocX
correspondante à la
position courante de l'objet.end_frame
)
correspondante à la position décalée
de 6
unités Blender sur l'axe des X.
posX.setInterpolation('Linear')
posX.setExtrapolation('Cyclic')
posX.Recalc()
import Blender
unobjet =
Blender.Object.New('Empty' , 'Mon Empty')
Blender.Scene.GetCurrent().link(unobjet)
lipo =
Blender.Ipo.New('Object','UneIpo')
unobjet.setIpo(lipo)
posX =
lipo.addCurve('LocX')
start_frame =
Blender.Get('curframe')
end_frame =
start_frame + 25
posX.addBezier
((start_frame,
unobjet.getLocation()[0]))
posX.addBezier
((end_frame, unobjet.getLocation()[0] + 6))
posX.setInterpolation('Linear')
posX.setExtrapolation('Cyclic')
posX.Recalc()
Blender.Redraw()