Menu Fermer

Imprimante 3D – Blender, Python, Visual Studio Code et Geometry Nodes

Date de la dernière modification: 3 décembre 2025

 Geometry Nodes commentaires des vidéos et plus

A l’origine ce blog, datant du printemps 2021, sans Visual Studio Code, faisait partie de l’article Imprimante 3D – Creality Ender 3 V2 qui reste encore ma référence aujourd’hui. J’y ai cependant laissé une introduction dans la partie Blender et Python: créer des objets!

C’est fin octobre 2025 que j’ai débuté avec Visual Studio Code (donc Python) et les Geometry Nodes (donc Blender)! Il y a encore pas mal de mystères pour moi, mais je m’y retrouve déjà. Si des lecteurs ont des commentaires (erreurs, suggestions, …), je les accepte volontiers: jean-bernard@boichat.ch

Blender, Python et Visual Studio Code – Généralité

Quels outils d’IA générative utiliser

Ces outils sont essentiels ici dans ce type de recherche et d’apprentissage!

J’ai toujours apprécié Perplexity, mais Google Gemini, voire ChatGPT, sont aussi des choix puissants et ludiques avec par exemple: python blender déplacer un objet connu par son nom sur l’axe y!
Nous verrons ci-dessous avec les API de Python et Blender que les retours de questions comme 
python blender différence entre bpy.ops.mesh.primitive_cube_add et bmesh.ops.create_cube   sont parfois plus complètes en compréhension et exemple de code. Cette dernière par exemple m’a donné quelque chose de plus avec Gemini!

Les personnes familiers à la modélisation 3D sous Blender seront impressionnés par la documentation et les nombreuses références du module bpy de l’API de Blender pour Python.

On commencera par quelques liens utiles comme Le site Web de Python, voire Python Introduction,  Blender Python QuickstartPython API Overview et mon Un Tuto Blender super rapide pour impression 3D.

En passant au mode Scripting sous Blender (menu tout en haut), la Console en bas à gauche nous montre les commandes d’interface lors de création et de manipulations d’objets avec l’interface Blender classique, par exemple pour un Bevel en Edit Mode :
bpy.ops.mesh.bevel(offset=2.69618, offset_pct=0, release_confirm=True).
Magnifique! Mais le retour dans cette console offre parfois tellement de paramètres de l’API bpy qu’on a de la peine à s’y retrouver.

Le cas du Bevel en Python est un exemple classique de difficulté à définir les paramètres. On l’applique sur un cube créé avec une certaine dimension. Si la valeur de l’offset est en dehors du raisonnable, on ne va rien comprendre. Il faudra revenir en mode Edit et visionner le résultat en corrigeant ce paramètre voire le définir avec une variable Python fonction de la grandeur du cube.

Dans cette même Console en bas à gauche, il est aussi possible de copier/coller des lignes de code voir des exemples, car c’est une console terminal Python.
Noter que dans cette console la fonction print (souvent utilisée lors du développement de code) fonctionnera, ce qui n’est pas possible avec du code Python dans la fenêtre Scripting

On voit donc que l’utilisation de Python peut permettre de créer des objets où on pourra plus tard corriger des dimensions avec précision, sans devoir retoucher toute la bête en travail. En fait c’est un peu comme OpenSCAD que j’ai autrefois utilisés!

A partir d’objets créer de manière traditionnelle avec Blender, on peut aussi évidemment utiliser des scripts Python pour y ajouter des détails.
L’article BLENDER JEIA – 03 – Utiliser Python pour créer des objets est ancien (il semble vers 2016), mais donne de bonnes idées.

La composition et la création d’objets complexes en Python dépasse de très loin une simple introduction. 
Il faudra aussi y ajouter l’exportation automatique en fichier .STL utilisable par les slicers des imprimantes 3D!

Nous allons “essayer” d’expliquer comment utiliser Visual Studio Code pour développer du code Python pour Blender sous Windows et en dehors de l’outil Blender lui-même. Pour faire ce travail, j’ai utilisé la vidéo 5 Steps to setup VSCode for Blender Python (on Windows), merci à Victor Stepanov.

Blender et Python – Installation

On assume que Blender est déjà installé comme décrit dans mon Un Tuto Blender super rapide pour impression 3D.

Après son démarrage, sur la barre supérieure en haut à gauche, on voit la version, par exemple Blender 4.5.2 LTS.
Dans mon Blender et Python: créer des objets, j’avais déjà activé l’outil Scripting (bar de menu de Blender), et on y trouve la version de Python installée par défaut, 3.11.11 chez moi. C’est celle que j’utiliserai pour l’installation de Python sous Windows, nécessaire pour l’application de développement en langage Python, c’est à dire Visual Studio Code.

Si le lecteur continue le visionnement de cet article, il est conseillé de garder Blender et Python: créer des objets ouvert, car certains détails techniques  n’ont pas encore été transférés ici!

Donc après un clic sur Scripting dans le menu, nous aurons un console Python comme décrit dans le manuel de Blender Console de Blender. Il y a même une complétion automatique: on essaiera volontiers un bpy. suivi de Tab. On notera que cette complétion automatique est nettement plus professionnelle avec Visual Studio Code décrit ci-dessous.

Dans cette dernière référence (Console de Blender), il y a quelques exemples intéressants.

Installation de Python sous Windows

Sur le site Web officiel de Python, par exemple https://www.python.org/downloads/release/python-3110/, on trouvera facilement un exécutable d’installation 64bits sous Windows comme python-3.11.0-amd64.exe.
A l’exécution de ce dernier, j’ai utilisé Install Now avec l’option Add Python PATH.
J’ai laissé toutes les options et cliqué sur Next et gardant les choix.
Après installation et avec une invite de commande Windows CMD, on entre python dans la console qui nous indique que cela fonctionne avec la version 3.11.0 correcte. quit() est possible pour sortir.

Visual Studio Code  – Installation

Sur le site Web de cet IDE (Integrated Development Environment) nous trouverons Getting started with Visual Studio Code. Il n’est pas seulement dédié à Python mais aussi à d’autres langages. Comme il y a beaucoup de vidéos, c’est préférable de commencer avec la liste présentée à gauche, par exemple GET STARTED et VS Code Tutorial

On commencera donc par se rendre sur le site de Visual Studio Code et cliquerons sur le bouton noir Download for Windows.

Avec le bouton suivant Windows (10-11) nous aurons un téléchargement automatique de VSCodeUserSetup-x64-1.105.1.exe. dans notre répertoire de téléchargement sur Windows,
Nous lancerons donc ce fichier d’installation. Nous laisserons la location de l’installation, son nom et les options d’installation présentées avec en plus les 2 options d’action d’ouverture, donc toute les cases cochées avec la création de l’icône sur le bureau.

Après le lancement de Visual Studio Code nous irons à gauche avec l’icône extension (ou Ctrl-Shift-X) pour installer celle de Python avec le petit bouton bleu Install. On marquera le Open a project Python folder et cliquerons sur son bouton bleu. Un répertoire contenant déjà des exemples de code Python avec l’extension .py sera un plus! J’ai accepté le 
trust the authors of the files in this folder. et le Copilot.

Pour vérifier Visual Studio Code j’ai créé un fichier prime.py de code Python, tiré du site Web Programiz, pour identifier si un nombre est premier (voir le code sur le site: Program to check if a number is prime or not, avec la valeur 29). C’est du code Python, rien à voir avec la modélisation 3D. J’ai sauvé cet exemple dans mon répertoire Python.

Notes:
J’ai aussi installé Thonny sur mon PC Windows, un IDE pour débutant, pour jouer avec Python, mes Raspberry Pi avec mon livre et utilisé pour mes microcontrôleurs ESP avec MicroPython
Je recommande en plus d’utiliser Notepad++ pour l’édition. C’est mon éditeur texte par défaut. Il possède une jolie syntaxe colorée pour ce langage! 

En cliquant sur le fichier prime.py dans l’explorateur de Windows on pourra l’associer à notre Visual Studio Code fraîchement installé. Le code vient alors affiché dans la fenêtre centrale et le triangle de Run dans la barre du haut exécutera le code en nous montrant le résultat en dessous.

Visual Studio Code est un excellent choix pour l’apprentissage du langage Python. Dès que nous avons une erreur de syntaxe, une mauvaise instruction ou construction, voire une fausse fonction, c’est noté dans l’éditeur. On se familiarisera rapidement avec l’éditeur et ensuite avec le débogueur pour ajouter des breakpoints (points d’arrêt dans l’exécution) et avancer pas à pas dans le code en visionnant des valeurs de variables. 

Visual Studio Code  – Python pour Blender

Pour pouvoir créer des objets Blender avec le langage Python depuis  Visual Studio Code, il faudra installer fake-bpy-module avec pip install fake-bpy-module-latest (à exécuter dans la fenêtre TERMINAL en bas au milieu) et aussi l’extension Blender Development de Jacques Lucke (recherche de Blender Development sous Extension (Ctrl-Shift-X) et ensuite Install (bouton bleu et on trust!)).

J’ai aussi ajouté l’extension Extra Mesh Objects dans Blender avec le menu Edit / Preferences / Get Extensions et en cherchant Extra Mesh Objects.

Finalement on va reprendre l’exemple des cubes entassés de Blender et Python: créer des objets dont nous avons sauvegardé son fichier avec le nom blenderPy1.py et:

– Lancer Blender depuis  Visual Studio Code avec le menu View, Commande Palette (ou Ctrl-Shift-P) et Blender: Start;
– Choisir mon dernier blender.exe et continuer (Blender s’ouvre avec notre cube original);
– On retire le cube en Objet Mode avec Select et Delete;
– Avec le menu File et Open File, nous irons récupérer notre fichier 
blenderPy1.py qui viendra présenté à l’écran;
– A
vec le menu ViewCommande Palette (ou Ctrl-Shift-P) et Blender: Run Script.

Il faudra ouvrir l’instance démarrée avec Start et nous verrons la même figure de cubes entassés que nous avions généré à partir de Scripting dans Blender

L’explorateur de Visual Studio Code (Ctrl-Shift-E) permet l’accès à un répertoire de Windows conservant nos scripts Python. On pourra reprendre par exemple notre script prime.py pour continuer notre formation Python hors de l’API de Blender.

J’ai un souci dans l’éditeur avec la touche Backspace de mon clavier et je dois utiliser Shit-Backspace pour effacer un charactère à gauche.

Lorsque qu’on tape son code, par exemple bpy.ops.m nous aurons déjà une suggestion de code pour mesh, que nous accepterons. En entrant un point (.) nous aurons une autre série de choix … phénoménales. En entrant primitive_cube_add, il faudra attendre le dernier d pour obtenir toute l’information sur la fonction et la description des paramètres! Dans ce cas précis j’utilise systématiquement Google Gemini, voire ChatGPT ou Perplexity, avec Blender Python primitive_cube_add.

A suivre … c’est un bon début, mais je devrais pouvoir montrer des exemples simples et évolutifs, à partir de mon Blender et Python: créer des objets et du code ci-dessous comme l’attache_vis.py.

Le module bpy de Blender

Sur le site Web officiel de Python, par exemple https://www.python.org/downloads/release/python-3110/, on trouvera facilement un exécutable d’installation 64bits sous Windows comme python-3.11.0-amd64.exe.

A l’exécution de ce dernier, j’ai utilisé Install Now avec l’option Add Python PATH.
J’ai laissé toutes les options et cliqué sur Next et gardant les choix.
Après installation et avec une invite de commande Windows CMD, on entre python dans la console qui nous indique que cela fonctionne avec la version 3.11.0 correcte. quit() est possible pour sortir.

Le code présenté ici à plus de 4 ans d’âge, mais reste en fait vraiment simple et une bonne introduction. Il n’y a que 5 objets, dont 2 cylindres pour une opération de différence!

En retravaillant ce code, j’avais noté que les deux cylindres intérieurs, utilisés pour creuser l’espace des vis, restaient présents en répétant l’exécution du scripts. Après l’opération de DIFFERENCE on cache avec hide_set(TRUE) ces deux objets.
Avant répétition, il faut non seulement effacer tous les composants, mais aussi s’assurer qu’aucun cylindre caché reste dans la Collection (en haut à droite dans Scene Collection)!

# attache_vis.py
import bpy

cube = bpy.ops.mesh.primitive_cube_add(size=1, location=(0, 0, 0), scale=(1,1,1))
theCube = bpy.context.object
theCube.name = 'BaseCube'
bpy.ops.transform.resize(value=(20, 36, 1))

bpy.ops.mesh.primitive_cylinder_add(radius=4, depth=10, location=(-10, 10, 3.5), scale=(1,1,1))
bpy.ops.transform.rotate(value=1.57, orient_axis='X')
theCylA = bpy.context.object
theCylA.name = 'CylinderA'

bpy.ops.mesh.primitive_cylinder_add(radius=2.1, depth=10, location=(-10, 10, 3.5), scale=(1,1,1))
bpy.ops.transform.rotate(value=1.57, orient_axis='X')
theCylAint = bpy.context.object
theCylAint.name = 'CylinderAint'

bool_modifier1 = theCylA.modifiers.new(type="BOOLEAN", name="boolc1")
bool_modifier1.object = theCylAint
bool_modifier1.operation = 'DIFFERENCE'
theCylAint.hide_set(False)
bpy.ops.object.modifier_apply()

bpy.ops.mesh.primitive_cylinder_add(radius=4, depth=10, location=(-10, -10, 3.5), scale=(1,1,1))
bpy.ops.transform.rotate(value=1.57, orient_axis='X')
theCylB = bpy.context.object
theCylB.name = 'CylinderB'

bpy.ops.mesh.primitive_cylinder_add(radius=2.1, depth=10, location=(-10, -10, 3.5), scale=(1,1,1))
bpy.ops.transform.rotate(value=1.57, orient_axis='X')
theCylBint = bpy.context.object
theCylBint.name = 'CylinderBint'

bool_modifier2 = theCylB.modifiers.new(type="BOOLEAN", name="boolc2")
bool_modifier2.object = theCylBint
bool_modifier2.operation = 'DIFFERENCE'
theCylBint.hide_set(False)
bpy.ops.object.modifier_apply()

bpy.ops.object.select_all(action='SELECT')
bpy.data.objects['CylinderAint'].hide_set(True)
bpy.data.objects['CylinderBint'].hide_set(True)

On peut aussi jouer avec une seule instruction pour comprendre et tester son code, voire adapter une propriété de composant! 

Dans la PYTHON INTERACTIVE CONSOLE, tout en en bas à gauche, on peut par exemple entrer bpy.data.objects[‘CylinderAint’].hide_set(False) pour re-remplir un des cylindres où devrait passer la vis.

On est en Object Mode. Donc, dans la User Perspective, on peut cliquer sur le cylindre gauche et le bouton menu Move et voir le déplacement, par exemple sur Y (vert) et le commande présentée  bpy.ops.transform.translate(value=…!
Mais que c’est bien compliqué! C’est plus facile de modifier le code dans une des lignes de code 
bpy.ops.mesh.primitive_cylinder_add() avec de nouvelles valeurs, d’effacer tout le bazar et de relancer le script pour examiner le résultat.

Ici nos cylindres en possèdent d’autres à l’intérieur qu’on ‘DIFFERENCE’ … donc vraiment compliqué de faire une modification en fin de script.

Si on est content, on peut aussi sauvegarder le projet Blender et adapter des détails plus tard après un essai d’ impression 3D, sans revenir nécessairement au code Python.

Bien sûr que le script pourrait être adapter avec des variables Python pour la grandeur du plateau et la position relative des cylindres!

Plusieurs fenêtres Scripting

C’est pratique de charger deux scripts Python pour les tester ou copier(coller) du code.
On se déplace avec le pointeur (une croix) dans un des coins de la fenêtre Scripting pour créer une nouvelle fenêtre horizontale ou verticale en se déplaçant! Dans la barre inférieure, où se trouve le nom du fichier script, il y a un choix Close Area pour la fermer (bouton droit de la souris).

Retour au Blender classique

Lorsqu’on crée un cylindre sous Blender, on lance l’application, on efface notre Cube et avec le menu AddMeshCylinder (voir mon Un Tuto Blender super rapide pour impression 3D), on change le radius à 10 et le depth à 20. convenable pour des objets 3D. Ce sont des mm définis dans les préférences de Blender et qui seront les unités par défaut pour les fonctions du module Python bpy. Nous aurons donc un cylindre de dimension 20,20,20,

Si on regarde sous Scene Collection en haut à droite nous avons le Cylinder, qui est son nom, dans la Collection. En cliquant à gauche sur le cylindre suivi d’un Ctrl-C et Ctrl-V, un second (Cylinder.001) sera créé dans la collection. Il est à la même place!

Exercice 1 en Python:

Renommé deux cylindres existants,
agrandir un et déplacer l’autre

# exercice1_2cylindres.py
import bpy

#Récupérer les cylindres de la collection de la scène
cylindre1 = bpy.data.objects['Cylinder']
cylindre2 = bpy.data.objects['Cylinder.001']

cylindre1.name = "Cylindre1"
cylindre2.name = "Cylindre2"

#Nouvelle dimension pour le premier
obj = bpy.data.objects["Cylindre1"]
obj.dimensions = (10, 20, 30)

#Nouvelle position pour le second
obj = bpy.data.objects["Cylindre2"]
cylindre2.location = (14, 16, 0)

Exercice 2:
Créer un cube (par exemple de 2 cm) centré à l’origine. Sa dimension et son origine sont définis dans des variables Python.
Ajouter des cubes successifs collés et centrés sans espace dans la direction x et de dimension divisée par deux.
Définir une variable pour stopper la boucle while de création successive si le cube devient inférieur à une valeur déterminé (par exemple 2 mm).
Le nom des cubes est aussi défini dans une variable (par exemple CubeN).
On remarque tout de suite les erreurs de placement dans la vue User Perspective de l’Object Mode!
Pour terminer: faire passer ce code dans une fonction Python serie_de_cubes(dim, dimMin, posx, posy, posz, cubeNum)!
Variantes: positionner les cubes différemment, voire même en tournant, mais toujours correctement intégrés dans le précédent!   

Le module bmesh de Blender … en travail

bmesh (Blender mesh) est une API Python bas niveau. Il fonctionne directement sur la structure de données de la géométrie (vertexedgeface).

Créer un cube avec bmesh signifie construire manuellement la géométrie dans un objet de type BMesh, plus proche du noyau de Blender que bpy.
On peut créer des formes beaucoup plus précisément. Le cube créé ci-dessous n’est pas un objet dans la scène tant qu’il n’est pas converti vers un mesh et associé à un objet.

 

A compléter ….

Cette partie me donne un peu des sueurs froides.
J’ai essayé de créer plusieurs cubes et de leur générer un Bevel différent à chacun. Ce n’est pas facile et ce n’est pas trois lignes de code!

Donc on verra!

# exercice1_bmesh.py
import bpy
import bmesh

# Créer un nouveau mesh
mesh_data = bpy.data.meshes.new("MeshNeuf")
bm = bmesh.new()

# Créer un cube dans BMesh
bmesh.ops.create_cube(bm, size=24.0)

# Transférer dans MeshNeuf
bm.to_mesh(mesh_data)
bm.free()

# Créer un nouvel objet à partir du mesh
new_obj = bpy.data.objects.new("LeCube", mesh_data)
bpy.context.collection.objects.link(new_obj)

Blender et les Geometry Nodes … en travail

Les nœuds géométriques (Geometry Nodes) sont accessibles dans Blender dans le menu en haut à droite. Pour comprendre cette “bête” incroyable et bluffante, il faudra prendre son temps et s’accrocher! 
C’est un système visuel qui permet de créer, générer, et transformer la géométrie 3D via un réseau de nœuds interconnectés, sans modifier manuellement les maillages avec les outils traditionnels de Blender.

L’utilisateur construit une sorte de “programme” graphique en reliant les nœuds entre eux à des buts de créations de formes et de déformation. Le but ici sera de présenter des exemples ludiques, (plus ou moins) simples et concrets!

Moi-même je viens du monde C++ et Java, et j’ai eu de grosses difficultés au départ. Les Geometry Nodes de Blender ne sont pas orientés objet (POO) mais basés sur un système procédural via des graphes de nœuds.

Il y a pas mal de vidéos sur le sujet que je suis encore entrain de visionner et de trier avant d’en déposer ici plus les références et de commentaires. Il y a parfois des nœuds en relation avec des textures inutiles ici en principe pour l’impression 3D

Avant de visionner les quelques exemples donnés ici, il faudrait consulter le manuel Blender, et pourquoi pas se lancer avec les Fields avant de revenir à l’index principal sous Geometry Nodes:

Les deux suivantes, magnifiques, super bien fait et un moyen d’écouter un bon et vrai anglais, lentement avec musique d’ambiance! A pleasure! 

Ces vidéos Youtube sont souvent beaucoup trop rapides surtout si on fait le travail dans Blender en même temps. Il faut souvent stopper, noter la position et reprendre. Pour certaine vidéo: la ralentir marche bien.

Des questions me taraudent avec cette manière de travailler pour la création de petits objets 3D dont il faut reprendre après impression, avec de mini corrections de dimension ou position: faut-il rester en Blender classique, utiliser des scripts Python avec des variables contenant les positions ou les dimensions, ou alors corriger les valeurs des boîtes de nœuds des Geometry Nodes!? Je devrais pouvoir y répondre bientôt avec un “ce n’est pas forcément la meilleure option”! 

J’ai souvent travaillé avec un pied à coulisse d’une précision de 0.1 mm pour de petits objets domestiques cassés. Après un premier essai d’impression 3D, nous comprenons rapidement que juste une valeur de notre pièce doit être adaptée! Cela nécessite une grosse préparation (il y a des exemples dans les vidéos ci-dessus).

Comment bien débuter avec le Geometry Nodes

L’utilisation d’outil comme Gemini s’avère être un support incroyable pour débuter et rechercher, par exemple, des nœuds spécialisés dans la fenêtre Shift-A des Geometry Nodes de Blender.

Il n’est pas possible d’activer les Geometry Nodes dans Blender sans avoir au moins un objet dans la Collection de la Scene. Souvent on commence par utiliser notre Cube du démarrage, qui possède 8 sommets (vertices). Les vertices, des points, sont la base de travail des Geometry Nodes. Donc il me semble moins “confusant” de débuter avec un Single Vert au lieu d’un Cube! Ce ou ces dernier(s) seront toujours visibles dans la collection de la scène à droite

Donc, au démarrage de Blender, on retire notre cube venant par défaut (Object Mode, clic sur le cube et delete)! Si nous gardions ce Cube dans notre espace en Edit Mode, nous pourrions lui appliquer un Modifier Geometry Nodes et se retrouver dans la même configuration que décrite ci-dessous. 

Dans le menu d’Object Mode choisir Add, Mesh et Single Vert! Le mode passe automatiquement en Edit Mode et Vert apparaît dans la Collection de la Scene. Pour l’instant on ne s’occupera plus de ce premier objet nécessaire pour activer les Geometry Nodes.

Dans le menu supérieur de Blender, tout en haut à droite et juste à gauche de Scripting, nous cliquons sur Geometry Nodes pour ouvrir son espace de travail dédié, et ensuite le bouton New en haut de sa fenêtre.

C’est là qu’apparaisse les deux Group Input et Group Output dans la fenêtre de l’éditeur des Geometry Nodes dont on va parler.

Avec la flèche du curseur dans la fenêtre inférieure de notre plan de travail des Geometry Nodes nous entrons la touche Shift-A essentielle à la création de nœuds.

On utilisera constamment le Search et commencerons par Cube, un nœud Cube.

Ce pas pas trop facile de jouer avec cette fenêtre et ses boîtes de travail, et on s’énervera au un peu début pour déplacer correctement les boîtes et le cube dont on a donné un 10mm plus adapté pour des objets 3D à imprimer!

On va relier le bouton de relation de sortie Mesh de Cube à la boîte Group Output. J’ai effacé le Group Input inutile ici.

Voilà, on a créé un premier cube qui apparaît dans la fenêtre User Perspective de l’espace de travail traditionnel de l’Edit Mode. C’est le moment de sauver son premier projet Blender dédié au Geometry Nodes dans un répertoire tout neuf de préférence. Un export STL serait tout à fait possible pour l’importer dans Ultimaker Cura (par exemple) avant impression 3D … mais cela reste un simple cube!

Non visible sur cette image, nous avons une fenêtre “Speadsheet” où nous avons la liste de tous les points générés. Elle est juste là pour analyser les valeurs des points du résultat.

A tout moment on peut repasser dans un plan de travail Blender traditionnel en Object Mode avec le menu Layout et Geometry Nodes pour revenir. Corriger notre cube dans ces deux présentations pourraient entraîner de la confusion si on ne comprend pas vraiment ces deux modes de conception! Cependant des composants de notre objet final peuvent très bien être définis dans l’un et/ou l’autre des plans de travail. Dans l’éditeur Geometry Nodes on peut changer le Z en 20 mm pour se convaincre que cela marche.

Pour couper le lien vert entre Mesh et Geometry j’aime bien le ciseau Ctrl en tenant le bouton droit de la souris: le cube disparaîtra! Plus rien ne rentre dans le nœud Group Output, la sortie!

Un Modifier Geometry Nodes a aussi été créé dans l’objet Vert créé initialement.

Lorsque on ajoute un modificateur Geometry Nodes à un objet primitif existant comme un Cube (add Modifier, Geometry Nodes, et New dans la fenêtre Geometry Nodes) nous obtenons deux nœuds reliés entre eux : Group Input (récupérant la géométrie de l’objet créé avec le Blender “classique”, notre cube) sur lequel on a mis le modificateur, et avec Group Output (ce qui sort). Le résultat est présenté: le maillage par défaut est donc la géométrie de l’objet d’origine avec 8 points (sommets ici).

Si maintenant on coupe le lien de Group Input, il n’y a plus de cube à la sortie. Si on voulait voir un nouveau cube, il faudrait le créer avec un nœud cube ou alors une géométrie entièrement nouvelle voire complexe créé dans l’éditeur des Geometry Nodes. On y viendra! Positionner un cube et le redimensionner avec les Geometry Nodes de Blender, c’est une excellente démarche, pour les bases de flux de travail procédural.

Un de mes premiers “exercice” de compréhension! 

Le Cube vient du cube d’origine créé dans Blender et conservé. Le cône, lui, est créé dans l’espace de travail des Geometric Nodes avec Shift-A cone.  J’ai adapté Radius à 10 et Depth à 25 pour qu’il sorte du cube (sinon invisible, sauf si on passe en Viewport X-Ray).

Le Group Input c’est l’entrée, ce qui vient de l'”extérieur”, notre cube. Le noeud Join Geometry (Shift-A) permet de joindre notre cube avec les maillages créés dans l’espace des Geometric Nodes.

Il n’y a pas ici de positionnement défini, mais on pourra jouer avec le bouton gauche de la souris et les < > de Depth, dans le nœud Cone, pour voir le cône se déplacer et/ou s’agrandir dans la fenêtre supérieure!

Un noeud Set Position à la sortie de Group Input (utiliser Y et Z) et un autre à celui du Cone (utiliser Y) permettrait de poser le cône sur le cube. On utilisera l’entrée (socket: prise sur les noeuds) Geometry des deux Set Position.

Des noeuds comme Cone, Cube, ou encore Cylinder, et aussi Set Position ou Transform Geometry, possèdent des prises d’entrées pour d’autres noeuds comme Vector ou Add où il est possible de spécifier autrement des valeurs et opérations arithmétiques. Je devrais montrer quelques exemples.

Dans mon article Imprimante 3D – Creality Ender 3 V2 j’explique l’utilisation d’un pied à coulisse. Cela me permet de définir avec précision les différentes dimensions de mes objets 3D. Dans l’exemple ci-dessus le cube est défini hors des Geometry Nodes. En cas de soucis, il faudrait donc retourner en Objet ou Edit Mode, ou alors intégrer le noeud Transform Geometry à la sortie de Group Input et jouer avec le Scale (voire la Rotation dans d’autres situations). Ce sera sans doute tout un art d’y ajouter des noeuds comme Vector ou Add, sans que la sauce tourne en spaghetti.

En travail et à suivre:

 Une excellente manière de débuter avec les Geometry Nodes, c’est d’instancier plusieurs cubes et de varier leurs positions et leurs dimensions (Accumulation Field est un exemple). Étant moi-même du monde POO (programmation orientée objet) c’est le bon moment de passer aux noeuds d’instances de points pour ajouter des maillages plusieurs fois sans les dupliquer! Avec les Geometry Nodes il n’y a pas de moyens de créer des boucles et d’utiliser des variables. C’est impossible d’exécuter un bloc de code plusieurs fois en modifiant des variables pour définir par exemple la position ou la dimension de cubes successifs enchaînés! 

Dans mon article Imprimante 3D – Creality Ender 3 V2 sous Comparaison des logiciels CAD il y a un pièce de tenue de fenêtre qui pourrait s’avérer être un excellent exercice! Cette pièce mesurée avec un pied à coulisse doit être vraiment précise et solide (densité dans le slicer)!

En Object Mode, c’est facile!

Nous avons 9 cubes, dont un avec rotation.
Les dimensions sont reprises de nos valeurs mesurées avec un pied à coulisse.
C’est facile de corriger avec les entrées des valeurs à droite en vérifiant que les pièces collent bien. La position globale n’est pas importante: c’est le logiciel du slicer de l’imprimante 3D qui fera le travail! 

Pas trop facile avec les Geometry Nodes.

Il nous faut deux Vectors, c’est plus pratique, pour les valeurs de dimensions, un Cube et un Transform Geometry.

J’ai ensuite copié ces 4 noeuds et je n’ai seulement que deux morceaux sur les 9. C’est relativement facile d’adapter les valeurs!

Conclusion pour ce cas précis: c’est beaucoup plus facile en Object Mode!

En mode Blender Edit Object, il y a des fonctions ultra-simples comme Extrude, Inset, Bevel et autres Smooth qui sont très utiles pour des objets à but d’impression. Donc il faut y réfléchir avant de construire ces choses, même belles, avec les Geometry Nodes.

Donc peut-être retour à mon
Un Tuto Blender super rapide pour impression 3D.