在Blender脚本中使用两种颜色为两组对象着色

2024-10-01 00:34:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两种球。我想用两种不同的颜色给球体着色来区分这两种类型,但我不知道怎么做

任务必须通过脚本完成,还有一个.blend文件,但我相信它的内容是可以的。我一开始定义了两种材料:

material0 = bpy.data.materials.new("h_material")
material0.diffuse_color = [ 1. 0. 0. ]
material0.specular_intensity = 0.1

material1 = bpy.data.materials.new("s_material")
material1.diffuse_color = [ 0. 1. 0.]
material1.specular_intensity = 0.1

然后我有一个列表f,它被划分为f0f1,正确地选择球体。在这之后,我表演

f0 = np.vstack(f)
mesh = bpy.data.meshes.new('mesh_name')
ob0 = bpy.data.objects.new('ob0_name', mesh)
bpy.context.scene.objects.link(ob0)
mesh.from_pydata(f0, [], faces) # faces is properly defined somewhere else
mesh.update()

f1相同。不管我做什么,喜欢

ob0.active_material = material0
ob1.active_material = material1

o0 = bpy.context.scene.objects.active = bpy.data.objects['ob0_name']
o0.active_material = material0
o1 = bpy.context.scene.objects.active = bpy.data.objects['ob1_name']
o1.active_material = material1

它从未像我所希望的那样对对象进行着色,但它将其着色为最后提到的颜色(只要它没有崩溃),即material1

有什么建议吗


Tags: namenewdataobjectscontextsceneactivematerial