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

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

  • автор:

Импортирование объектов из Blender

Unity natively imports Blender files. This works under the hood by using the Blender FBX exporter.

Для того, чтобы начать, сохраните ваш .blend файл в папку Assets вашего проекта. Когда вы переключитесь обратно в Unity, файл автоматически импортируется и отобразится в окне Project .

Для просмотра вашей модели в Unity, перетащите её из окна Project в окно Scene .

Если вы измените ваш .blend файл, Unity автоматически “подхватит” изменения после сохранения.

Unity умеет импортировать

  1. Все узлы с положением, вращением и масштабом. Центры вращения и имена тоже импортируются.
  2. Меши с вершинами, полигонами, треугольниками, UV и нормалями.
  3. Кости.
  4. Skinned меши (меши с привязкой к костям).
  5. Анимации.

См. раздел Использование Blender и Rigify для дополнительной информации о том, как импортировать анимированные персонажи с костями в Unity для использования в Mecanim.

Требования

  • Вам потребуется Blender версии 2.60 и новее (в некоторых более ранних версиях Blender экспорт FBX был сломан).
  • Текстуры и diffuse цвет не назначаются автоматически. Вручную назначьте их перетаскивая текстуру на меш в окне Scene в Unity.

Экспорт объектов из Blender в Unity

при импорте 3D модели в Unity из Blender столкнулся с проблемой. Модель из себя представляет большое здание и при импорте в Unity стены состоят как будто из одной грани, которая стоит посередине. В Blender показывается все корректно, стена состоит из друг граней и никаких проблем нет. Экспортирую из Blender в формате .fbx при экспорте .obj такая же проблема. Прикрепил скриншоты для лучшего понимания ситуации, так как словами трудно это описать, надеюсь на помощь. Unity Blender

Отслеживать
задан 28 янв 2022 в 8:34
51 6 6 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Ctrl+N -> Recalculate Normals

Должно все автоматом развернуть, или вручную для каждого полигона разворачивай

Отслеживать
ответ дан 28 янв 2022 в 8:40
Valera Kvip Valera Kvip
2,677 11 11 серебряных знаков 24 24 бронзовых знака
Сейчас попробую
28 янв 2022 в 9:00

Помогло, только прежде нужно нормали флипнуть Normals -> Flip. Здесь нашел решение youtube.com/… Спасибо за наводку

Использование Blender и Maya с Unity

Blender и Maya — это ведущие пакеты для моделирования и анимации. На этой странице мы расскажем, чем они вам понравятся в сочетании с Unity на вашем пути в разработке игр.

Мощное дополнение в инструментарий разработчика игр

Мощное дополнение к инструментарию

Мир игровой разработки устроен так, что чем больше у вас инструментов, тем больше у вас возможностей. Blender и Maya — это одни из самых мощных доступных инструментов. Они занимают ведущие позиции в графике и анимации. Эти приложения повышают гибкость игровой разработки и в конечном итоге помогают сделать игру качественнее. В этой статье мы расскажем, чем хороши Blender и Maya в составе инструментария начинающего разработчика игр в Unity.

  • Больше, чем графика и анимация
  • Бесшовный импорт в Unity
  • Объединение усилий дизайнеров и разработчиков

Больше, чем графика и анимация

Blender больше десяти лет остается любимым инструментом инди-студий и небольших команд. И это неудивительно, ведь Blender — это бесплатное открытое ПО, возможности которого впечатляют. Более того, Blender регулярно обновляется, поддерживая актуальность технологий, и позволяет создавать высококачественные визуализации.

Другой пакет, Autodesk Maya, хоть и не бесплатен, но стал промышленным стандартом. Практически любой блокбастер в мире игр и кино, выпущенный в этом десятилетии, содержит визуальные эффекты, анимации и трехмерные ресурсы, созданные в Maya (или в его аналоге 3ds Max).

Слыша «Blender» или «Maya», люди автоматически думают о графике или анимации. Но многие не знают, что возможности этих программ выходят далеко за пределы этих задач. Blender и Maya имеют множество других функций и преимуществ, например:

  • полный цикл разработки 3D-моделей (игровые ассеты);
  • разработка выдающихся визуальных эффектов;
  • сборка полноценных сцен и окружений;
  • рендеринг всей сцены (получение изображения из трехмерной модели);
  • поддержка дополнений, расширяющих существующие возможности.

Учитывая все функции и возможности обоих пакетов, неудивительно, что Blender и Maya заняли ведущие позиции не только в графике и анимации.

Sykoo — Руководство по использованию Blender 2.8 и Unity 2019 для начинающих

Бесшовный импорт в Unity

Необходимость конвертировать файлы стороннего проекта для использования их в других приложениях — это долгий процесс. Кроме того, он может быть сопряжен с ошибками, даже в случае программ, гарантирующих совместимость. Но нативный импорт файлов в проект из Blender и Maya в Unity очень прост.

Для импорта ресурсов из Blender в Unity выберите пункт меню Assets > Import New Asset на панели меню Unity, а затем найдите и откройте файл .blend.

Для импорта файлов Maya в Unity выберите пункт меню Assets > Import New Asset на панели меню Unity, а затем найдите и откройте файл Maya с расширением .fbx.

Сотрудничество Unity и Autodesk над форматом FBX: демонстрация обмена файлами между Maya и Unity

Объединение усилий дизайнеров и разработчиков

As a game creator, your main concern will always be having everything you need to make the game you’ve envisioned. At Unity, we believe that game creation, particularly for new developers, should always be efficient and enjoyable.

Combining these programs with Unity unleashes powerful design and development capabilities. Using Blender or Maya with Unity is hassle-free: no complicated pipelines, no special installations or conversions, and every tool you need to succeed in developing your first game. With all of this creative power at your fingertips, you’ll be on your way to making truly amazing games.

Секреты экспорта из 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 не будет опубликован. Обязательные поля помечены *