ब्लेंडर स्क्रिप्टिंग: टेक्सचर का रंग कैसे बदलें

Jan 07 2021

मैं केवल पायथन / स्क्रिप्टिंग (कोई एनीमेशन) का उपयोग करके ब्लेंडर में एक तस्वीर बनाने की कोशिश कर रहा हूं। मेरे पास एक मॉडल भरा हुआ है और मैं active_material.diffuse_color का उपयोग करके इसका आधार रंग बदल सकता हूं लेकिन अब मैं मॉडल पर एक बनावट रखना चाहता हूं और फिर बनावट का रंग बदलना चाहता हूं। मैंने थोड़ी देर के लिए गुगली की है और ऐसा करने के लिए कोई अच्छा संसाधन नहीं मिला।

अभी तक मेरे पास इतना ही है:

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)

कोड सही ढंग से मॉडल पर बनावट डालता है, लेकिन मुझे यकीन नहीं है कि color_ramp नोड का उपयोग वास्तव में रंग बदलने के लिए किया गया है या यदि यह कोशिश करने के लिए सही चीज़ है। धन्यवाद!

जवाब

1 Sydney Jan 08 2021 at 02:01

धन्यवाद ब्रॉकमैन, मैंने आपके लिंक से इसे समझ लिया।

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)
```