2017-07-03 63 views
0

我有一個關於攪拌機的模型,有一個對象(名稱的car_AudiA8)與多種材質,我想從對象(「car_AudiA8」)複製一個新的對象,然後更改新的對象顏色和舊物體的顏色不受影響,我的方法是:使用攪拌機更換材料顏色python

obj = bpy.data.objects["car_AudiA8"] 
mesh = obj.data 
new_obj = bpy.data.objects.new("car_AudiA8", mesh) 
bpy.context.scene.objects.link(new_obj) 
bpy.ops.object.make_single_user(object = True, obdata = True, material = True,texture = True) 
for slot in bpy.data.objects[new_obj.name].material_slots: 
    if (slot.name.startswith("carpaint.Black")): 
     bpy.data.materials[slot.name].diffuse_color = (1,0,0) 

注:材料(「carpaint.Black」)可以控制汽車的顏色。

+1

這可能是一個更好的問題https://blender.stackexchange.com看到,因爲它涉及的攪拌機api而不是一般的編程問題 –

回答

0

看起來您正在修改現有的「carpaint.Black」材質,這會影響使用該材質的所有對象。相反,嘗試分配一個新的材料到該插槽

for slot in bpy.data.objects[new_obj.name].material_slots: 
    if (slot.name.startswith("carpaint.Black")): 
     new_mat = bpy.data.materials.new(name="carpaint.NewRed") 
     new_mat.diffuse_color = (1,0,0) 
     slot.material = new_mat 

我不確定這是否會按原樣工作,但您明白了。複製黑色材質可能會更好,而不是從頭開始創建新材質。

+0

謝謝你的答案,我使用「bpy.ops.object.make_single_user( object = True,obdata = True,material = True,texture = True)「,它可以分隔新對象的材質和舊對象的材質,而新材質的名稱與舊材質的名稱不同。我不需要創建新的材料,請幫助我。 – user824624