Для того чтобы загрузить в сцену нужные меши по именам из внешнего blend-файла можно использовать оператор wm.append или же воспользоваться механизмом BlendDataLibraries.
Получить содержимое внешнего blend-файла можно, вызывая метод bpy.data.libraries.load:
1 |
with bpy.data.libraries.load(path_to_lib) as (data_from, data_to): |
передав ему во входном параметре путь к внешнему blend-файлу.
Метод возвращает два указателя на библиотеки объектов: data_from – библиотеку объектов, полученных из внешнего blend-файла и data_to – пустую библиотеку, в которую нужно скопировать указатели на загружаемые в сцену объекты.
Для начала определим путь к внешнему файлу:
1 |
path_to_lib = '//lib.blend' |
и список имен объектов, которые мы хотим из него загрузить:
1 |
names_to_append = ['Suzanne', 'Torus'] |
Прочитаем внешний blend-файл и скопируем в раздел objects библиотеки data_to объекты из того же раздела библиотеки data_from:
1 2 |
with bpy.data.libraries.load(path_to_lib) as (data_from, data_to): data_to.objects = [mesh for mesh in data_from.objects if mesh in names_to_append] |
После того как имена нужных мешей попали в библиотеку data_to, они будут скопированы в текущую сцену.
Теперь нам остается только поместить их в активную коллекцию:
1 2 |
for obj in data_to.objects: bpy.context.collection.objects.link(obj) |