python 对于当前Blender场景中的所有对象,搜索名为MATERIAL.001,MATERIAL.002 ...的材质,并替换为母版

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 对于当前Blender场景中的所有对象,搜索名为MATERIAL.001,MATERIAL.002 ...的材质,并替换为母版相关的知识,希望对你有一定的参考价值。


# Fix materials.
# For all objects in the current Blender scene, search for materials named 
# something like MATERIAL.* by a material named MATERIAL (if available).
# Created by T.E.A de Souza

import bpy

s=bpy.context.scene

def replaceMaterial(slot,obj):
    i = slot.name.rfind(".")
    base = slot.name[0:i]
    if base in bpy.data.materials:
        print("replace "+slot.name+" by "+base+" in "+obj.name)
        slot.material = bpy.data.materials[base]
    
def fixMaterials(object):
    for s in object.material_slots:
        if s.name.rfind(".")>-1:
            replaceMaterial(s,obj)
        
# -----------------------------

print (" --- REPLACE MATERIALS --- ")     

for obj in s.objects:
	fixMaterials(obj)

print (" --- REPLACE MATERIALS: DONE ")

以上是关于python 对于当前Blender场景中的所有对象,搜索名为MATERIAL.001,MATERIAL.002 ...的材质,并替换为母版的主要内容,如果未能解决你的问题,请参考以下文章

C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中没有

python 此脚本的目标是在Blender中打印当前屏幕的每个区域中的空格数(http://learningblender3dsoftware.blo

python 基于API示例的场景集合:https://docs.blender.org/api/blender_python_api_current/bpy.props.html#collectio

8个必须掌握的Blender拓扑技巧

blender导出fbx材质颜色错误

Blender Python 语句控制台日志记录