Script Blender: Comment changer la couleur de la texture
Jan 07 2021
J'essaie de créer une image dans Blender en utilisant uniquement Python / script (pas d'animation). J'ai un modèle chargé et je peux changer sa couleur de base en utilisant active_material.diffuse_color mais maintenant je veux mettre une texture sur le modèle, puis changer la couleur de la texture. J'ai cherché sur Google pendant un moment et je n'ai pas trouvé de bonnes ressources pour savoir comment le faire.
Voici ce que j'ai jusqu'à présent:
mat = bpy.data.materials.new(name="Material")
mat.use_nodes = True
bsdf = mat.node_tree.nodes["Principled BSDF"]
texImage = mat.node_tree.nodes.new('ShaderNodeTexImage')
texImage.image = bpy.data.images.load("../textures/texture.png")
mat.node_tree.links.new(bsdf.inputs['Base Color'], texImage.outputs['Color'])
color_ramp = mat.node_tree.nodes.new("ShaderNodeValToRGB")
mat.node_tree.links.new(bsdf.inputs['Base Color'], color_ramp.outputs['Color'])
ob = bpy.data.objects['model']
if ob.data.materials:
ob.data.materials[0] = mat
else:
ob.data.materials.append(mat)
Le code place correctement la texture sur le modèle, mais je ne sais pas comment utiliser le nœud color_ramp pour changer réellement la couleur ou si c'est même la bonne chose à essayer. Merci!
Réponses
1 Sydney Jan 08 2021 at 02:01
Merci brockmann, je l'ai compris à partir de vos liens.
mat = bpy.data.materials.new(name="Material")
mat.use_nodes = True
bsdf = mat.node_tree.nodes["Principled BSDF"]
color_ramp = mat.node_tree.nodes.new("ShaderNodeValToRGB")
color_ramp.color_ramp.elements[0].color = (0.2,0.8,0.7,1)
mat.node_tree.links.new(bsdf.inputs['Base Color'], color_ramp.outputs['Color'])
texImage = mat.node_tree.nodes.new('ShaderNodeTexImage')
texImage.image = bpy.data.images.load("../textures/Fabric.png")
mat.node_tree.links.new(color_ramp.inputs[0], texImage.outputs['Color'])
ob = bpy.data.objects['model']
if ob.data.materials:
ob.data.materials[0] = mat
else:
ob.data.materials.append(mat)
```