1.选中物体,进入权重绘制模式
2.代码
import bpy # 获取当前活动的物体 obj = bpy.context.object # 确保物体是网格类型 if obj.type != 'MESH': print("当前激活的对象不是网格类型。") #exit() # 遍历所有顶点组 for vg_name in obj.vertex_groups.keys(): # 获取顶点组 vg = obj.vertex_groups.get(vg_name) if not vg: print(f"未找到名为 '{vg_name}' 的顶点组。") continue # 如果顶点组不存在,跳过当前循环迭代 # 获取顶点组的权重 weights = [vg.weight(i) for i in range(len(obj.data.vertices))] # 检查物体的属性中是否已经存在与顶点组同名的颜色属性,如果没有则创建一个 color_attr_name = vg_name + "_colors" # 颜色属性的名称基于顶点组的名称 if color_attr_name not in obj.data.attributes: color_attr = obj.data.attributes.new( name=color_attr_name, type='BYTE_COLOR', domain='POINT', ) else: color_attr = obj.data.attributes[color_attr_name] # 设置顶点颜色属性 for i, vertex in enumerate(obj.data.vertices): # 将权重值映射到颜色上,这里简单地将权重映射到颜色的红色通道上 # 可以根据需要调整颜色映射逻辑 weight = weights[i] color = (int(weight * 255), int(weight * 255), int(weight * 255), 255) # 将权重映射到RGB颜色 color_attr.data[i].color = color print(f"顶点组 '{vg_name}' 的权重已成功转换为顶点颜色属性 '{color_attr_name}'。")
标签:obj,name,vg,python,color,api,顶点,attr From: https://www.cnblogs.com/jingzaixin/p/18162657