Экспорт в UE4 с помощью аддона Send to Unreal для Blender.
Примечание: Статья устарела. Актуальная на момент 2023: https://noostyche.ru/blog/2022/12/31/eksport-v-ue5-iz-blender-s-pomoshchyu-addona-send-to-unreal/
Send to Unreal — это официальный аддон от Epic Games, позволяющий производить корректный экспорт объектов из Blender в движок Unreal Engine 4. Можно экспортировать статичную и скелетную геометрию (включая морфы), а так же анимации. Аддон хорошо работает с Linux-версией Blender и Unreal Engine.
Официальный репозиторий: https://github.com/EpicGames/BlenderTools
Примечание: Репозиторий приватный, поэтому потребуется аккаунт на GitHub и его подключение к профилю на официальном сайте движка: https://www.unrealengine.com/en-US/ue4-on-github
Официальные уроки по Send to Unreal:
https://www.youtube.com/playlist?list=PLZlv_N0_O1gZfQaN9qXynWllL7bzX8H3t
Подготовка к работе.
Настройка движка.
Аддон устанавливается в Blender так же, как и прочие аддоны, но для дальнейшей работы потребуется довольно нетривиальная настройка. Как бы не было удивительно, начать придётся с настройки Unreal Engine и проекта, в который планируется производить экспорт.
В движке в Edit / Plugins необходимо активировать плагины Python Editor Script Plugin и Editor Scripting Utilities.
В Edit / Project Settings включить дистанционную активацию Python-скриптов:
Python Remote Execution / Enable Remote Execution
В Edit / Editor Preferences отключить Use Less CPU when in Background. Это нужно, чтобы редактор не замедлялся в свёрнутом состоянии, и экспорт из Blender в движок происходил корректно.
Перезапустить движок.
Настройка сетевого экрана (брандмауэр).
Сигнал от аддона к движку о том, что нужно произвести импорт экспортируемого объекта, передаётся по сети посредством Python API. По умолчанию в сетевом экране такая возможность заблокирована. Необходимо разрешить доступ к адресу 239.0.0.1:6766 с адреса компьютера в локальной сети. Иначе аддон не сможет взаимодействовать с движком и будет показана ошибка «Could not find an open Unreal Editor instance». К примеру, адрес компьютера в локальной сети 192.168.1.5, то разрешение будет выглядеть так:
Настройка аддона в Blender.
Примечание: Настройки аддона сбрасываются выключением-включением.
Вкладка Paths.
Always use Unreal scene scale — если активировано, то при открытии новой сцены будет автоматически настроен Unit Scale на 0,01 и в соответствии с этим будут настроены размер ячеек сетки «пола» и дальнее расстояние отсечения 3D-вида (Clip End). Для удобства стоит активировать.
Выбор режима экспорта. Есть три режима экспорта:
Send to Unreal — напрямую отправляет экспортируемый объект на импорт движок через временно создаваемый FBX-файл.
Export to Disk — сохраняет FBX в указанный каталог.
Both — две опции одновременно.
Примечание: Опции FBX настраиваются в панели аддона в разделе Export.
Настройка путей экспорта.
Mesh Folder (Unreal) — указать путь для экспорта статичной геометрии. Под /Game подразумевается каталог Content (корневой каталог для контента в проекте) открытого в движке проекта. Далее подразумевается путь до конкретного подкаталога внутри Content. Если не поменять путь, то автоматически будут созданы каталоги untitled_category/untitled_asset.
Для Animation Folder (Unreal) и Skeleton Asset (Unreal) — всё аналогично. Здесь стоит упомянуть, что для скелета не требуется указывать путь в том случае, если устраивает, что он будет сохранён в тот же каталог, что и skeletal mesh.
Вкладка Export.
Export all actions — экспортировать все Action из сцены. Удобнее указывать конкретные каналы в NLA, поэтому лучше отключить.
Auto stash active action — позволяет в NLA не создавать каналы для каждого Action вручную. При экспорте это будет сделано автоматически. Лучше создавать самостоятельно — отключить.
Auto sync control NLA strips to source — при использовании «UE to Rigify» при активации «Send to Unreal» синхронизирует NLA каналы из source rig с каналами в control rig.
Use object origin — объекты будут экспортированы со своим origin, а не с world origin. Для экспорта одиночных объектов оптимально включить.
Настройки FBX в аддоне.
Тот самый промежуточный FBX, который так же можно сохранить на накопитель с опциями Export to Disk и Both.
Настройки скрыты в выпадающем списке:
Стандартные настройки выглядят так:
Для основной массы случаев, настройки оптимальные, можно ничего не менять.
По вкладкам Import и Validations всё очевидно из описания пунктов, можно легко разобраться самостоятельно.
Наконец с настройками покончено. Можно приступить к экспорту.
Кратко об экспорте.
Сначала настраивается сцена, потом объект экспорта добавляется в специальные коллекции. При нажатии кнопки Pipeline / Export / Send to Unreal аддон будет пытаться обнаружить запущенный движок и активный проект, чтобы экспортируемый объект автоматически импортировался в движок. Ниже подготовка и экспорт подробно рассмотрены.
Экспорт статичной геометрии.
Убедиться, что сцена настроена следующим образом:
- В настройках рендера указать 30 FPS для анимации. Это стандартная частота кадров в секунду для анимации в Unreal Engine.
- Unit System: Metric
- Unit Scale: 0,01
Подготовка к экспорту. Базовые коллекции.
Выбор объектов для экспорта завязан на специальные коллекции, которые создаются автоматически после активации аддона. Экспортироваться будут только те объекты, которые находятся в этих коллекциях. Всего три специальные коллекции: Mesh, Rig, Extras.
Mesh — в эту коллекцию добавляется статичная и скелетная геометрия.
Rig — сюда добавляются Armature (скелеты). Стоит отметить, что морфы не требуется добавлять в эти коллекции, достаточно добавить основную геометрию в Mesh, а скелет — в Rig.
Extras — служебная коллекция, обычно не используется.
Подготовка к экспорту. Организация контента.
Объект, материал и текстуры должны иметь адекватные названия, так как они будут импортированы в движок под именами из Blender. Пример:
- Объект называется SM_Cone. Его префикс указывает на то, что это статичная геометрия — Static Mesh.
- Сетка имеет такое же имя, но это не обязательно. Важно только название объекта.
- На сетку назначено два материала: M_Cone_Green и M_Cone_Yellow.
- Текстуры не используются.
Внешний вид объекта:
Экспорт.
Необходимо поместить желаемый к экспорту объект в соответствующую коллекцию. В данном примере экспортируется статичная геометрия, поэтому объект SM_Cone помещён только в коллекцию Mesh:
Для удобства перемещения между коллекциями стоит использовать горячую клавишу M при выделенном объекте:
Примечание: Объект может быть в нескольких коллекциях, если то требуется для личного удобства.
Необходимо запустить движок и проект, в который будет вестись экспорт. После этого можно нажимать заветную кнопку в верхней панели: Pipeline / Export / Send to Unreal
Примечание: Можно экспортировать несколько отдельных объектов за раз.
Если Unreal Engine запущен, открыт желаемый проект и в сетевом экране разблокирован адрес 239.0.0.1:6766, то должна отобразиться полоска компиляции ассета в движке:
Объект будет сохранён внутри запущенного проекта по тому пути, который был указан в настройках аддона во вкладке Paths. По умолчанию и в данном примере это /Game/untitled_category/untitled_asset/. Под /Game подразумевается каталог Content в проекте. Получаем, что в каталоге Content будет создан каталог untitled_category и подкаталог untitled_asset, в котором и будет располагаться экспортируемый объект.
Экспорт скелетной геометрии.
При экспорте скелетной геометрии в движок будут импортированы: скелетная сетка, включая материал и текстуры; скелет; анимации; морфы (если есть).
Часть действий аналогична экспорту статичной геометрии, но есть важные отличия.
- Дать нормальное имя объекту и его элементам. Для скелетной геометрии принято использовать префикс SK — Skeletal Mesh. Пример: SK_Cone.
- Для скелета (Armature) имя можно не менять. В движок скелет импортируется с именем объекта и постфиксом Skeleton. Пример: SK_Cone_Skeleton.
- На версии аддона 1.3.7 требуется хотя бы один Action, иначе экспорт скелета и скелетных сеток будет завершаться ошибкой. Можно использовать пустой Action с Fake User.
- Очень желательно называть Action по имени анимации, которая будет использоваться в движке. Для удобства имеет смысл использовать префикс ANIM. Пример: ANIM_Cone_Rot, то есть анимация вращения (rotation). В данном примере это поворот на 360 градусов по оси Z за 60 кадров (2 секунды при 30 FPS).
- Обязательно создать канал в NLA (Nonlinear Animation). Для экспорта конкретной анимации необходимо включить соответствующий канал в NLA, а остальные отключить.
- Длина анимации будет ограничена количеством кадров в канале NLA. Поэтому можно не менять глобальное значение количества кадров для Timeline.
- Добавить скелетные сетки в коллекцию Mesh.
- Добавить скелет в коллекцию Rig.
Теперь можно произвести непосредственный экспорт:
На этом всё.
Процесс экспорта с помощью Send to Unreal звучит сложнее, чем есть на самом деле. Если всё-таки что-то оказалось непонятным, то стоит посмотреть официальные уроки:
Спасибо за статью!