Ну, во-первых, нам нужен способ определить, использует ли объект запеченную текстуру. Допустим, все запеченные текстуры используют изображение с именем «запеченный», поэтому давайте посмотрим на узлы текстуры изображения.
Ниже будут найдены все объекты в текущем смешанном файле, который использует текстуру изображения с выпечкой в имени.
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 будет очищать скрипты при открытии новых файлов blend, нам нужен скрипт, который скажет blender открыть файл и запустить предыдущий скрипт, а затем повторить для каждого файла. Чтобы сохранить кроссплатформенность, мы также можем использовать python.
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)