블렌더 스크립팅 : 텍스처 색상 변경 방법

Jan 07 2021

Python / 스크립팅 (애니메이션 없음) 만 사용하여 Blender에서 그림을 만들려고합니다. 모델이로드되어 있고 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

감사합니다 brockmann, 나는 당신의 링크에서 그것을 알아 냈습니다.

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