Как экспортировать 3d модель из blender
Перейти к содержимому

Как экспортировать 3d модель из blender

  • автор:

Экспорт из Blender в 3D max.

Всем привет, не так давно стал пользоваться 3D max, до этого моделил в блендер, и в полне успешно. И тут я задумал экспортировать модель с текстурами из блендера 3D max. Информации мало. Но как понял необходим формат obj. В итоге экспортировал вполне успешно, но он не может найти материалы. Хотя файл mtl создается. В чем может быть причина? Как экспортировать без потери материалов?

На сайте c 10.03.2020
Сообщений: 14
Цитата JohnnyFortunite:

Всем привет, не так давно стал пользоваться 3D max, до этого моделил в блендер, и в полне успешно. И тут я задумал экспортировать модель с текстурами из блендера 3D max. Информации мало. Но как понял необходим формат obj. В итоге экспортировал вполне успешно, но он не может найти материалы. Хотя файл mtl создается. В чем может быть причина? Как экспортировать без потери материалов?

Как ты перенес модель? У меня как-то всё топорно. Единицы измерения не совпадают, из-за чего вообще всё через одно место работает. Вплоть до того, что проще заново сделать модель

Импортирование 3D-моделей

В настоящее время Defold поддерживает модели, скелеты и анимацию только в формате .dae (Collada). С помощью таких инструментов, как Maya, 3D Max, Sketchup и Blender, можно создавать и/или конвертировать 3D-модели в формат Collada. Blender — это мощная и популярная программа для 3D-моделирования, анимации и рендеринга. Она работает под Windows, macOS и Linux и доступна для свободного скачивания на сайте http://www.blender.org.

Model in Blender

Экспортирование в формат Collada

При экспорте модели в формат Collada создается файл с расширением .dae. Этот файл содержит все вершины, ребра и грани, составляющие модель, а также UV координаты (информация о том, какая часть текстуры сопоставляется с определенной частью сетки), если они определены, а также кости скелета и данные анимации.

  • Подробное описание полигональных сеток можно найти на http://en.wikipedia.org/wiki/Polygon_mesh.
  • UV-координаты и UV-мапинг описаны на http://en.wikipedia.org/wiki/UV_mapping.

Defold накладывает некоторые ограничения на экспортируемые данные анимации:

  • В настоящее время Defold поддерживает только запеченную анимацию. Это означает, что анимация должна иметь матрицы трансформации (уже вычисленные координаты) для каждой анимированной кости в каждом ключевом кадре, а не положение, вращение и масштаб как в отдельных ключах.
  • Анимация интерполируется линейно. Если требуется более сложная интерполяция кривых, анимацию необходимо предварительно запечь в программе-экспортере.
  • Формат Collada не поддерживает анимационные клипы. Чтобы использовать несколько анимаций в одной модели, необходимо экспортировать их в отдельные .dae-файлы и собрать их в единый .animationset-файл в Defold.

Требования

При экспорте модели в формат Collada необходимо убедиться, что она соответствует следующим требованиям:

  • Модель должна представлять собой единую сетку
  • Модель должна использовать лишь один материал
Объединение нескольких полигональных сеток

Для объединения нескольких сеток можно использовать Blender. Выделите все сетки и нажмите CTRL / CMD + J чтобы объединить их.

Join meshes

Удаление материалов

Для удаления лишних материалов из модели также подойдет Blender. Выберите материал для удаления и нажмите кнопку — .

Remove materials

Экспортирование текстуры

Если для модели еще не существует текстуры, ее можно сгенерировать с помощью Blender. Это следует сделать перед удалением лишних материалов с модели. Начните с выделения сетки и всех ее вершин:

Select all

Как только все вершины выделены, необходимо развернуть сетку, чтобы получить UV-макет:

Unwrap mesh

Затем можно приступать к экспорту UV-макета в изображение для использования его в качестве текстуры:

Export UV layout

Export UV layout settings

Export UV layout result

Экспортирование с помощью Blender

Экспорт модели в формат Collada выполняется с помощью пункта меню “Export”. Следует выделить модель перед выбором пункта меню File > Export > Collada. В открывшемся диалоге установите флажок “Selection Only”, чтобы экспортировать только выделенную модель.

Exporting using Blender

Импортирование в Defold

Чтобы импортировать модель, просто перетащите .dae-файл и соответствующую текстуру в панель Assets.

Imported model assets

Использование модели

После импорта модели в Defold ее можно использовать в компоненте Model.

  • English
  • 中文 (Chinese)
  • Español (Spanish)
  • Français (French)
  • Νεοελληνική γλώσσα (Greek)
  • Język polski (Polish)
  • Português (Portuguese)
  • Русский (Russian)
  • Українська (Ukranian)

Did you spot an error or do you have a suggestion? Please let us know on GitHub!

Blender: экспорт моделей формата .OBJ в 3Ds Max

Blender: экспорт моделей формата .OBJ в 3Ds Max

В этом уроке будут рассмотрены некоторые очень важные нюансы при экспорте 3D моделей формата .OBJ из Blender в 3Ds Max.

Следует отметить, что рекомендуемые параметры для экспорта в 3Ds Max, которые будут здесь представлены, также являются рекомендуемыми для экспорта в большинство других программ, работающих с 3D моделями формата .obj. Но, есть программы, у которых при импорте модели при данных параметрах, результат будет совершенно противоположным. О некоторых из них так же будет упомянуто в этой статье.

1. Экспорт простой модели

При экспорте простой модели состоящей из одного объекта при стандартных настройках, как правило, никаких проблем не возникает.

Приведем пример экспорта обычного куба. Развернем его и наложим текстуру.

Blender: экспорт моделей формата .OBJ в 3Ds Max

Экспортируем: File – Export – Wavefront(.obj). Очень важно, чтобы название модели и текстуры, было на английском языке, иначе импорт в 3Ds Max произойдет без текстур даже при правильных настройках.

Blender: экспорт моделей формата .OBJ в 3Ds Max

Затем открываем нашу модель в 3Ds Max через вкладку Import.

Blender: экспорт моделей формата .OBJ в 3Ds Max

Как видим, модель сохранила свою форму. С координатами развертки и текстурой так же нет никаких проблем.

2. Экспорт сложной модели

Попробуем теперь экспортировать модель сложнее, состоящую из нескольких объектов, например 3д-модель снеговика. Как и в предыдущем случае, сделаем ей развертку и наложим текстуру.

Blender: экспорт моделей формата .OBJ в 3Ds Max

Экспортируем также при стандартных настройках Blender, а затем импортируем в 3Ds max.

Blender: экспорт моделей формата .OBJ в 3Ds Max

Как видим, все наши объекты слились, а сама модель потеряла свою первоначальную форму. Но, если снеговика в Blender объединить в один объект, то цельным в 3Ds Max он импортируется нормально. Это бы решило проблему, но, что делать в случае, когда необходимо импортировать модель именно отдельными объектами?

Чтобы найти решение для данной задачи, рассмотрим настройки экспорта формата .OBJ 3D редактора Blender.

3. Настройки экспорта формата .OBJ в Blender

3.1 Оси координат

Выпадающие меню «Forward» (Перед) и «Up» (Верх) позволяют выбрать направление, в котором будет направлена лицевая сторона объекта.

В редакторе трёхмерной графики Blender глобальные оси координат расположены следующим образом: Z – вертикальна (высота), Х – горизонтальна (ширина), Y – горизонтальна и перпендикулярна X и Y (длина).

Blender: экспорт моделей формата .OBJ в 3Ds Max

Это важно учитывать при экспорте, так как в некоторых 3D программах, у данных осей совсем другие направления. Например, в системе разработки 3D приложений Unity3D, оси расположены следующим образом: Y – вертикальна (высота), Х – горизонтальна (ширина), Z – горизонтальна и перпендикулярна X и Y (длина). Причем, положительные направления горизонтальных осей противоположны положительным направлениям горизонтальных осей в Blender. Следовательно, для корректного экспорта в эту программу необходимо будет менять данные настройки.

Что касается 3Ds Max, то в этой программе глобальные оси координат совпадают с аналогичными осями в Blender. Поэтому, данные значения при экспорте в выпадающих меню «Forward» – «-Z Forward» и «Up» – «Y Up» можно оставить без изменений. Если, например, значение в «Forward» с «-Z Forward» поменять на «Z Forward», то при экспорте в 3Ds Max на виде спереди («Front») модель будет обращена тыльной стороной (затылком), а если поменять значение «Up» на «-Y Up» — будет перевернута «вверх ногами».

3.2 Функция «Selection Only»

Если активировать данную функцию, то экспортируются только выделенные объекты. Например, при выделенном носе снеговика, только он и экспортируется. Если же, данная функция отключена, то экспортируются все объекты, находящиеся в сцене, даже если они не выделены. Важно отметить, что так же экспортируются и все скрытие объекты, и все объекты, находящиеся в других слоях.

3.3 Функция «Animation» (Анимация)

Казалось бы, причем тут анимация? Ведь формат .obj – это формат файлов описания геометрии и не поддерживает анимацию 3D объектов. Да, действительно, в данном случае об экспорте самой анимации речь и не идет.

Данная функция предназначена на тот случай, когда, у объекта имеется анимация, например в пять кадров. Тогда, активировав данную функцию, Blender произведет экспорт в формат .obj не одной 3D модели, а пяти с сохранением геометрии в каждом кадре. То есть в папке, в которую был произведён экспорт, появятся пять файлов формата .obj, с моделями соответствующими каждому кадру анимации.

3.4 Функция «Apply Modifiers» (Применить модификаторы)

Если модель строилась при помощи модификаторов, но они не были применены, то, активировав данную функцию, Blender автоматически их применит при экспорте.

3.5 Функция «Include Edges» (Включить ребра)

Допустим, что у модели есть голые ребра, которые созданы не намеренно, а их местоположение неизвестно. Тогда при импорте 3Ds Max выдаст ошибку «error in file: meshName = shapeName» и модель не откроется.

Blender: экспорт моделей формата .OBJ в 3Ds Max

В подобных случаях отключение функции «Include Edges» (Включить ребра) будет крайне полезно. Blender экспортирует модель без подобных ребер, а 3Ds Max откроет модель без проблем.

3.6 Функция «Smooth Groups» (Сгладить Группы)

Данная функция относится к группам сглаживания. При её активации все острые ребра будут записаны в различные группы сглаживания.

3.7 Функция «Bitflag Smooth Groups» (Сгладить Группы Битовым Флагом)

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

3.8 Функция «Write Normals» (Записать Нормали)

Данная функция записывает направление нормалей 3D объектов. Нормаль представляет собой вектор, который перпендикулярен поверхности полигона. Если он направлен наружу, то, соответственно, и полигон будет виден снаружи. У некоторых моделей присутствуют нормали, направленные как внутрь модели, так и наружу. При помощи данной функции и записывается информация об этих направлениях.

3.9 Функция «Include UVs» (Включить Координаты Развертки)

Если 3D модели в Blender сделана развертка, и необходимо экспортировать модель вместе с ней, то данная функция должны быть активирована.

3.10 Функция «Write Materials» (Записать Материалы)

Данная функция позволяет экспортировать 3D модель вместе с данными о применённых к ней материалах и текстурах. После экспорта вместе с файлом модели с расширением .obj, так же появится файл с расширением .mtl.

Здесь важно напомнить, чтобы модель импортировалась в 3Ds Max вместе с текстурами, необходимо при экспорте модели и текстурам давать имена на английском языке.

3.11 Функция «Triangulate Faces» (Триангулировать грани)

Функция «Triangulate Faces» преобразует все грани модели в треугольные. Некоторые 3D программы поддерживают формат .obj только с гранями такого типа, в таких случаях данная функция будет весьма полезна. Но, обычно, со временем эти программы совершенствуются и начинают поддерживать формат .obj не только с треугольными гранями, либо при импорте автоматически преобразует в треугольники, как, например, Unity 3D. Что касается 3Ds Max, то он поддерживает формат .obj как с треугольными гранями, так и многоугольными, поэтому экспорт в эту программу с активированной функцией «Triangulate Faces» используют в исключительных случаях.

3.12 Функция «Write Nurbs» (Записать B-сплайны)

NURBS (Non-Uniform Rational B-Spline) – это неоднородные рациональные B-сплайны. Их главная особенность в том, что они имеют гладкую форму. В Blender сплайны данного вида добавляются в сцену через меню «Add»: «Shift+A» – «Curve».

3.13 Функция «Polygroups» (Полигруппы)

Полигруппы – это группы полигонов, имеющие цвет, характерный только для этой группы. Часто используются в программе скульптинга ZBrush для удобства моделирования.

3.14 Функция «Objects as OBJ Objects» (Объекты как OBJ Объекты)

Если данная функция при экспорте была активирована, то при импорте в 3Ds Max все объекты соединятся в один, что и было показано в самом начале статьи. Эта проблема исправляется при помощи включения следующей за ней функции «Objects as OBJ Groups».

3.15 Функция «Objects as OBJ Groups» (Объекты как OBJ Группы)

Экспортировав модель, состоящую из нескольких объектов, с активированной функцией «Objects as OBJ Groups», 3Ds Max импортирует их отдельно друг от друга, как и нужно. То есть, с сохранением правильной формы модели.

В начале статьи упоминалось, что есть некоторые 3D программы, в которых импорт моделей формата .obj с заданными выше параметрами происходит совершенно противоположно, чем в 3Ds Max. В данном случае, в качестве примера можно привести программу трехмерного моделирования и рендеринга Luxology MODO. После экспорта с активированной функцией «Objects as OBJ Objects» 3D модель импортируется отдельными объектами, а с активированной функцией «Objects as OBJ Groups», напротив, единым объектом (при стандартных настройках импорта в Luxology MODO).

Blender: экспорт моделей формата .OBJ в 3Ds Max

3.16 Функция «Material Groups» (Группы материалов)

Допустим, что к единому объекту применено несколько материалов, тогда, активировав данную функцию, при экспорте единый объект будет автоматически разделен на несколько по группам материалов.

Blender: экспорт моделей формата .OBJ в 3Ds Max

Данным способом можно решить проблему импорта снеговика в 3Ds Max. Модель прекрасно импортируется со всеми объектами отдельно, даже если у них будет один материал.

3.17 Функция «Keep Vertex Order» (Соблюдать Порядок Точек)

У каждой вершины 3D объекта есть свои координаты и порядковый номер. Данная функция предназначена для сохранения нумерации вершин с соответствующими координатами. В противном случае, при импорте может произойти нарушение нумерации, и модель потеряет первоначальную форму.

3.18 «Scale» (Масштаб)

При помощи значения «Scale» можно задать масштаб экспортируемой детали. Перед этим важно обратить внимание на единицы измерения, которые заданы в экспортируемой и импортируемой программах. Желательно, чтобы они совпадали.

3.19 «Path Mode» (Режим Пути)

По умолчанию стоит режим «Auto» (Авто). После экспорта 3D модели в данном режиме, если текстура не будет лежать в одной папке с файлом .obj, то при импорте 3Ds Max попросит указать к ней путь. Поэтому, если необходимо экспортировать модель с текстурами в отдельную папку, то нужно выставить режим «Copy» (Копия). Тогда все текстуры будут скопированы при экспорте автоматически вместе с файлами .obj и .mtl.

4. Рекомендуемые параметры экспорта моделей формата .OBJ из Blender в 3Ds Max

Таким образом, при экспорте модели из Blender в 3Ds Max в формате .obj, рекомендуется установить следующие параметры:

  1. Направления осей координат в меню «Forward» и «Up» оставить по умолчанию;
  2. Активировать следующие функции:
  3. «Selection Only» для экспорта только выделенных объектов;
  4. «Apply Modifiers» для автоматического применения модификаторов;
  5. «Write Normals» для корректного отображения направлений нормали;
  6. «Include UVs» для экспорта координат развертки;
  7. «Write Materials» для экспорта информации по материалам и текстурам;
  8. «Objects as OBJ Groups» для возможности экспорта 3D модели, состоящей из нескольких отдельных объектов;
  9. «Keep Vertex Order» для соблюдения координат и порядковых номеров вершин модели;
  10. в выпадающем меню «Path Mode» выставить режим «Copy», если нужен экспорт модели вместе с текстурами в отдельную папку.

Blender: экспорт моделей формата .OBJ в 3Ds Max

5. Сохранение настроек

Если приходится часто экспортировать 3D модели формата .obj из Blender в 3Ds Max или какую-нибудь другую программу, то чтобы постоянно не устанавливать вышеприведенные параметры их удобно сохранить во вкладке «Operator Presets». Для этого достаточно установить их один раз, затем нажать на знак «+» напротив этой вкладки («Operator Presets»), дать название, например «3Ds Max» и сохранить, нажав кнопу «Ok».

Blender: экспорт моделей формата .OBJ в 3Ds Max

Теперь при экспорте в 3Ds Max, достаточно выбрать уже сохраненные параметры, нажав на вкладку «Operator Presets».

Заключение

В заключение следует сказать, что 3D программы регулярно обновляются, порой сами разработчики допускают ошибки, что может отразиться на качестве экспортируемой модели даже при логически правильных параметрах. Поэтому, иногда бывает полезным поэкспериментировать с настройками, как экспорта, так и импорта.

Напоминаем всем пользователям Blender, что на сайте есть другие уроки по этой замечательной программе, например: точное построение 3d модели по заданным параметрам в Blender.

В следующем уроке вы узнаете, как моделировать объект покебол в Blender (подробная статья, рассчитанная на новичков).

Перепечатка и использования данного материала без прямой обратной ссылки категорически запрещена!

Секреты экспорта из Blender в Unity

— Теория о системе координат (правосторонней и левосторонней)
— Теория правильного создания 3d моделей в blender
— Быстрый экспорт файлов из Blender в Unity3d.
— Как правильно сопоставить масштабы модели в Blender и Unity.
— Экспорт с правильной ориентацией модели
— Почему количество вершин по-разному отображается в Unity и Blender?

Видео к статье

Blender урок №1

Blender урок №2

Blender урок №3

Бонусный урок по текстурам в Unity3d

Теория о системе координат (правосторонней и левосторонней)

На самом деле это самая важная часть, я столкнулся с рядом проблем в работе физики 3d модели из-за неправильного экспорта. И так давайте сначала познакомимся с системой координат правосторонней и левосторонней.

Blender использует правостороннюю систему координат с осью Z, направленной вверх. Такую систему координат используют почти все САПР. Смотрите рисунок:

image

Unity3d как почти любой другой игровой движок использует левостороннюю систему координат. Когда Y направлен вверх, X — вбок, Z- вперед. Смотрим рисунок:

image

Теория правильного создания 3d моделей в blender

Для начала надо изучить структуру папок и файлов нашей 3д модели в Blender.
Refence — папка в которой могут хранится вспомогательные чертежи, рисунки, которые помогают построить 3д модель
Textures — папка в которой должны хранится текстуры.
Flags_snow.blend — наша 3d модель в формате blender

Теперь для правильного экспорта 3d модели, мы должны для себя уяснить, что Z+ это будет направление в игре когда объект движется вперед, (Z-) — направление когда объект движется назад. (X+-) это направления поворота вбок — но это в Unity, которая использует левостороннюю систему координат. А в правосторонней системе координат (Blender, 3ds max) Y+ это будет направление когда объект смотрит вперед и (X+-) это направления вбок. Это значит что объект должен стоять в сцене так, как на рисунке, в противном случае ждите проблем с физикой:

Все параметры вращения должны стоять на 0 для дальнейшей работы и для правильной генерации Меша (Mesh), надо Scale установить по умолчанию. Для этого мы сделаем следующие действия в Blender.

1)Выделим все объекты в сцене (клавиша A)
2)Object>Apply>Rotate & Scale.

Теперь все параметры вращения приняты и установлены на 0. А параметры масштабирования (Scale) установлены на по умолчанию (1). Смотрим рисунок:

image

Благодаря пользователю Leopotam, выяснилось что назначать текстуру, лучше в самом Unity3d, а не в Blender, в противном случае, при каждом экспорте FBX файла у вас будет создаваться папка object.fbm (пустая папка которая не на что не влияет, кроме как создает лишний объект в окне Project.

Экспорт с правильной ориентацией модели

Теперь можем делать «Правильный экспорт» из правосторонней системы координат в левостороннюю систему координат.

1)Выделим все объекты (клавиша A)
2)Жмем последовательность R>X>-90.
3)Object>Apply>Rotate.
4)Жмем последовательность R>X>90.

Обязательно делайте в данной последовательности. Далее экспортируем модель в Unity. File>Export>FBX со следующими настройками:

Быстрый экспорт файлов из Blender в Unity3d.

После экспорта модели:
1) Идем в папку с этой моделью и копируем папку Textures (папку с текстурами) и наш FBX файл.

2) Вставляем в папку Assets нашего проект. Это позволит Unity импортировать модель прямо с текстурами, которые были настроены в Blender.

Почему количество вершин по-разному отображается в Unity и Blender?

Как мы видем на рисунке количество вершин (verts) на объекте в Unity3d показывает 28.
Смотрим рисунок:

А количество вершин в Blender = 8

Связано это с тем, что в Unity3d подсчитывается количество вершин самой фигуры и количество вершин в UV развертке:

При создании швов, одна грань разделяется на 2 грани, а следуя математике 1 грань состоит из 2 вершин, следовательно из 2ух граней будет 4 вершины. Для примера воспользуемся Smart UV Project разверткой и установим максимальный Angle Limit.

Смотрим в Blender и количество вершин сократилось с 28 до 24 вершин. Если у кого есть более оптимизированный способ. Пишите в комментариях, обсудим. Некоторые скажут что что сократилось всего на 4 вершины, а представьте если таких объектов 100 или 200, или количество вершин в более детализированных объектах сократиться на 100-300. Помойму не плохой способ оптимизации.

Как правильно сопоставить масштабы модели в Blender и Unity.

Все единицы измерения, что в Blender что в Unity поумолчанию имеет единицу измерения Units. 1 Units= 1 Meter . Поэтому разработчики советуют принимать 1 юнит игрового пространства за 1 реальный метр, и лучше этого придерживаться (хотя бы чтобы с физикой меньше возиться).
И так разберемся с единицами измерения в Blender, в прицнипе в Blender их можно менять, но поумолчанию в Blender используется Units.

Смотрим на рисунок:

Видем параметр Dimension (Измерения или размер). на рисунке мы видем Dimension по X,Y,Z = 1,1,1; следовательно эта фигура куб с размерами 1х1х1 метр. Экспортируем в Unity и переходим на вкладку Inspector

смотрим на параметр Scale Factor, если у вас Unity версии меньше 5, то поумолчанию Scale Factor будет 0.01, исправим этот параметр на 1, если у вас Unity5 то Scale Factor поумолчанию будет 1.

Заключение

Вот и вся статья, как видем экспорт 3d модели из Blender в Unity, это не такуж то и сложно. Для более детального рассмотрения данного материала предлагаю посмотреть видеоуроки в начале статьи >> ссылка

Дополнение от Leopotam

Leopotam:

Ничего не было сказано, что нельзя вешать в материал текстуры (только то, что в UV-окне), иначе юнити начнет создавать папки типа object.fbm и пытаться импортировать текстуры в них независимо от того, что лежит в соседней папке Textures. Тут кроется проблема — их бесполезно удалять, при следующем переимпорте (например, при заборе репозитория в новую папку или смене целевой платформы) ассета папка появится снова. Единственное решение — правильно готовить это дело в блендере. Ну или отключать импорт материалов и настраивать префабы руками.

Да действительно в Unity 5 начали создаваться данные папки (при первичном импорте) раньше их не замечал, но они пустые и их можно удалить (они создаются только при первичном импорте) и текстуры ищет в папке Textures и применяется Шейдер в зависимости от настроек материала, если материал стандартный и то примениться Diffuse с уже настроенной текстурой, если Transperty применен в материалах, то примениться соответствующий шейдер Transperty в Unity3d и текстура тоже примениться. Сменил целевую платформу, с Web Player на Desktop — ничего не поменялось, папки не создались. Сменил на Ios — ничего не поменялось. Unity 5.0.1f1

Leopotam:

Ничего не было сказано, что если экспортируется арматура с анимациями, то нельзя использовать FBX 7.4 BINARY формат, только старый FBX 6.1 ASCII, иначе все в юнити поедет в стиле «кровькишкирас. ».

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *