Blender 2.8 Superpuissances de script Python pour les non-programmeurs
Créer des rendus, des jeux et des animations 3d est toujours incroyablement excitant ! Eh bien, sauf quand cela devient difficile ou fastidieux. Si vous utilisez Blender ou toute autre application 3D depuis un moment, vous vous êtes retrouvé à parcourir les mêmes tâches encore et encore et à un moment donné à penser: « J’aimerais vraiment que Blender fasse ça pour moi ».
Grâce au script, ça peut ! De plus, Python peut créer de nouvelles fonctionnalités amusantes qui ne sont même pas possibles en cliquant sur l’interface.
Si vous êtes comme moi et que vous n’avez pas eu de formation en informatique, la programmation peut sembler un mot de quatre lettres sauf avec onze lettres (2,75 fois plus mauvais!). C’est comme un langage secret que seules les personnes intelligentes connaissent, qui lisent probablement toujours la valeur nutritive, construisent des moteurs de fusée pour le plaisir ou ont un doctorat en mathématiques qui n’utilise même pas de chiffres.
Ce n’est heureusement pas du tout le cas. La vérité est que si vous pouvez utiliser Ctrl + C et Ctrl + V pour copier et coller, vous pouvez commencer à créer vos propres scripts Python Blender tout de suite.
Habituez-vous à voir le code
Thérapie d’exposition. Désensibilisation progressive. Appelez-le comme vous voulez, mais la meilleure façon de normaliser quelque chose qui semble bizarre au départ est de le voir assez souvent dans le bon contexte.
Chaque action que vous effectuez dans l’interface de Blender est exécutée via des commandes Python. Vous pouvez vérifier cela par vous-même en basculant votre chronologie dans l’Éditeur d’informations et en voyant ce qu’elle crache lorsque vous vaquez à votre travail normal.
L’éditeur d’informations peut être un peu un feu d’artifice, mais il y a quelque chose à propos des lignes de commande et autres qui pourrait être une hérésie de programmation, mais me mettre à l’aise au démarrage – la plupart de ce que vous voyez est là au cas où vous en auriez besoin et 98% du temps, vous n’en aurez pas besoin. Ainsi, lorsque vous faites quelque chose de simple comme déplacer le cube et que cela vous donne deux ou trois lignes de code complètes, vous pouvez en ignorer la plupart. La partie importante est juste au début:
bpy.ops.transform.translate(value = (0.5, 0, 0))
Vous savez déjà que le nom pour déplacer quelque chose s’appelle ‘traduire’, donc les valeurs qui suivent sont celles de la traduction de votre objet sur les axes X, Y et Z respectivement. Tout ce qui précède ‘translate’ est l’endroit où cette commande se trouve dans le code de Blender. C’est comme si Blender était un menu imbriqué géant et que vous aviez sélectionné Blender Python – > Operations ->Transform -> Translate.
Il y a neuf sections principales de Blender Python (bpy). Vous n’avez pas besoin de les mémoriser, mais en reconnaître certains peut vous aider à comprendre comment Blender fonctionne sous le capot.
- bpy.app – Informations sur Blender lui-même qui ne changent pas pendant l’exécution.
- bpy.listes contextuelles en lecture seule de ce qui est actuellement actif dans Blender.
- bpy.données – Toutes les données internes de Blender, telles que les objets.
- bpy.msgbus – Signifie « bus de messages » et est utilisé pour notifier Blender de certaines modifications. Pas quelque chose dont nous devons nous inquiéter.
- bpy.ops – Toutes les opérations que vous pouvez effectuer dans Blender, de la modélisation à l’ajout de fichiers au rendu.
- bpy.path – Fonctions qui traitent des chemins de fichiers.
- bpy.props – Les différentes propriétés utilisées par Blender. Vous l’utiliseriez pour dire à Blender si une entrée doit être un nombre ou une couleur.
- bpy.types – Tous les types de choses qui existent dans Blender, des modificateurs aux textures en passant par les lampes et bien plus encore.
- bpy.utils – Fonctions utilitaires qui ne sont que pour Blender mais ne traitent pas les données internes.
Si vous êtes curieux, voici la documentation de l’API pour Blender 2.8 et pour toutes les versions précédentes.
Pendant que vous travaillez, habituez-vous à voir où se trouvent vos outils préférés dans le code. Vous n’avez pas besoin de tout comprendre à ce stade – habituez-vous simplement à ce à quoi cela ressemble!
La console Python de puissance
Une fois que vous êtes prêt pour l’étape suivante, rendez-vous sur l’onglet Espace de travail de script. Vous trouverez l’éditeur d’informations désormais familier en bas à gauche. Juste au-dessus se trouve la console Python, où vous pouvez coller des commandes et faire bouger les choses. Essayez ceci: sélectionnez une ligne dans l’éditeur d’informations, appuyez sur Ctrl + C pour la copier, puis utilisez Ctrl + V pour la coller dans la console. Appuyez sur Entrée, et vous verrez exactement la même action se reproduire!
Maintenant, essayez ceci: faites pivoter, mettez à l’échelle et déplacez quelque chose, ou effectuez trois autres actions d’affilée. Copiez les trois depuis l’éditeur d’informations et collez-les dans la console. Maintenant, vous venez de faire trois choses à la fois! Il n’y a pas de limite à cela, vous pouvez donc faire des centaines de choses à la fois de cette façon si vous le souhaitez. Même si vous n’allez pas plus loin dans le codage, c’est une excellente astuce à garder dans votre poche arrière.
Enregistrer des commandes avec l’éditeur de texte
Parcourir un tas de commandes et copier /coller tout le temps est en soi assez fastidieux si vous le faites beaucoup! Gagnons du temps et rendons notre multitâche encore plus efficace en utilisant l’éditeur de texte de Blender.
Créez un nouveau fichier texte et copiez et collez trois actions différentes ou plus de l’éditeur d’informations dans l’éditeur de texte. Je vais commencer par ajouter un cube:
bpy.ops.mesh.primitive_cube_add(size=2, view_align=False, enter_editmode=False, location=(0, 0, 0))
Ensuite, je vais faire pivoter le cube le long de l’axe Z:
bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, False, True), mirror=True, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)
Yikes, c’est beaucoup de code pour quelque chose de si simple! Si cela ne vous dérange pas, continuez et gardez-le. Si vous le trouvez intimidant, essayez de tout supprimer sauf la valeur et l’axe orienté afin qu’il se lise plus facilement. Le reste supposera simplement les valeurs par défaut.
bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z')
Enfin, ajoutons un modificateur de biseau:
bpy.ops.object.modifier_add(type='BEVEL')
La seule chose supplémentaire que vous devrez faire pour que le script s’exécute est de taper:
import.bpy
En haut du fichier, afin qu’il puisse lire Blender Python. Il est également utile d’activer les trois boutons pour les numéros de ligne, l’habillage de texte et la coloration syntaxique dans l’en-tête de l’éditeur de texte.
Voilà, vous avez maintenant un script ! Vous pouvez maintenant faire trois choses très importantes à la fois en cliquant sur Exécuter le script dans l’en-tête de l’éditeur de texte. Si vous souhaitez l’enregistrer pour plus tard ou l’utiliser dans un autre fichier, allez dans Text-> Enregistrer sous et enregistrez-le en tant que fichier Python .py.
Si vous avez essayé différentes commandes que moi et que votre script ne fonctionne pas comme prévu, c’est probablement en raison du contexte – quel objet est sélectionné ou quel éditeur est actif. Vous pouvez sélectionner ou désélectionner des objets dans Blender 2.8 en définissant sa propriété de sélection sur True ou False:
bpy.data.objects.select_set(state=True)
Toutes les commandes de saisie semi-automatique de grêle
Certaines commandes de Blender ne peuvent être effectuées que via du code et ne se trouvent pas dans l’interface. De plus, d’autres choses qui changent dans l’interface (comme le nettoyage de la chronologie) ne vous donnent pas toujours quelque chose dans l’éditeur d’informations que vous pouvez copier et coller.
Vous pouvez toujours utiliser Google ou les documents de l’API Blender pour vous aider à trouver la bonne commande pour faire ce dont vous avez besoin, mais il est souvent plus facile de la trouver en utilisant la saisie semi-automatique. Si vous commencez à taper une adresse dans la console Python, vous pouvez appuyer sur Ctrl + Espace et Blender vous montrera tous les moyens disponibles pour compléter ce que vous avez écrit. C’est un excellent moyen de naviguer dans la base de code et de découvrir de nouvelles fonctionnalités.
L’éditeur de texte dispose également d’une fonction de saisie semi-automatique Ctrl + Espace, mais cela ne fonctionne pas de la même manière et n’est généralement pas très utile. Si c’est quelque chose que vous utiliseriez souvent, je vous recommande de saisir l’addon de saisie semi-automatique du code de Jacques Lucke qui vous permettra de travailler beaucoup plus rapidement.
Modèles formidables
Si vous souhaitez transformer votre script en un addon approprié accessible via un bouton de l’interface ou un menu, les modèles intégrés de Blender sont un excellent point de départ. Il peut y avoir beaucoup à retenir pour savoir comment fournir les informations visibles dans les préférences de l’utilisateur ou comment enregistrer l’addon afin qu’il s’affiche correctement, les modèles sont donc une excellente chose à consulter (ou à copier-coller) si vous êtes bloqué.
Apprendre réellement Python
Si vous avez aimé créer vos propres scripts mais que vous vous sentez un peu déçu par leur manque de puissance (j’ai fait de grandes promesses au début!), alors il est temps d’en savoir plus sur Python et la programmation en général. Des concepts tels que les variables, les boucles et les fonctions sont essentiels pour créer quelque chose de vraiment nouveau ou puissant. Un peu de connaissances peut aller très loin ici, donc cela vaut vraiment la peine de faire un effort supplémentaire. Je recommande de creuser dans Python sur l’un des sites suivants. Nous ne sommes affiliés en aucune façon, ils font juste du bon travail.
- Cabane dans les arbres de l’équipe
- Académie du code
- Camp de données
- Apprendre Python
Envoyer de l’aide!
Inévitablement, vous serez coincé au milieu de la construction de vos propres scripts et add-ons. Cela arrive aux meilleurs d’entre nous! Voici les endroits où vous pouvez aller pour poser des questions sur le codage dans Blender:
- Blender StackExchange
- Blender DevTalk
Vous pouvez également en savoir plus en regardant ces cours sur CG Cookie:
- Introduction aux scripts Python dans Blender
- Script avec des fonctions de gestionnaire Python dans Blender
- Script d’une interface utilisateur de plate-forme personnalisée dans Blender