Matériaux, éclairage et rendu dans Blender
Vous travaillez dans le Blender de l'utilisateur via la connexion BlenderLab. La capture de la vue 3D et le rendu final sont deux choses différentes : la capture montre le mode d'affichage de la vue, tandis que le rendu utilise le moteur de rendu, les lumières et le monde. La plupart des problèmes du type « ça semblait bien mais le rendu est faux » viennent de là.
Votre connexion Blender
Vous travaillez via BlenderLab, le serveur officiel Blender Lab ; ses outils sont
blenderlab_… :
- Ce qui se trouve dans la scène :
get_objects_summary; un objet en détail :get_object_detail_summary(parname). Le fichier, sauvegardé ou non, et son chemin :get_blendfile_summary_path_info. - Exécuter du Python :
execute_blender_code. Rien ne persiste entre les appels (portez vos aides dans chaque script) ; ce que le script imprime est renvoyé, et un dictionnaire assigné àresultest renvoyé comme données. Son garde-fou refuse quelques opérateurs (quitter Blender, réinitialiser aux paramètres d'usine). - Voir la vue 3D :
get_screenshot_of_area_as_imageavecarea_ui_type: "VIEW_3D"(la fenêtre entière :get_screenshot_of_window_as_image) ; la pointer vers un objet :jump_to_view3d_object_by_name. - Consulter l'API Python :
get_python_api_docs(un identifiant tel quebpy.types.BevelModifier),search_api_docs; le manuel :search_manual_docs. - Rendu rapide :
render_thumbnail_to_path,render_viewport_to_path; l'image va dans le dossier temporaire de Blender et le résultat donne le chemin réel. - Export : code (
bpy.ops.export_scene.gltf,bpy.ops.export_scene.fbx). - Bibliothèques d'actifs et générateurs 3D : aucun. Construisez l'objet, ou demandez à l'utilisateur un fichier à importer.
Si ces outils ne sont pas disponibles, arrêtez-vous et dites-le : l'utilisateur doit installer la connexion BlenderLab (Outils → Connexions), la donner à cet agent, et avoir Blender ouvert avec le serveur du module complémentaire démarré. Ne décrivez pas le travail comme fait si vous n'avez pas pu le faire.
Ordre de travail
- Inspecter : l'outil de scène ; quels objets, lesquels ont déjà des matériaux, y a-t-il une
caméra, une lumière, un monde ? Lisez
bpy.app.version_stringet le moteur de rendu actuel. - Matériaux, un par surface distincte, nommés pour ce qu'ils sont (
Oak_Wood,Brushed_Steel), réutilisés entre les objets. - Lumière et monde avant d'évaluer un matériau : un matériau ne peut pas être évalué dans l'obscurité.
- Caméra : cadrée sur le sujet, distance focale raisonnable.
- Rendu test petit (25-50 % de résolution, peu d'échantillons), regardez-le, corrigez.
- Rendu final dans un fichier, et rapportez le chemin, le moteur, la résolution et le temps.
Le code pour chaque étape se trouve dans references/shading-and-render.md. Ouvrez-le avant d'écrire le premier script.
Matériaux : ce qui se passe mal
- Couleur placée au mauvais endroit.
material.diffuse_coloretobject.colorsont des couleurs d'affichage dans la vue 3D uniquement : elles ne rendent pas. La couleur qui rend est l'entrée Base Color du nœud Principled BSDF. Définissez les deux si vous voulez que la vue en mode solide corresponde. - Noms d'entrées modifiés dans Blender 4.0.
Transmissionest devenuTransmission Weight,Emissionest devenuEmission Color,Specularest devenuSpecular IOR Level,Clearcoatest devenuCoat Weight,Subsurfaceest devenuSubsurface Weight. Recherchez une entrée par son nom et vérifiez qu'elle existe avant de la définir ; utilisez l'outil API de votre connexion en cas de doute. - Matériau créé mais jamais assigné. Ajoutez-le à
obj.data.materials; pour différents matériaux sur des parties d'un même maillage, assignezpolygon.material_index. - Trouvez le nœud par son type, pas par son nom. Le nœud s'appelle « Principled BSDF » uniquement
dans une interface en anglais. Utilisez
next(n for n in nodes if n.type == 'BSDF_PRINCIPLED').
| Surface | Réglages Principled BSDF |
|---|---|
| Peint, plastique | Base Color ; Roughness 0.3-0.6 ; Metallic 0 |
| Métal | Metallic 1.0 ; Base Color = couleur du métal ; Roughness 0.15-0.5 |
| Verre | Transmission Weight 1.0 ; Roughness 0-0.05 ; IOR 1.45 ; nécessite un monde ou des lumières pour avoir quelque chose à réfracter |
| Lumineux | Emission Color + Emission Strength (1-20) |
| Caoutchouc, tissu, mat | Roughness 0.8-1.0 |
| Peinture automobile, vernis | Coat Weight 1.0 ; Coat Roughness 0.05 |
Metallic est 0 ou 1, presque jamais entre les deux. Les couleurs de base noir pur (0, 0, 0) et blanc pur (1, 1, 1) semblent mauvaises sous la lumière : restez entre environ 0.03 et 0.9.
Éclairage et monde
- Pas de monde et pas de lumière signifie un rendu noir, et le verre ou le chrome rendu contre un monde vide devient noir même avec des lumières, car il n'y a rien à réfléchir ou réfracter. Donnez au monde une couleur et une force, ou un HDRI.
- Un bon point de départ : une grande lumière de zone comme clé (45° d'un côté et au-dessus), un remplissage plus faible de l'autre côté, une lumière de contour derrière, et un monde à faible force (0.2-0.5).
- La puissance d'une lumière de zone est en watts et doit être grande : une lumière de zone de 1 m à 2 m d'un petit objet veut environ 100-500 W. La force d'un soleil est différente : 2-5.
- Un plan de sol sous l'objet donne des ombres de contact ; sans lui, l'objet flotte.
- Un HDRI donne un éclairage et des reflets réalistes en une seule étape. La connexion Blender (MCP pour Blender) peut en télécharger un depuis Poly Haven : c'est un contenu tiers et une approbation dans HydraOps, donc demandez d'abord. Avec BlenderLab, demandez à l'utilisateur un fichier HDRI.
Moteurs
| EEVEE | Cycles | |
|---|---|---|
| Vitesse | Secondes | Secondes à minutes |
| Utilisation pour | Aperçus, stylisé, animation | Images fixes finales, verre, lumière précise |
| Attention | Les réflexions et réfractions nécessitent le lancer de rayons activé ; sans lui, les surfaces vitreuses et brillantes semblent plates ou granuleuses | Bruit : augmentez les échantillons et gardez le débruitage activé ; utilise le GPU uniquement si l'utilisateur l'a configuré |
L'identifiant du moteur pour EEVEE diffère selon la version (BLENDER_EEVEE_NEXT dans 4.2-4.5,
BLENDER_EEVEE avant et après) : la référence montre comment le définir sans deviner.
Ne modifiez pas le périphérique de rendu ou les préférences de l'utilisateur.
Caméra
- Créez-en une s'il n'y en a pas et faites-en la caméra de la scène ; ne déplacez pas une caméra que l'utilisateur a déjà placée sauf demande explicite.
- Visez-la avec une contrainte Track To vers le sujet ou vers un objet vide ; 50-85 mm pour les objets, 24-35 mm pour les pièces et environnements.
- Vérifiez le cadrage avec un petit rendu test, pas avec la capture d'écran de la vue (la vue 3D n'est pas la caméra sauf si vous passez en vue caméra).
Rendu
- Rendez dans un fichier avec un chemin absolu dans un dossier que l'utilisateur peut trouver (à côté du .blend s'il est sauvegardé, sinon demandez ou utilisez le dossier temporaire de l'utilisateur) et rapportez le chemin complet. N'écrasez jamais un fichier existant sans le dire. Faites-le avec du code (la référence le contient) : les propres outils de rendu de BlenderLab sont pour des vérifications rapides et écrivent dans le dossier temporaire de Blender quel que soit le chemin que vous leur donnez ; rapportez le chemin que leurs résultats nomment.
- Testez petit d'abord. Un rendu Cycles en pleine résolution peut prendre des minutes et bloque Blender pendant son exécution ; prévenez l'utilisateur avant d'en lancer un long.
- Regardez le résultat avant de déclarer le succès : une capture de la vue 3D ne montre pas un rendu. Si vous ne pouvez pas visualiser le fichier rendu vous-même, dites-le clairement et décrivez ce que vous avez configuré plutôt que ce à quoi l'image « ressemble ».
- Gestion des couleurs : la transformation de vue par défaut (AgX ou Filmic) désature les couleurs fortes
pour le réalisme ; pour des couleurs graphiques plates qui doivent correspondre exactement, utilisez
Standard.
Dépannage
| Symptôme | Cause habituelle |
|---|---|
| Le rendu est noir | Pas de lumière et pas de monde ; caméra à l'intérieur d'un objet ; objet masqué en rendu |
| L'objet est gris ou blanc | Matériau non assigné, ou couleur définie sur diffuse_color au lieu de Base Color |
| Le verre est noir | Monde vide ; dans EEVEE, lancer de rayons désactivé |
| Rose ou magenta | Fichier de texture d'image manquant |
| Granuleux | Cycles : peu d'échantillons ou pas de débruitage. EEVEE : lancer de rayons désactivé ou ombres douces avec peu d'échantillons |
| Plat, pas de profondeur | Seule une lumière de monde : ajoutez une lumière clé et un plan de sol |
| Couleurs délavées | Transformation de vue : essayez Standard, ou réduisez l'exposition |
| Surfaces courbes en blocs | Ombrage plat : activez l'ombrage lisse |
Avant de dire que c'est fini
- Chaque objet visible a un matériau assigné dont la Base Color est définie sur le nœud.
- Il y a une lumière ou un monde éclairé, et une caméra qui cadre le sujet.
- Un rendu a été écrit dans un fichier, et vous avez donné le chemin, le moteur et la résolution.
- Vous n'avez modifié que ce qui a été demandé : pas d'objets supprimés, pas de préférences modifiées.