2017-07-03 2 views
0

Ich habe ein Modell über Blender, gibt es ein Objekt (Name car_AudiA8) mit Multi-Material, ich möchte ein neues Objekt aus dem Objekt ("car_AudiA8") kopieren, dann ändern neue Objekte Farbe und alte Farbe des Objekts ist nicht betroffen, meine Methode ist:Verwenden Mixer Materialfarbe ändern mit 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) 

Anmerkung: Material („carpaint.Black“) kann Wagenfarbe steuern.

+1

Dies könnte eine bessere Frage für https://blender.stackexchange.com sein, da es sich um den Mixer API eher als ein allgemeines Programmierproblem handelt –

Antwort

0

Es sieht so aus, als ob Sie das vorhandene "carpaint.Black" -Material modifizieren, das alle Objekte betreffen würde, die dieses Material verwenden. Stattdessen versuchen, ein neues Material zu diesem Slot Zuordnung

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 

Ich bin nicht sicher, ob dies so ist, wird funktionieren, aber Sie bekommen die Idee. Du solltest besser das schwarze Material kopieren, anstatt einfach ein neues Material von Grund auf neu zu erstellen.

+0

danke für die Antwort, ich benutze "bpy.ops.object.make_single_user (object = True, obdata = True, material = True, texture = True) ", kann das Material des neuen Objekts und das des alten Objekts getrennt werden, und der Name des neuen Materials unterscheidet sich vom Namen des alten Materials. und ich brauche kein neues Material, bitte hilf mir. – user824624