Connexion
Menu Principal
Recherche
Menu secondaire
Image Aléatoire
Voiture2.jpg
Publicité
Formation Blender ElephormBlender 3d Elephorm


     






Addon : Import Textures as Material
Fou Furieux du Clan
Inscrit:
30/07/2016 16:40
Post(s): 106
Salut, et très bonne année 2018 !

Je commence tout juste le scripting sur Blender , donc excusez-moi par avance si je dis ou fais des conneries, je n'ai pas encore vu beaucoup de tutos sur le sujet (juste lu toute la doc officielle).

J'aimerais faire un addon qui automatise l'import de textures dans un node tree avec un principled shader : en effet je fais tout le temps la même chose, à savoir importer les textures dans des noeuds image texture, puis les relier au principled shader avec d'éventuels traitements (invert color pour une texture glossiness, multiply pour la height quand elle est trop forte, etc.) Je ne sais pas si ça existe déjà mais sinon j'en serais très étonné tellement ça me paraît indispensable ! Ça permettrait d'importer des textures exportées de Substance ou Quixel, ou trouvées sur le net. Bref, j'ai vraiment envie et besoin de faire ça, et ça me sert d'exercice.

En résumé mon addon devrait faire les choses suivantes :
- un panneau dans l'onglet materials avec un bouton pour importer les images (toutes d'un coup tant qu'à faire)
- ensuite suivant le suffixe de chaque image (ex: NORM, ROU, DIFF, etc), les ajouter dans le node tree et les relier correctement, et ajouter d'autres noeuds précédemment cités.

Pour l'instant j'ai ma classe Panel, très simple pour l'instant, je l'étofferai plus tard :
class MaterialPanel(bpy.types.Panel):
    bl_label = "Material from textures"
    bl_space_type = "PROPERTIES"
    bl_region_type = "WINDOW"
    bl_context = "material"
        
    def draw(self, context):
        self.layout.operator("image.open", text="Open images", icon="FILESEL")
        
    @classmethod
    def poll(cls, context):
        return context.scene.render.engine == 'CYCLES' and \
    context.active_object.material_slots.data.active_material

Ce qui permet de charger plusieurs images avec l'UI de Blender, mais ça n'en fait rien ensuite.

J'ai aussi un début de code qui génère mon node tree (code un peu fouillis j'en conviens...):
active_mat = bpy.context.active_object.active_material
active_mat.use_nodes = True
active_mat.node_tree.nodes.clear()    
preview_type = active_mat.preview_render_type

materialOutput = active_mat.node_tree.nodes.new("ShaderNodeOutputMaterial")
materialOutput.location = (450, 0)

principledShader = active_mat.node_tree.nodes.new("ShaderNodeBsdfPrincipled")

active_mat.node_tree.links.new(principledShader.outputs[0], materialOutput.inputs[0])

def addImageTexture(name, location):
    """ add an image texture node """
    imageTexture = active_mat.node_tree.nodes.new("ShaderNodeTexImage")
    imageTexture.location = location
    imageTexture.label = name
    return imageTexture

def addLink(node1, outputId, node2, inputId):
    """ add a link between the node1 and the node2 """
    active_mat.node_tree.links.new(node1.outputs[outputId], node2.inputs[inputId])
    
diffuse = addImageTexture("Diffuse", (-500, 200))
ambientOc = addImageTexture("Ambient Occlusion", (-500, -50))
roughness = addImageTexture("Roughness", (-280, -170))
normal = addImageTexture("Normal", (-500, -480))

mixShader = active_mat.node_tree.nodes.new("ShaderNodeMixShader")
mixShader.location = (-280, 50)

normalMap = active_mat.node_tree.nodes.new("ShaderNodeNormalMap")
normalMap.location = (-280, -480)


    
addLink(diffuse, 0, mixShader, 0)
addLink(ambientOc, 0, mixShader, 1)
addLink(mixShader, 0, principledShader, 0)
addLink(roughness, 0, principledShader, 8)
addLink(normal, 0, normalMap, 0)
addLink(normalMap, 0, principledShader, 17)

height = addImageTexture("Height", (220, -100))
addLink(height, 0, materialOutput, 2)


Ce que j'aimerais faire maintenant, c'est récupérer les dernières images importées en faisant une boucle en partant de la fin de bpy.data.images, et tant que le préfixe est le même (= nom du matériau), assigner chaque image à un noeud en fonction de son suffixe.
Mon problème (enfin) est que je ne sais pas où mettre ce bout de code qui fait la liaison : il faut qu'il soit appelé après l'import des images, ce que je ne sais pas faire. Est-ce que je dois faire une class custom qui hérite d'un opérateur ?

Merci de m'aiguiller sur ce point

Contribution le : 02/01 00:15:12
Créer un fichier PDF de la contribution Imprimer


Addon : PBR Material from textures
Fou Furieux du Clan
Inscrit:
30/07/2016 16:40
Post(s): 106
Salut,
j'ai bien avancé sur cet addon qui devrait beaucoup vous intéresser, si comme moi vous avez des bibliothèques de textures à importer en tant que material:

Pour l'instant mon addon ne fait "que" importer un ensemble de textures que vous sélectionnez (diffuse, AO, roughness, etc) et en fait un node tree complet. C'est déjà pour moi une petite révolution compte tenu du temps que ça fait gagner à éviter de créer des noeuds, les relier, importer les images, les mettre dans les noeuds, etc.
Mais j'ai encore beaucoup d'idées d'amélioration, notamment pour régler des paramètres genre le mapping (UV, generated...), la projection (flat, box..., ce qu'on doit changer sur chaque image texture) ou encore l'intensité d'une displacement map.

Beaucoup d'améliorations à venir, mais vous pouvez déjà essayer la fonctionnalité existante en téléchargeant le fichier ici:
https://github.com/jsulpis/blender-addons

N'hésitez pas à faire des retours ou proposer d'autres fonctionnalités

EDIT: vous pouvez essayer avec des jeux de textures de Wolf par exemple, téléchargeables ici:
https://www.3d-wolf.com/textures.html

Contribution le : 28/01 15:17:24
Créer un fichier PDF de la contribution Imprimer


Addon : PBR Material from textures
Fou Furieux du Clan
Inscrit:
30/07/2016 16:40
Post(s): 106
Salut !
J'ai encore avancé mon addon, il devient de plus intéressant pour moi ! Évidemment, je serais très content qu'il soit utile au plus grand nombre, donc n'hésitez pas à l'essayer

Pour rappel, il permet de créer automatiquement un PBR material complet à partir d'un jeu de textures de votre bibliothèque (comme Poliigon ou Substance).

Par ailleurs, la difficulté est de gérer des noms de textures qui sont différents en fonction de leurs créateurs, donc pour le moment il est bien possible que ça ne fonctionne que sur un nombre réduit de sites de textures. C'est pourquoi j'aimerais d'autant plus avoir des "testeurs" pour me faire des retours que je puisse améliorer l'addon.

Bien sûr, ce n'est pas fini, j'ai encore plusieurs idées de fonctionnalités à ajouter !

à bientôt,
en espérant avoir des réactions

Contribution le : 13/02 20:42:54
_________________
Mes add-ons
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Mes premières images sous Blender (débutants) reprise    [1][2][3][4] 31 708 Hier 22:37:39
tykrane 
The Blender Clan 'tchat Coucours Blenderclan 8 569 Hier 21:16:31
imael411 
The Blender Clan 'tchat Blender Clan v2.0    [1][2][3]...[15] 142 37547 Hier 17:07:01
GoodKaT 
[WIP] et travaux terminés Le lecteur d'âmes 4 218 Hier 06:37:27
FoxRock 
Questions & Réponses [résolu] Longueur des cheveux avec le Particle system 2 69 12/12 19:20:27
Horemheb 
[WIP] et travaux terminés [WIP] Modélisation personnage cartoon    [1][2][3] 20 434 12/12 10:05:49
smog 
Questions & Réponses Nuage de points et création de mesh 4 145 11/12 18:05:02
Sziuny 
Questions & Réponses [résolu] Animation d'une paupière 9 106 11/12 14:52:45
GuiGeex 
Mes premières images sous Blender (débutants) mon premier bonzai low poly (un peu déplumé)    [1][2][3] 27 1578 11/12 13:04:29
smog 
Questions & Réponses Icone Blender au lieu de vignette ? 5 150 10/12 22:51:01
JaAlVir657 
[WIP] et travaux terminés [WIP] Projet Tales & Legends    [1][2][3]...[11] 100 27938 10/12 17:50:42
Redstar 
Questions & Réponses [non résolu] conseils svp pour modéliser un personnage    [1][2][3][4] 31 1624 10/12 10:16:26
moonboots 
Hors Sujet !! Une alternative a Autopano Giga (Kolor)? Un peu urgent 3 208 10/12 09:36:11
tsurubaso 
Questions & Réponses Bibliothèque 5 97 09/12 18:59:19
flamel 
Questions & Réponses problème Tris - fusionner un objet et une sphère 1 59 09/12 17:24:46
Rimpotche 
Questions & Réponses [non résolu] (débutante) créer des motifs en relief ?    [1][2][3] 23 439 09/12 14:41:29
blend74 
Graphisme alternatif Le topic des trucs à télécharger    [1][2][3]...[26] 250 113739 09/12 13:22:57
blend74 
Questions & Réponses pour des illustrations cartoon, render blender ça suffit? 2 101 09/12 11:55:18
Rimpotche 
[WIP] et travaux terminés [terminé] Couv' de livre ! trop classe =) 2 572 09/12 08:51:02
blend74 
The Blender Clan 'tchat [BUG PARIS] RDV en 2018 !    [1][2][3]...[70] 693 160920 08/12 21:39:33
doudoulolita 

Qui est en ligne
42 utilisateur(s) en ligne (dont 23 sur Forums)

Membre(s): 0
Invité(s): 42


plus...
Nouveaux membres
WadeVaux6 14/12/2018
GuilhermeV 14/12/2018
NCEQuincy4 14/12/2018
FloydTurk 14/12/2018
Charley04V 14/12/2018
BetinaAlve 14/12/2018
ArnulfoMar 14/12/2018
DessieGird 14/12/2018
PietroC253 14/12/2018
HMBLayla49 14/12/2018
Dernier Ajout
2018-11-17 15_22_04-Window.png

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 12
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 296 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2018 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445