Podcast Python

Ici nous parlons du forum et de son actualité.

Modérateurs : frez, Yadoob, stilobique, ModSquad

Re: Podcast Python

Message par lapineige » 31 Août 2014, 08:59

@Olive: Pour ça que tu participera ;-)


Pour les méthodes opérateurs il faudrait voir les deux cas peut-être, dans certains cas un opérateur s'appelle directement et à d'autres il faut passer une chaîne et un contexte, je n'ai pas compris pourquoi, et j'oublie rapidement les subtilités vu que je code très irrégulièrement. :P

Je te rassure, comme je code aussi de façon irrégulière, et que je saute entre les langages et les modes d'utilisation, je ne me souviens jamais des commandes :-P. Et la la recherche internet est toute puissante ;)


Un exemple avec le sélecteur de mode:
Voici 3 possibilités:
Image
Qui vont donner:
Image
Comme bpy.ops.object.mode_set possède un argument "mode", par défaut à "OBJECT", si tu l'appelle comme un opérateur classique, le bouton utilisera le code bpy.ops.object.mode_set(mode='OBJECT').
Si tu utile operator_enum, tu énumère les différents modes, ce qui créé un bouton par mode.
Et avec operator_menu_enum, tu énumère dans un menu.

Est-ce clair ?

Pour le panneau je me demande juste comment Blender sait à quel moment un panneau doit être actualisé, mais bon c'est peut-être plus du C que du Python.

A chaque fois que ta souris passe dessus la fenêtre (rafraichissement de l'affichage) ou que la scène est rafraichie ;-)
Du coup quand y'a une erreur, elle s'affiche plein de fois :-P

Pour l'API je pensais à situer dans la doc les éléments incontournables, l'accès au contexte, les opérateurs natifs principaux, les types principaux, le module BMesh etc. Un peu comme les stations d'un réseau de transport, pour aller plus loin chacun fait ce qu'il veut après.

Ça va faire beaucoup et un peu compliqué.
Par contre je monterai comment aller plus loin justement, out trouver les fameux modules, etc.
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3716
Inscription : 25 Juin 2014, 07:06

Re: Podcast Python

Message par cedric » 31 Août 2014, 11:09

Thx lapineige, je cherchais le dernier pour faire la liste ^^
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7049
Inscription : 03 Août 2013, 21:36

Re: Podcast Python

Message par orgelf » 31 Août 2014, 12:49

Olive, tu n'es pas seul...
Avatar de l’utilisateur
orgelf
 
Message(s) : 230
Inscription : 30 Oct 2013, 13:30
Localisation : Paris

Re: Podcast Python

Message par cedric » 31 Août 2014, 13:47

Si vous avez regardé mes vidéos, vous savez ce qu'est un opérateur ;)
En gros, un opérateur est une commande, soit une de base de Blender, genre "create_cube" ou pour afficher un mode.
Lapi a montré comment afficher les modes de 3 façons, Direct, énumérées ou énuméré dans un menu déroulant.

Après, quand on fait un code qui fait une addition d'actions pour faire un truc dont blender n'a pas d'opérateur de base, comme mon align to X, on la met dans un opérateur.
Cet opérateur est une classe qu'on nommera et qu'ensuite on appellera via une commande opérator.

Genre je créer une classe pour mon align to X.

Image

Ensuite pour l'ajouter à un menu sur blender, je crée un opérator qui sera placé où je veux dans mon menu.
Il est appelé par son bl_idname.
Celui ci ne doit pas avoir de majuscules et doit avoir un point entre les deux.

Image

A cet opérator, on peu lui attribuer un texte et une icône.
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7049
Inscription : 03 Août 2013, 21:36

Re: Podcast Python

Message par orgelf » 31 Août 2014, 15:27

merci Cédric :)
Avatar de l’utilisateur
orgelf
 
Message(s) : 230
Inscription : 30 Oct 2013, 13:30
Localisation : Paris

Re: Podcast Python

Message par lapineige » 31 Août 2014, 20:37

Orgelf et Olive: c'est exactement le genre de situation souhaité, par exemple pour le podcast, mais aussi en général. Il ne faut surtout pas vous braquer, forcément entre gars qui connaissent on parle avec des mots techniques et du jargon. Mais entre le gars lambda et l'infographiste, c'est exactement pareil.
La pire situation aurait été: "je comprends rien..." et pis voila, je vais voir ailleurs.
Hésitez pas à poser ce genre de questions. Sinon vous progresserez pas et ça vous ferra encore plus peur.

Dans ce cas là, je pense que vous avez compris l'explication de cédric, non ? C'était pas bien compliqué, non ?
Pourtant vu de l'extérieur, ça parait super compliqué, un truc de barbu quoi.

Je compare souvent l'apprentissage du code à celui de la 3D. La courbe de progression est à peu près la même, les blocage aussi.
Pour vous lancer dans la 3D, il vous fallait ce petit boost dû à la motivation ou à la curiosité. Sinon vous n'auriez jamais fait le premier pas, et vous ne seriez pas resté.
Le code c'est pareil. Sauf que dans l'esprit général l'image est encore pire, infographiste ça fait rêver, codeur ça fait penser à gros geek barbu qui tape des 0 et des 1 toute la journée :lol:
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3716
Inscription : 25 Juin 2014, 07:06

Re: Podcast Python

Message par cedric » 31 Août 2014, 20:59

Ce qu'on pourrait faire c'est prendre un opérateur simple et expliquer tous les mots utilisés.

Genre, Pour faire un code, on va combiner des actions, je l'ai montré dans un tuto, c'est super simple, il suffit de recup le code, de les mettre à la suite et de lancer le bouton et ça fonctionne.

Pour l'utiliser dans un menu, il faut créer un opérateur, une classe.
Cette classe peut être expliquée.

Pour créer une classe on tape "class", ensuite, le nom de la classe avec la première lettre en majuscule pour chaque mot, le tout attaché.

Code : Tout sélectionner
class AlignToX(bpy.types.Operator):


(bpy.types.Operator): , ça nous dit ce que sera cette classe, en l'occurence, un operator et on ajoute les : à la fin.

Il y a plusieurs types de classes, operator, menu, panel, ça vous indiquera à quoi sert cette classe.

Ensuite, on la nomme, avec bl_label et id_name, on peut ajouter si c'est un panel, dans quelle Tab elle va aller etc.

Code : Tout sélectionner
bl_idname = "object.align2x" 
bl_label = "Align To X"


Ensuite, on a le code à proprement parlé.

Code : Tout sélectionner
def execute(self, context):


Qui est une fonction qui va s'exécuter dans le contexte dans lequel on est si je ne dis pas de bêtises.

On met enfin son code python à la suite.

Code : Tout sélectionner
bpy.ops.object.mode_set(mode = 'OBJECT')
bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)

for vert in bpy.context.object.data.vertices:
    if vert.select:
        vert.co[0] = 0
     bpy.ops.object.editmode_toggle()
     return {'FINISHED'}


Dans ce code, je lui dit :
- Tu vas te mettre en mode object
- Tu me fais un freeze transform
- Pour tous les vertex de l'objet
- Si tu as des vertex sélectionnés
- Tu me les déplace à 0 en X (x=0, y=1, z=2)
- Ensuite tu te met en edit mode
- Et tu as fini ce code, yeah !

Une fois ceci fait, il faut enregistrer la classe et la désenregistrer.

Pour incorporer ce code dans un menu, c'est comme je l'ai expliqué précédemment, on a une classe menu, ou panel, on ajout l'opérator, là c'est bl_idname.

Code : Tout sélectionner
layout.operator("object.align2x", icon='MOD_WIREFRAME')


Quand on y pense, en code python, on a vraiment pas grand chose, la boucle for pour lister les éléments et le if.
Le reste c'est du template blender.

Dites moi si c'est bien compréhensif ;)
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7049
Inscription : 03 Août 2013, 21:36

Re: Podcast Python

Message par lapineige » 31 Août 2014, 22:08

Quand on y pense, en code python, on a vraiment pas grand chose, la boucle for pour lister les éléments et le if.

C'est clair et c'est ce qui fait que c'est si facile. Peu de concept de programmation à apprendre, juste quelques mots bizarres :lol:


Qui est une fonction qui va s'exécuter dans le contexte dans lequel on est si je ne dis pas de bêtises.

Pour être précis, la fonction récupère l'argument context, qui est le contexte du lancement de la fonction. C'est à dire la scène courante, les objets sélectionnés, etc.
Cet argument n'y serait pas (même s'il est donné par Blender lors de l'appel de l'opérateur), il faudrait faire bpy.context au lieu de context.


Aucune dispo demain ou mardi matin ?
Sinon vendredi soir, à confirmer.
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3716
Inscription : 25 Juin 2014, 07:06

Re: Podcast Python

Message par cedric » 31 Août 2014, 23:53

J'attend le retour d'un devis, mais pour le moment je n'ai rien.
Envoie un mp à mattrm pour voir ses dispos ;)
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7049
Inscription : 03 Août 2013, 21:36

Re: Podcast Python

Message par lapineige » 01 Sep 2014, 09:49

Ok mattrm me dis rien avant 20h. Donc vendredi soir. Kikédispo ?
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3716
Inscription : 25 Juin 2014, 07:06

Re: Podcast Python

Message par cedric » 01 Sep 2014, 10:31

Ok pour vendredi soir alors !
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7049
Inscription : 03 Août 2013, 21:36

Re: Podcast Python

Message par Mareck » 01 Sep 2014, 10:56

Ce podcast m’intéresse beaucoup, bien que peut être un peu tôt dans mon processus d’apprentissage, il y a tellement de domaines que j'ai envie de découvrir.

Cela dis je ne pense pas être dispo, à voir quand une date sera arrêté.

Dans tous les cas, que le podcast dure 2h ou 18 je le regarderai.
Graphiste 3D - Site web: http://www.studios-cad.fr/
Avatar de l’utilisateur
Mareck
 
Message(s) : 332
Inscription : 20 Déc 2013, 16:18
Localisation : Alsace

Re: Podcast Python

Message par lapineige » 01 Sep 2014, 11:08

Arrf dommage pour la dispo.

Un peu tôt non, ça t'aurait était très utile. On pars vraiment pas sur un truc technique ou avancée ;-)
Avec un micro :mrgreen:
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3716
Inscription : 25 Juin 2014, 07:06

Re: Podcast Python

Message par lapineige » 01 Sep 2014, 13:19

Personne d'autres de dispo ?
Olive ? Orgelf ? Stilobique ?

C'est pas vraiment intéressant si on est que deux ou trois. Le but c'est au moins d'avoir des questions ;)
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3716
Inscription : 25 Juin 2014, 07:06

Re: Podcast Python

Message par Olive » 01 Sep 2014, 13:29

Dispo je serai oui.
Avatar de l’utilisateur
Olive
 
Message(s) : 695
Inscription : 30 Sep 2013, 15:20
Localisation : Chaon (41)

PrécédentSuivant

Retour vers BlenderLounge

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité