В этом уроке мы посмотрим, как использовать Python-функцию экспорта UV Layout в Blender для экспорта UV-карт, или макетов, всех объектов типа MESH, доступных в сцене.


Видеоверсия этого руководства в настоящее время недоступна на этом языке. Видео на английском языке доступно по этой ссылке:


Текстовая расшифровка видео

Привет. В этом уроке мы посмотрим, как использовать Python-функцию экспорта UV Layout в Blender для экспорта UV-карт, или макетов, всех объектов типа MESH, доступных в сцене.

Этот скрипт может быть полезен, если вам нужно предоставить UV-карты в виде изображений, например при публикации вашей 3D-сцены на сайтах 3D-стоков.

Этот урок был создан с использованием Blender версии 3.3. Иногда разработчики Blender вносят изменения в Blender Python API, сокращенно BPY, но этот скрипт должен работать, начиная с версии 3 и выше.

Функция bpy.ops, которую мы будем использовать, довольно простая. Она требует всего два параметра, а именно путь к создаваемому изображению и размер UV в пикселях. Однако, поскольку нам нужно использовать ее для всех доступных объектов MESH в сцене, мы применим цикл for по объектам MESH.
Кроме того, я укажу расширение файла, которое по умолчанию является PNG.
На самом деле я буду экспортировать макеты в формате PNG, но хочу показать вам, как это указывать, потому что вы также можете экспортировать UV-макеты в файлы SVG или EPS.
Хорошо, давайте начнем.

Откройте файл BLEND.
Вы также можете начать с совершенно нового файла, но вам нужно будет сохранить его где-нибудь, потому что мы будем помещать PNG-файлы в ту же папку, что и проект.

Давайте сделаем несколько базовых импортов:

import bpy

from bpy import *

Как я говорил ранее, функция export_layout требует два параметра, поэтому давайте определим две переменные. Мы могли бы написать значения прямо в самой функции, но я предпочитаю определить их здесь для ясности:

UVpath = bpy.path.abspath("//") + "UV-LAYOUT---"

UVsize = (2048, 2048)

Как вы видите, "bpy.path.abspath" возвращает абсолютный путь на диске к файлу BLEND. Мы добавим префикс "UV-LAYOUT---" ко всем PNG-файлам, но вы можете изменить его или удалить.

Параметр UVsize представляет собой кортеж из двух числовых значений, которые являются размерами создаваемых изображений в пикселях.
Я указываю 2048, тем самым создавая изображение 2k.

Чтобы выполнить функцию для всех объектов MESH, доступных в сцене, нам нужно создать цикл for. Поэтому мы можем написать:

for o in bpy.data.objects:

Затем, внутри блока цикла for, не забывая про отступы, мы можем добавить фильтр по типу объекта:

if(o.type=="MESH"):

Условие очевидно. Тип текущего bpy.data.object должен быть MESH.

Следующие инструкции должны быть помещены внутрь if, поэтому снова не забывайте делать отступы.

bpy.ops.objects.select_all(action='DESELECT');

Нам нужно делать это каждый раз, чтобы снять выделение со всех остальных объектов, иначе мы получили бы изображение с двумя или более наложенными UV-картами.

bpy.context.view_layer.objects.active = o

Это присваивание установит активный объект сцены, назначив текущий меш в context.view_layer.objects.active.
Нам нужно сделать это, потому что следующая операция OPS, то есть операция Blender Python, будет выполняться только над одним единственным активным объектом. Помните, вы можете выделять несколько объектов, но активным в один момент времени может быть только один.

bpy.ops.uv.export_layout(filepath = UVpath + o.name, size = UVsize, mode='PNG')

Эта инструкция ops экспортирует макет активного объекта по указанному пути, который формируется из переменной UVpath с префиксом "UV-LAYOUT---" плюс имя активного объекта, и с заданным размером в пикселях.

Как я говорил ранее, вы можете экспортировать UV-макеты в форматах PNG, EPS или SVG. Вы можете указать формат вывода с помощью параметра mode, как я только что показал.
Если мы посмотрим на выходную папку, мы увидим, что скрипт создал столько изображений, сколько мешей присутствует в сцене.

Поскольку меши в моей 3D-модели "Desk set 3" используют один и тот же макет с неперекрывающимися UV-островами, я могу объединить все объекты вместе, снова запустить скрипт и получить всего одну UV-карту макета без перекрытий для всего ассета.

Перед тем как закончить этот урок, я дам вам задание. Отредактируйте этот скрипт так, чтобы он экспортировал как 2k, так и 4k UV-макеты мешей, доступных в ваших сценах, создавая изображения с двумя разными префиксами, например "UV-2K---" и "UV-4K---".

На этом все для этого урока.
До скорой встречи.

🇺🇸 Sitemap - 🇮🇹 Sitemap - 🇪🇸 Mapa del sitio - 🇧🇷 Mapa do site - 🇫🇷 Plan du site - 🇩🇪 Sitemap - 🇷🇺 Карта сайта - 🇨🇳 网站地图 - 🇯🇵 サイトマップ - 🇰🇷 사이트맵


Этот сайт предназначен исключительно для демонстрации некоторых моих работ и не имеет рекламных целей. Обратите внимание, что в настоящее время я не ищу и не рассматриваю запросы на индивидуальные заказы, консультации или любые другие формы профессионального сотрудничества.


РАСШИРЕННАЯ ИНФОРМАЦИЯ О ПОЛИТИКЕ КОНФИДЕНЦИАЛЬНОСТИ И ИСПОЛЬЗОВАНИИ ФАЙЛОВ COOKIE