You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python在Blender中选择颜色属性并使其在视口可见?

在Blender中通过Python切换视口显示的颜色属性

你之前的代码无法生效是因为bpy.ops.geometry.color_attribute_render_set是设置渲染输出时使用的颜色属性,并非控制视口显示的选项。要实现和视口点击切换顶点颜色相同的效果,需要直接操作对象数据的激活颜色属性,同时确保视口着色模式支持显示顶点颜色。

正确实现代码

# 获取目标对象
cube_obj = bpy.data.objects['Cube']

# 激活并选中对象(确保上下文状态正确,部分操作依赖此)
bpy.context.view_layer.objects.active = cube_obj
cube_obj.select_set(True)

# 切换到要显示的颜色属性(与视口点击选择效果一致)
# 方法1:通过名称直接设置激活属性
cube_obj.data.color_attributes.active = cube_obj.data.color_attributes['test_2']

# 方法2:通过索引设置(适合批量操作)
# target_index = cube_obj.data.color_attributes.find('test_2')
# cube_obj.data.color_attributes.active_color_index = target_index

# 确保视口使用能显示顶点颜色的着色模式(比如顶点颜色模式)
for area in bpy.context.screen.areas:
    if area.type == 'VIEW_3D':
        for space in area.spaces:
            if space.type == 'VIEW_3D':
                space.shading.type = 'VERTEX_COLOR'
                break
        break

关键说明

  • color_attributes.active:控制当前在视口和编辑模式中显示/编辑的颜色属性,这正是你在视口点击切换时Blender内部修改的参数。
  • 视口着色模式:只有当着色模式设置为VERTEX_COLOR、MATERIAL_PREVIEW(需材质启用顶点颜色显示)或RENDERED时,顶点颜色才会在视口可见。如果你的场景已经是合适的着色模式,可以省略最后一段循环代码。
  • 上下文问题:如果你不需要通过bpy.ops执行操作,直接修改对象数据的方式不需要严格依赖上下文,但激活对象可以避免其他潜在的上下文冲突。

内容的提问来源于stack exchange,提问作者Christoph Müller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:10:28