Vous êtes sur la page 1sur 7

Differences entre Fentre de script

et fentre de "link"

(reliure).

Avant toute chose, comment se prsente matriellement l'outil lui-mme? Extrieurement (sous windows) c'est une DLL, une bibliothque dynamique de fonction qui se trouve dans le mme rpertoire que le fichier binaire de Blender. Au niveau de l'interface graphique il y a deux icones qui ouvrent deux fentres consacres au python: cette fentre permet d'crire, c'est un traitement de texte trs simple. Le script y est obligatoirement contenu. Quelques raccourcis: Alt-S: Sauvegarder le fichier ( les versions rcentes posent problme en premire sauvegarde, prfrer le menu File) Alt-O: Ouvrir un fichier Alt-A: Selectionne tout le texte Alt-C: Copier la slection Alt-V: Coller ce qui se trouve dans le tampon de copie. Alt-X: Effacer la slection. Alt-J: Sauter la ligne n Alt-F:Trouver le texte surlign ou recommencer chercher le mme texte Alt-M: (B2.27) Envoie le texte slectionn dans le tampon de l'objet texte. Environ 1000 signes peuvent tre crs en mme temps. Ctrl-C : (B2.3) Copier la slection. Ctrl-X : (B2.3) Couper la slection. Ctrl-V : (B2.3) Coller la slection. Ctrl-Shif-V (B2.27 et sous win32 uniquement) Copie le contenu du presse papier dan sla fentre de traitement de texte de Blender. Ctrl-Shif-C (B2.27 et sous win32 uniquement) Copie le texte slectionn dans presse papier. Il est alors possible de l'importer dans une autre application windows. Alt-U: (undo) Annuler. Alt-R: (redo) Rpeter. Alt-Shift-S : Menu (Select) Selection dont Jump vers ligne, trs interessant pour dboggage de code. Alt-Shift-F : Menu (File] Fichier commandes standard habituelles Alt-Shift-E : Menu (Edit ) Edition couper, coller, copier, afficher le contenu du tampon de selection. Alt-Shift-V : Menu (View) Visualisation saut en dbut et fin de fichier, page suivante, page prcdente Fentre de "linkage" pour associer le fichier soit
1

une animation en gnral, donc la scene, le script s'excute image par image en utilisant quelques constantes indiquants le numro de l'image ou le temps coul, soit : un objet en particulier, objet 3D ou lampe ou camera ... On peut utiliser le python pou reffectuer l'opration de manire automatique voir les pages : cpl_LOD.htm#Lierunscriptalascene cpl_3dcursorposition.htm#connecterlescriptalascene Pour charger un script :

Avant d'crire ses propres scripts il sera peut-tre plus simple d'utiliser ceux qui existent dj. Encore faut-il savoir les mettre au bon endroit. Aller dans la fentre de texte faire shift-f11. Vrifier que la fentre possde bien un en-tte comme celui-ci : ou

1. cliquer le bouton d'ouverture de bloc de donnes

ou le

2. choisir OPEN NEW, ce qui ouvre une fentre sur le rpertoire courant pour charger un fichier ".py".

Comment cela marche-t'il?

Pour comprendre ce qui se passe rellement un exemple sera plus loquent. Si on se trouve dans un environnement windows, il faut ouvrir une fentre script cliquant ADD, la place d'OPEN et taper le texte suivant: en

import Blender import sys obj=Blender.Object.Get() print str(obj) sys.stdout.flush()

ou bien sous linux :

import Blender obj=Blender.Object.Get() print str(obj)

Ce script fait un appel au module Blender pour obtenir le contenu d'un objet. La fonction qui permet d'effectuer cette opration est la fonction Blender.Object.Get(). Ce n'est pas une fonction standard du langage python. Le python, en effet, peut tre complt par une serie de modules contenants de nouveaux objets. Pour rappel: un objet en programmation orient objet est un ensemble form de mthodes ( en fait la fonctions, Get() est une mthode du sous-module Object qui est contenu par le module Blender) et de donnes. Il faut donc commencer le script par une ligne demandant l'interprteur de charger le module contenant cette fonction . Si aucun nom d'objet n'est fourni la fonction d'appel (on pourrait crire Get('Plane') ),elle renvoie la totalit de la liste des objets qui existent actuellement en mmoire sans diffrencier l'appartenace telle ou telle scne . Quand ces lignes furent crites, l'affichage du contenu d'un objet tait problmatique . Il tait ncessaire d'encadrer obj par la fonction str() . Depuis l'APi python de Blender s'est bien amliore et supporte sans problme un print obj . Pour les mmes raisons, sous Window, il tait ncessaire de forcer l'affichage dans la console dos avec la fonction sys.stdout.flush() . Lancer l'excution du script

C'est la combinaison de touche Alt-PKEY qui va activer le script dans l'exemple qui est utilis ici. Il est indispensable que la fentre de script soit active, c'est dire que le pointeur souris soit l'intrieur. On notera au passage que ce n'est pas la seule faon. En effet, un script peut tre li l'execution d'une animation ou un objet en particulier Dans ce cas, c'est le dclanchement de l'animation, ou le dplacement de l'objet (qui oblige Blender re-dessiner la fentre) qui lancera l'excution du script. Affichage sur la console.

Evidemment si on s'attend voir s'afficher cette liste dans la fentre courante on a de forte chance d'tre du. Par contre le contenu de la "console" a t modifi.

Il suffit donc de cliquer le bouton pour voir son contenu:

Une alternative consisterait lancer Blender avec les parametres suivants: blender -p 0 200 640 480 (une astuce emprunte l'article de Strubi et Cartsen qui se trouve cette adresse: http://www.blenderbuch.de/tutor/python1/python1_eng.html )

Cet affichage correspond la structure du fichier standard que Blender charge au lancement. Le signe indique qu'il s'agit d'un objet. Le python, grace la commande print obj, a bien renvoy une liste contenant un objet camera et un objet plane. La commande len(obj) permet de savoir quelle est la longueur de la liste obj. En langage python les listes sont declares et contenues entre deux crochets "[" et "]". Pour obtenir ces signes sur un clavier europen azerty, voir: Comment faire?) Attention aux erreurs de traitement de texte:

Il est important de garder l'ordre des lignes du modle car le python les excute l'une aprs l'autre. Les indentations et tabulations indiquent au langage qu'il doit regrouper les instructions dans un sous-programme; donc, le texte: obj = Blender.Object.Get() print str(obj) # obj est une liste ...

est excut sans erreur; alors que le texte (l'espace indent est not en rouge):

obj = Blender.Object.Get() print str(obj) # obj est une liste ...

engendrera une erreur d'excution:

Les espaces en fin de ligne sont aussi proscrire.

obj = Blender.Object.Get() print str(obj) # obj est une liste ...

Augmenter les possibilits en utilisant les bibliothques d'extension du langage Python .

Malgr cet ajout, les nouveaux utilisateurs de scripts, le plus souvent parce qu'ils veulent utiliser un script d'importation ou d'exportation particulier, peuvent tre confronts l'erreur:

Ils imaginent tout de suite que l'archive de Blender qu'ils ont install est incomplte ou que le script est truff d'erreur. En fait, c'est une sorte de "baptme du feu". La premire rencontre avec les extensions de python. Comme il a t indiqu plus haut, sous Windows, Blender est accompagn d'un fichier nomm 'python23.dll', c'est le minimum ncessaire pour travailler en " scripting" dans un logiciel. Mais on peut tirer profit de bibliothques de fonctions supplmentaires qui accompagnent la version complte du python. Variable d'environnement Pour cela, il faut installer le langage lui-mme dans un rpertoire de son disque dur. Peu importe le nom. Il y a cependant une rgle respecter pour ne pas avoir de problme: le nom complet du rpertoire ne doit pas contenir d'espace vide. Par exemple: " C:\Program Files\python" ne sera pas trouv, alors que "C:\ProgramFiles\python", oui. Ce problme est li l'obligation de dfinir une variable d'environnement dans son fichier autoexec.bat, or il se trouve que l'espace vide est interprt par le MSdos comme une limite de commande. ... SET PYTHONPATH=C:\PROGRAMSFILES\PYTHON;C:\PROGRAMSFILES\PYT HON\DLLs;C:\PROGRAMSFILES\PYTHON\LIB ... Le fichier autoexec.bat se trouve dans le rpertoire racine du disque de dmarrage de windows. Dans certaines versions de Windows comme Windows NT ou Windows 2000, il n'existe pas de fichier autoexec.bat mais on peut l'ajouter sans crainte, condition de se
5

limiter exclusivement aux variables d'environnement. Voir aussi la page :variables d'environnement python sous Window XP Pour quelques renseignements sur l'environnement Linux voir: Python, corriger le Path...

MODIFICATION IMPORTANTE dans Blender 2.34 partir de cette version la dll python qui accompagne Blender est double d'un fichier zipp dans lequel sont regroups des modules indispensables l'excution des scripts qui accompagnent le logiciel en standard . L'installation d'une version complte du python n'est plus plus absolument ncessaire dans tous les cas . Une autre mthode consiste indiquer le chemin dans Blender mme. En effet, il y existe un bouton "Python:" dans la fentre Info.

Il est indispensable d'y indiquer au moins l'adresse des librairies, exemple: "C:\PROGRAMSFILES\PYTHON\LIB" . Il faut aussi penser sauvegarder le fichier standard avec la commande Ctrl-U. Nouvelle interface graphique pour le lancement des scripts Dans les dernires versions du logiciel, il est possible de lancer les script partir de menus . Ces menus sont dispercs dans l'ensemble du logiciel mais il toujours possible de passer par un menu principal qui les regroupe tous .

Ce menu principal est disponible dans la fentre Scripts. Il est encore assez variable. D'une version l'autre, des entres apparaissent ou disparaissent, ou encore sont transfres dans d'autres sous menus

Attention ne pas comettre de confusion : ce menu lance les scripts mais ne les charge pas ncessairement dans la fentre de traitement de texte. Ce qui peut porter confusion car tous les sscripts ne sont pas obligatoirement prpars pour tre lancs par menu. Conclusion:

Toutes ces notions sont ncessaires la matrise matrielle de l'outil mais ne sont pas spcialement intressantes pour la productions de formes ou d'images. La page suivante explique comment utiliser le python pour modifier les positions des sommets d'un rseau carr de polygones.