Skrip blender: Bagaimana mengubah warna tekstur
Saya mencoba membuat gambar di Blender hanya menggunakan Python / scripting (tanpa animasi). Saya memiliki model yang dimuat dan saya dapat mengubah warna dasarnya menggunakan active_material.diffuse_color tetapi sekarang saya ingin memberi tekstur pada model dan kemudian mengubah warna tekstur. Saya telah mencari di Google untuk sementara waktu dan tidak dapat menemukan sumber daya yang baik tentang cara melakukannya.
Inilah yang saya miliki sejauh ini:
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)
Kode tersebut menempatkan tekstur dengan benar pada model, tetapi saya tidak yakin bagaimana menggunakan node color_ramp untuk benar-benar mengubah warna atau apakah itu hal yang benar untuk dicoba. Terima kasih!
Jawaban
Terima kasih brockmann, saya menemukan jawabannya dari tautan Anda.
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)
```