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

如何在Blender中为指定名称的多对象按规则随机分配材质

实现方案

你可以通过定义「对象名称-材质前缀」的映射字典来实现需求,以下是可直接使用的代码:

import random
import bpy

# 在这里定义对象名称到材质前缀的映射,可自行增删修改
obj_prefix_map = {
    "cube": "x",
    "circle": "Y"
}

for obj_name, mat_prefix in obj_prefix_map.items():
    # 检查场景中是否存在指定名称的对象,不存在则跳过
    if obj_name not in bpy.data.objects:
        continue
    target_obj = bpy.data.objects[obj_name]
    
    # 收集对应前缀的材质作为候选池
    candidate_mats = []
    for mat in bpy.data.materials:
        if mat.name.startswith(mat_prefix):
            candidate_mats.append(mat)
    
    # 候选池不为空时随机分配材质
    if candidate_mats:
        target_obj.active_material = random.choice(candidate_mats)
使用说明
  • 首先修改代码中的obj_prefix_map字典:字典的键为场景中需要修改材质的对象的准确名称,值为该对象对应候选材质池的名称前缀,可自由添加多条映射规则。
  • 修改完成后,在Blender的「脚本」工作区运行该代码即可。
  • 代码内置了异常兼容:如果指定名称的对象不存在、或者对应前缀没有匹配的材质,会自动跳过该条规则,不会抛出报错中断运行。

内容的提问来源于stack exchange,提问作者Ashy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:24:04