首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Blender/Python中查找烘焙纹理3D模型

在Blender/Python中查找烘焙纹理3D模型
EN

Stack Overflow用户
提问于 2020-02-06 22:58:35
回答 1查看 240关注 0票数 0

从3D模型的数据集中,我需要自动识别哪些模型有烘焙纹理,哪些没有。我正在使用Blender-Python来操作模型,但我对建议持开放态度。

(模型太多,不能一一打开)

EN

回答 1

Stack Overflow用户

发布于 2020-02-15 16:33:23

首先,我们需要一种方法来识别对象是否使用烘焙纹理。假设所有烘焙纹理都使用名称中带有" baked“的图像,那么让我们查找图像纹理节点。

下面将查找当前混合文件中使用名称中包含"baked“的图像纹理的所有对象。

代码语言:javascript
复制
import bpy

for obj in bpy.data.objects:
    # does object have a material?
    if len(obj.material_slots) < 1: continue
    for slot in obj.material_slots:
        # skip empty slots and mats that don't use nodes
        if not slot.material or not slot.material.use_nodes: continue
        for n in slot.material.node_tree.nodes:
            if n.type == 'TEX_IMAGE' and 'baked' in n.image.name:
                print(f'{obj.name} uses baked image {n.image.name}')

由于blender会在新的混合文件打开时清除脚本,我们需要一个脚本来告诉blender打开一个文件并运行上一个脚本,然后重复每个文件。为了保持跨平台,我们也可以使用python。

代码语言:javascript
复制
from glob import glob
from subprocess import call

for blendFile in glob('*.blend'):
    arglist = [
    'blender',
    '--factory-startup',
    '-b',
    blendFile,
    '--python',
    'check_baked.py',
    ]
    print(f'Checking {blendFile}...')
    call(arglist)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60097850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档