Экспортировать любой меш из Blender в файл в формате OBJ можно выделив его и выбрав в главном меню пункты: FIle – Export – Wavefront (.obj). При необходимости разбить сцену на объекты и каждый из них экспортировать в OBJ, этот процесс можно легко автоматизировать.
Напишем небольшой скрипт, который позволит разом выгрузить все выделенные в сцене меши, каждый меш – в отдельный файл в формате OBJ.
Для начала определимся с местом, куда мы будем складывать экспортируемые из Blender меши. Пусть это будет та же директория, в которой расположен .blend файл с текущей сценой:
1 |
save_path = os.path.dirname(os.path.abspath(bpy.data.filepath)) |
Оператор экспорта в OBJ в Blender работает со всеми выделенными объектами разом. Поэтому, для того чтобы разбить сцену пообъектно, нам нужно запомнить список выделенных объектов и снять с них со всех выделение. А далее поочередно выделяя каждый меш, экспортировать его в OBJ формат.
Сделаем копию списка выделенных объектов:
1 |
objects = bpy.context.selected_objects[:] |
и снимем со всех них выделение:
1 |
bpy.ops.object.select_all(action='DESELECT') |
Далее, пройдем в цикле по сохраненному ранее списку объектов:
1 |
for ob in objects: |
Если объект – меш, выделим его, выполним оператор экспорта и опять снимем с него выделение, чтобы он не экспортировался повторно не следующей итерации цикла.
1 2 3 4 5 6 7 8 |
ob.select_set(True) bpy.ops.wm.obj_export( filepath=os.path.join(save_path, ob.name + '.obj'), export_selected_objects=True, ) ob.select_set(False) |
В параметре filepath оператора экспорта obj_export мы передаем полный путь, включая расширение, для сохранения экспортируемого в формат OBJ меша. В нашем примере это будет путь к директории blend-файла плюс имя файла с расширением .obj. В качестве имени файла мы подставляем имя экспортируемого меша, которое получаем из его свойства “name”.
После экспорта можно восстановить исходное выделение в сцене.
1 2 |
for ob in objects: ob.select_set(True) |
После выполнения этого несложного кода в директории проекта будут созданы файлы OBJ, в каждом из которых будет находиться отдельный экспортированный меш.