Outils pour utilisateurs

Outils du site


issue156:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue156:python [2020/04/29 07:25] d52frissue156:python [2020/04/29 14:46] (Version actuelle) andre_domenech
Ligne 3: Ligne 3:
 If you aren't aware of Blender, I'll give you a quick introduction as to what it is, what it does, and how to do something simple, before we get into the programming aspects. I will say from the start, I am just learning how to do things with Blender from Python (and I'm not really that good with Blender by itself), so bear with me.** If you aren't aware of Blender, I'll give you a quick introduction as to what it is, what it does, and how to do something simple, before we get into the programming aspects. I will say from the start, I am just learning how to do things with Blender from Python (and I'm not really that good with Blender by itself), so bear with me.**
  
-Alors que je m'impose le confinement, je me suis à nouveau retrouvé devant la question de ce que je vous présenterai ce mois-ci. Je suis quasi certain que je ne répéterai pas ici ce j'ai déjà présenté. Ce mois-ci, nous explorerons Blender et ses possibilités de scripts en Python.+Alors que je m'impose le confinement, je me suis à nouveau retrouvé devant la question de ce que je vous présenterai ce mois-ci. Je suis quasi certain que je ne répéterai pas ici ce que j'ai déjà présenté. Ce mois-ci, nous explorerons Blender et ses possibilités de scripts en Python.
  
-Si vous ne connaissez pas Blender, je vous présenterai succinctement ce qu'il en est, à quoi il sert, et comment faire quelque chose de simple, avant de rentrer dans les aspects de programmation. Pour commencer, je dirai que j'apprends juste comment faire des choses avec du Python dans Blender (et, pour ma part, je ne suis pas vraiment à l'aise avec Blender) ; aussi, soyez indulgents. +Si vous ne connaissez pas Blender, je vous présenterai succinctement ce dont il s'agit, à quoi il sert, et comment faire quelque chose de simple, avant de rentrer dans les aspects de programmation. Pour commencer, je dirai que j'apprends juste comment faire des choses avec du Python dans Blender (et, pour ma part, je ne suis pas vraiment à l'aise avec Blender) ; aussi, soyez indulgents. 
  
 **From their website (blender.org), "Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing and motion tracking, video editing, and 2D animation pipeline." **From their website (blender.org), "Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing and motion tracking, video editing, and 2D animation pipeline."
Ligne 16: Ligne 16:
 https://www.blender.org/download/** https://www.blender.org/download/**
  
-D'après leur site Web (blender.org), « Blender est une suite de création 3D, Open Source et gratuite. Elle supporte l'ensemble des activités de la 3D modélisation, accessoirisation, animation, simulation, rendu, composition et suivi du mouvement, montage vidéo et pipeline d'animation 2D. »+D'après leur site Web (blender.org), « Blender est une suite de création 3D, Open Source et gratuite. Elle supporte l'ensemble des activités de la 3D modélisation, accessoirisation, animation, simulation, rendu, composition et suivi du mouvement, montage vidéo et pipeline d'animation 2D. »
  
-Je suis sûr que vous avez déjà entendu parlé de « Big Buck Bunny », mais avez-vous entendu parler de l'Agent 327 ?+Je suis sûr que vous avez déjà entendu parler de « Big Buck Bunny », mais avez-vous entendu parler de l'Agent 327 ?
  
 https://www.youtube.com/watch?v=mN0zPOpADL4 https://www.youtube.com/watch?v=mN0zPOpADL4
Ligne 27: Ligne 27:
 https://docs.blender.org/api/current/change_log.html** https://docs.blender.org/api/current/change_log.html**
  
-Autre chose, avant de commencer. Blender a toujours fait des modifications et les tutoriels disponibles  sont rarement à jour. En fait, beaucoup de ces tutoriels (et beaucoup d'ouvrages) sont écrits et publiés sur la base d'une présentation ou d'une pré-version qui est modifiée plusieurs fois avant la vraie publication de cette version. Un bon exemple est quand un tutoriel (pour Blender 2.8.x) fait référence à des modifications dans les préférences en y accédant par le menu Fichier Préférences utilisateur. Ça n'existe plus. C'est en fait situé dans Édition Préférences. Je suis ici démuni pour vous indiquer un bon endroit où vous trouveriez touts les changements comme celui-là. De nombreux appels d'API ont changé aussi ; ainsi, vous devriez garder sous le coude la documentation sur les API quand vous essayez de vous former sur ce sujet à partir d'un tutoriel ou d'un livre. La référence sur les API de Blender 2.8.2a est située à : https://docs.blender.org/api/. Par chance, La documentation sur les API a un enregistrement des modifications depuis la précédente version (2.7.9) sur https://docs.blender.org/api/current/change_log.html+Autre chose, avant de commencer. Blender a toujours fait des modifications et les tutoriels disponibles sont rarement à jour. En fait, beaucoup de ces tutoriels (et beaucoup d'ouvrages) sont écrits et publiés sur la base d'une présentation ou d'une pré-version qui est modifiée plusieurs fois avant la vraie publication de cette version. Un bon exemple est quand un tutoriel (pour Blender 2.8.x) fait référence à des modifications dans les Préférences en y accédant par le menu Fichier Préférences utilisateur. Ça n'existe plus. C'est en fait situé dans Édition Préférences. Je suis ici démuni pour vous indiquer un bon endroit où vous trouveriez tous les changements comme celui-là. De nombreux appels d'API ont changé aussi ; ainsi, vous devriez garder sous le coude la documentation sur les API quand vous essayez de vous former sur ce sujet à partir d'un tutoriel ou d'un livre. La référence sur les API de Blender 2.8.2a est située à : https://docs.blender.org/api/. Par chance, la documentation sur les API a un enregistrement des modifications depuis la précédente version (la 2.7.9) sur https://docs.blender.org/api/current/change_log.html
  
 **Now, on with the fun! **Now, on with the fun!
Ligne 43: Ligne 43:
 Maintenant, amusons-nous ! Maintenant, amusons-nous !
  
-Téléchargez Blender et extrayez-le dans le dossier convenable puis lancez-le avec une commande dans le terminal :+Téléchargez Blender et extrayez-le dans le dossier convenablepuis lancez-le avec une commande dans le terminal :
  
 $ ./blender $ ./blender
Ligne 51: Ligne 51:
 C'est le « nouveau projet » par défaut, et il contient trois objets : un cube, une caméra et un éclairage. C'est le « nouveau projet » par défaut, et il contient trois objets : un cube, une caméra et un éclairage.
  
-Je vous dire, maintenant, que Blender N'est PAS quelque chose que vous pouvez apprendre en un jour ou une semaine. Cependant, si vous voulez vraiment l'apprendre, en une semaine, avec les bons tutoriels (et ceci N'en est PAS un), vous pouvez le maîtriser et devenir efficace. Vous aurez TOUJOURS besoin d'avoir votre clavier et votre souris sous la main, car Blender utilise les deux quelque soit l'action. Nous nous lancerons dans l'aspect programmation dans quelques minutes. Pour le moment, faisons quelque chose de la scène de notre Blender (en bas à gauche). +Je dois vous dire, tout de suite, que Blender N'est PAS quelque chose que vous pouvez apprendre en un jour ou une semaine. Cependant, si vous voulez vraiment l'apprendre, en une semaine, avec les bons tutoriels (et ceci n'en est PAS un), vous pouvez le maîtriser et devenir efficace. Vous aurez TOUJOURS besoin d'avoir votre clavier et votre souris sous la main, car Blender utilise les deux quelle que soit l'action. Nous nous lancerons dans l'aspect programmation dans quelques minutes. Pour le moment, faisons quelque chose de notre scène Blender (en bas à gauche). 
  
 **I took a screenshot of Blender, opened it into Inkscape, and labeled the camera and light for you (I think the cube is fairly obvious), and showed the three axes for you in order to help you understand the ways things will move. **I took a screenshot of Blender, opened it into Inkscape, and labeled the camera and light for you (I think the cube is fairly obvious), and showed the three axes for you in order to help you understand the ways things will move.
Ligne 59: Ligne 59:
 See that little circle with an “X” and a dot in the cube? That’s the 3D cursor. This is the origin of all the objects that we put into our blender scene. Even though it doesn’t look like it, it is at the intersection of the Green and Red layout lines, and the origin is in the center of the cube. That means that only the “top” half of the cube is above the imaginary plane which is the grid that is shown on the layout screen.** See that little circle with an “X” and a dot in the cube? That’s the 3D cursor. This is the origin of all the objects that we put into our blender scene. Even though it doesn’t look like it, it is at the intersection of the Green and Red layout lines, and the origin is in the center of the cube. That means that only the “top” half of the cube is above the imaginary plane which is the grid that is shown on the layout screen.**
  
-J'ai pris une copie d'écran de Blender, l'ai ouvert dans Inkscape et j'ai étiqueté la caméra et l'éclairage pour vous (j'ai trouvé que le cube était vraiment évident) et je vous ai montré les trois axes de façon à vous aider à comprendre comment bougeront les choses.+J'ai pris une copie d'écran de Blender, l'ai ouvert dans Inkscape et j'ai étiqueté la caméra et l'éclairage pour vous (j'ai trouvé que le cube était vraiment évident) et je vous ai montré les trois axes de façon à vous aider à comprendre comment les choses se déplaceront.
  
 Si vous regardez très PRÉCISÉMENT le cube, qui est notre objet par défaut au démarrage de Blender, vous verrez quelque chose d'intéressant... Si vous regardez très PRÉCISÉMENT le cube, qui est notre objet par défaut au démarrage de Blender, vous verrez quelque chose d'intéressant...
Ligne 75: Ligne 75:
 LARGE DISCLAIMER: While I've been a user off and on of Blender for many years and a Python programmer for almost 15 years, until I started working on this month's article, I've never tried to do anything that mixed the two. You are learning what I am learning almost in real time, but without the pain.** LARGE DISCLAIMER: While I've been a user off and on of Blender for many years and a Python programmer for almost 15 years, until I started working on this month's article, I've never tried to do anything that mixed the two. You are learning what I am learning almost in real time, but without the pain.**
  
-Effectuons un peu de codage...+Effectuons un peu de codage
  
-Sur votre écran, passez sur l'onglet Fenêtre de script, qui devrait être proche du centre de l'écran en haut. Le menu de Blender pour la modification est organisé un peu différemment de ce à quoi vous vous attendriez.+Sur votre écran, passez sur l'onglet Fenêtre de script, qui devrait être proche du centre de l'écran en haut. Vous devriez voir quelque chose qui ressemble à l'image en bas à droite.
  
-Normalement, vous attendez à Fichier Nouveau, Fichier Ouvrir et Fichier Enregistrer les options, mais ceux-ci sont situés sous « Texte ».+L'éditeur (en haut à droite) se trouve près du centre de l'écran. Le menu de Blender pour la modification est organisé un peu différemment de ce à quoi vous vous attendriez. 
 + 
 +Normalement, vous attendez à Fichier Nouveau, Fichier Ouvrir et Fichier Enregistrer les options, mais ceux-ci sont situés sous « Texte ».
  
 GRAND AVERTISSEMENT : Bien que je sois un utilisateur intermittent de Blender depuis des années et un programmeur en Python depuis presque 15 ans, avant que je commence à travailler sur cet article, je n'avais jamais essayé de faire quelque chose qui mixe les deux. Vous apprenez ce que j'apprends en quasi temps réel, mais sans les difficultés. GRAND AVERTISSEMENT : Bien que je sois un utilisateur intermittent de Blender depuis des années et un programmeur en Python depuis presque 15 ans, avant que je commence à travailler sur cet article, je n'avais jamais essayé de faire quelque chose qui mixe les deux. Vous apprenez ce que j'apprends en quasi temps réel, mais sans les difficultés.
Ligne 96: Ligne 98:
 Nous commencerons notre premier programme. J'ai trouvé quelques petits programmes pour Blender sur : https://medium.com/@behreajj/creative-coding-in-blender-a-primer-53e79ff71e.  Nous commencerons notre premier programme. J'ai trouvé quelques petits programmes pour Blender sur : https://medium.com/@behreajj/creative-coding-in-blender-a-primer-53e79ff71e. 
  
-Cependant, du fait du chagement dans les API depuis que ça a été écrit, quand j'ai essayé de les faire tourner, il a refusé ; aussi, je l'ai transformé en une version plus simple.+Cependant, du fait du changement dans les API depuis que ça a été écrit, quand j'ai essayé de les faire tourner, il a refusé ; aussi, je l'ai transformé en une version plus simple.
  
-Utilisez Texte Nouveau pour que l'éditeur vous permette de saisir notre code. Voici le programme lui-même...+Utilisez Texte Nouveau pour que l'éditeur vous permette de saisir notre code. Voici le programme lui-même :
  
 import bpy import bpy
Ligne 114: Ligne 116:
 Next, we’ll create a single cube (yes, I know we just deleted one, but this shows how to create a new object) and set its location. Notice that we set the cube at Z axis of 1, so it’s above the “floor”, which in this case, is imaginary, but you can create one later on if you want (see above).** Next, we’ll create a single cube (yes, I know we just deleted one, but this shows how to create a new object) and set its location. Notice that we set the cube at Z axis of 1, so it’s above the “floor”, which in this case, is imaginary, but you can create one later on if you want (see above).**
  
-Nous avons besoin de la coder de cette façon car nous devons effacer un par un chacun des objets existants. Il n'y a pas de commande « effacer tous les objets » disponible par défaut. La commande bpy.data.objects nous fournira une liste de tous les objets, et nous pouvons la parcourir pour enlever ou supprimer, un par un, chacun des objets.+Nous avons besoin de la coder de cette façon car nous devons effacer un par un chacun des objets existants. Il n'y a pas de commande « effacer tous les objets » disponible par défaut. La commande bpy.data.objects nous fournira une « liste » de tous les objets, et nous pouvons la parcourir pour enlever ou supprimer, un par un, chacun des objets.
  
 Ensuite, nous définirons deux variables, la première pour la taille de l'objet et l'autre pour la taille du « monde » que nous créerons. Ensuite, nous définirons deux variables, la première pour la taille de l'objet et l'autre pour la taille du « monde » que nous créerons.
Ligne 138: Ligne 140:
 C'est plutôt sans intérêt ; aussi, je ne le montre pas ici, mais c'est important de montrer comment créer un objet à partir du code. C'est plutôt sans intérêt ; aussi, je ne le montre pas ici, mais c'est important de montrer comment créer un objet à partir du code.
  
-Maintenant, démarrons un nouveau script pour quelque chose de beaucoup plus intéressant... +Maintenant, démarrons un nouveau script pour quelque chose de beaucoup plus intéressant.
 Nous l'appelerons test2.py. Nous l'appelerons test2.py.
  
-Nous commencerons par importer la bibliothèque et utiliserons la fonction clear_scene que nous avons créé dans test1.py (voir page suivante, en haut à gauche). +Nous commencerons par importer la bibliothèque et utiliserons la fonction clear_scene que nous avons créée dans test1.py (voir page suivante, en haut à gauche). 
  
 **Now we need to define a number of variables for our program. This will include the extents (size of our “world”), the count of cubes that we will create (on each layer), the spacing between each cube, and the size of each cube. The comments within the original code should be enough to help you understand what is happening. **Now we need to define a number of variables for our program. This will include the extents (size of our “world”), the count of cubes that we will create (on each layer), the spacing between each cube, and the size of each cube. The comments within the original code should be enough to help you understand what is happening.
Ligne 210: Ligne 211:
 Shown right is what the result of test2.py looks like when rendered.** Shown right is what the result of test2.py looks like when rendered.**
  
-Le reste de notre programme sera comme la fin de test1.py, dans lequel nous créons une lampe et une caméra dans la scène (page suivante).+Le reste de notre programme sera comme la fin de test1.py, parce que nous créons une lampe et une caméra dans la scène (page suivante).
  
-Maintenant, quand nous lançons notre programme, ça prend un peu de temps. Sur ma machine, ça dure environ une minute et demi. Rien ne se passe sur l'écran de Blender, mais, si vous regardez la fenêtre du terminal, vous verrez la sortie des déclarations print qui montrent que quelque chose se passe vraiment. Souvenez-vous que nous créons 1000 cubes (10 x 10 x 10) ainsi que l'éclairage et la caméra.+Quand nous lançons notre programme, ça prend un peu de temps. Sur ma machine, ça dure environ une minute et demi. Rien ne se passe sur l'écran de Blender, mais, si vous regardez la fenêtre du terminal, vous verrez la sortie des déclarations print qui montrent que quelque chose se passe vraiment. Souvenez-vous que nous créons 1 000 cubes (10 x 10 x 10) ainsi que l'éclairage et la caméra.
  
-Ci-dessous, le résultat de test2.py est présenté tel qu'il est rendu.+À droite, le résultat de test2.py est présenté tel qu'il est rendu.
  
 **As always, I have uploaded these two programs onto pastebin… **As always, I have uploaded these two programs onto pastebin…
Ligne 225: Ligne 226:
 Until next month; stay safe, healthy, positive and creative!** Until next month; stay safe, healthy, positive and creative!**
  
-Comme toujours, j'ai téléversé ces deux programmes sur pastebin...+Comme toujours, j'ai téléversé ces deux programmes sur pastebin :
  
 Test1.py Test1.py
Ligne 240: Ligne 241:
 Now we’ll create a lamp and a camera for the scene...** Now we’ll create a lamp and a camera for the scene...**
  
-Ceci crée un cube à l'emplacement 0, 0 et 1 unité au dessus de la surface imaginaire du « sol ».+Ceci crée un cube à l'emplacement 0, 0 et 1 unité au-dessus de la surface imaginaire du « sol ».
  
 Maintenant, nous créons une lampe et une caméra pour la scène... Maintenant, nous créons une lampe et une caméra pour la scène...
  
issue156/python.1588137938.txt.gz · Dernière modification : 2020/04/29 07:25 de d52fr