2017-07-03 82 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