mardi 8 avril 2014

Récapitulatif Python

un petit récapitulatif de ce que l'on à vu en python.

Quand on place un tag python sur un objet souvent on à besoin de connaitre sur quel objet le tag en question est placé et on à besoin de "nommer" cet objet pour le manipuler dans le script, on fait donc ainsi :

# objet sur lequel on à placé le tag
monObjet = op.GetObject()

Pour beaucoup de script on a besoin de connaitre la frame sur laquelle l'animation se trouve, donc on à besoin de définir une variable qui contient le numéro de frame active, on fait donc ainsi :

# la frame active
frame = doc.GetTime().GetFrame(GetFps())

Pour la plupart des scripts on à besoin de récupérer des données utilisateur placé généralement sur le tag lui même ou parfois sur d'autre objet, pour récupérer une donnée utilisateur on fait ainsi :

# récupérer une donnée utilisateur placé sur le tag lui même
# (le numéro 2 change en fonction de l'ID de la DU à récupérer)
maDonnee = op[c4d.ID_USERDATA,2]

pour manipuler la position, la rotation ou l’échelle d'un objet on à besoin de les connaitre pour cela on utilise ceci :

# récupérer la rotation, la position et l'échelle d'un objet
rotation = monObjet.GetRelRot()
position = monObjet.GetRelpos()
echelle = monObjet.GetRelScale()

et après les avoir modifier il faut penser à les réaffecter au objet en utilisant ceci :

# redéfinir la rotation, position et echelle d'un objet
monObjet.SetRelRot(rotation)
monObjet.SetRelpos(position)
monObjet.SetRelScale(echelle)

On sait définir l'objet sur lequel on a placé le tag mais parfois on a besoin de définir un nom pour un autre objet de la scène, on peux alors faire ainsi :

# chercher un objet dans le scène et l'affecter à un nom
monObjet = doc.SearchObject("nomdelobjetatrouver")

On peux également renommer un objet en faisant ainsi :

# renommer un objet
monObjet.SetName("nouveau nom")

Il peux arriver que l'on ai besoin d'affecter une action tout les x frames, pour cela il suffit d'utiliser ce genre de condition :

# effectuer une action toute les 5 frames
if (frame % 5) == 0:
    # faire quelque chose
   
   

4 commentaires:

Lazarus a dit…

Merci,bon recapitulatif a garder dans un coin du disque dur.Pour en revenir au plugin de Nick Campbell(ENCORE!!!),tout a fait d'accord avec toi,d'autant que Robert Leger a deja fait un tuto avec xpresso,qui fait ni plus ni moins que la meme chose et gratuitement en plus!

Lazarus a dit…

OUPS!!! j'ai pas mis de lien:
http://vimeo.com/20819958

Unknown a dit…

Félicitation pour votre excellente pédagogie (et ce de la part d'un modeste prof du supérieur), tout est clair et bien ciblé, vos connaissances sont immenses. Continuez sur les scripts Python, ça m'intéresse.

Merci

/Bruno

KamiGeek a dit…

merci du compliment, bien sûr que je vais continuer, il y a encore beaucoup à voir