2017-07-03 14 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オブジェクト=真、obdata =真、マテリアル=真、テクスチャ=真) "とすると、新しいオブジェクトのマテリアルと古いオブジェクトのマテリアルを分離することができ、新しいマテリアルの名前は古いマテリアルの名前とは異なります。私は新しい材料を作る必要はありません、私を助けてください。 – user824624

関連する問題