Як експортувати 3d моделі з blender в ігрові движки unity3d і unreal engine і підготовка

Як експортувати 3d моделі з blender в ігрові движки unity3d і unreal engine і підготовка

У цій частині статті ми закінчимо розглядати питання, як додати 3d модель в unity. Дана частина статті присвячена виставлення масштабу моделі в Unity3D і Blender. Познайомимося з конвертерами fbx формату і імпортерами / експортерами fbx.







Експорт 3D моделей з Blender в ігрові движки. Частина 1. Експорт з Blender в Unity 3D моделей. Як перенести 3d модель в Unity3D, Unreal Engine, UDK, CryEngine, Amazon Lumberyard.

Експорт 3D моделей з Blender в ігрові движки. Unreal Engine, UDK, CryEngine, Amazon Lumberyard, Unity3d імпорт моделей. Частина 2 .

Експорт 3D моделей з Blender в ігрові движки. Як експортувати з blender в Unity 3d, Unreal Engine, UDK, CryEngine, Amazon Lumberyard. Частина 3. Орієнтація 3D моделі в просторі. Локальні осі.

Експорт 3D моделей з Blender для ігрових движків. Імпорт моделей в Unity з Blender. Частина 4. Origin, Pivot Point, центр 3D моделі.

Експорт 3D моделей з Blender в Unity3D, Unreal Engine, UDK, CryEngine, Amazon Lumberyard. Частина 5. Blender експорт текстури і матеріалів.

Масштаб в Blender і в Unity3D

Як додати 3d модель в Unity ми дізналися з попередніх серій статті. Ще одним важливим параметром при експорті 3Д моделі з Blender'а в форматі fbx є значення коефіцієнта масштабу моделі у вікні настройки експорту. Від версії до версії, від билда до білд імпортована в Unity 3D модель в форматі FBX підхоплює коефіцієнт масштабу то рівним одиниці, як і належить (і як виставлено в настройках експорту моделі в Blender'е), то рівним 0.01, що при додаванні 3D моделі на сцену в Unity призводить до встановлення значень для масштабу рівним 100 для кожної осі (так Unity 3D компенсує параметр FileScale. щоб модель не виглядала на сцені так, ніби її перенесли туди з фільму "Джек - підкорювач велетнів"). Так Unity компенсує коефіцієнт масштабу при експорті (0.01 × 100 = 1), надаючи 3D моделі її реальний розмір.

Як експортувати 3d моделі з blender в ігрові движки unity3d і unreal engine і підготовка
На малюнку показана імпортована в Unity3D модель в форматі FBX з Blender, для якої був неправильно встановлений Scale Factor, рівний 0.01, що призвело до зменшення моделі, що, в свою чергу було компенсовано засобами движка Unitry3D, тобто масштаб моделі був виставлений рівним 100

Якщо ви не знаєте відповіді на питання, як додати 3d модель в unity з правильним масштабом, то є кілька способів вирішення даної проблеми. Не допомагає тут ні описаний скидання масштабу в Blender'е, ні зміна в ньому ж одиниць виміру. А чому б не залишити 3D моделі на сцені в Unity масштаб рівним 100, адже, іноді масштаб моделі змінюють навіть в процесі гри. Вся справа в тому, що для масштабованих складових 3D об'єктів (а також для моделей мають різні коефіцієнти масштабу) не працює динамічний батчінг, що призводить до зростання drawcall'ов, так що вдаватися до зміни масштабу 3D моделі в грі (особливо динамічному, коли ви протягом деякого часу поступово зменшується 3D модель кодом скрипта) потрібно тільки в тих випадках, коли це необхідно.

Якщо ви зіткнулися з подібним казусом з масштабом при експорті-імпорті 3D моделі, то виправити дану проблему можна як в Blender, так і в Unity3d.







Ви можете змінити значення параметра «Scale factor» у Unity. виставивши його рівним 100. Робити це краще до того, як ви помістіть ці 3D моделі на сцену, оскільки на сцені вони стануть в 100 разів більше і вам доведеться зменшувати ще і масштаб кожного розміщеного об'єкта на сцені вручну.

Існує також автоматичний спосіб виставлення Scale factor для імпортованих 3D моделей через використання скрипта.

В папці Editor створіть C # скрипт MeshImporterScale і скопіюйте в нього наступний код:

С # скрипт зміни масштабу імпортованих об'єктів в Unity 3D

де 100F - значення Scale factor для імпортованої 3D моделі.

Зверніть увагу, що даний скрипт НЕ ізменяетScaleфактор раніше імпортованих 3Dмоделей! Він буде працювати тільки для тих 3Dмоделей, що будуть імпортовані вUnity3Dпосле створення даного скрипта.

Рішення проблеми з масштабом в Blender

Давайте подивимося, як додати 3d модель в unity з правильним масштабом в Blender. Якщо ж вирішувати проблему в Blender, то варто відзначити, що виставляння масштабу для всієї сцени в Blender ніяк не вплине на коефіцієнт експорту та вам все одно доведеться виставляти Scale factor рівним ста.

Можна також працювати в Blender'е в масштабі 1: 100, що не дуже зручно, значить потрібно знайти інший спосіб, як додати 3d модель в Unity в масштабі 1 до 1.

А можна піти іншим шляхом і виставити коефіцієнт масштабування рівним ста в параметрах експорту в Blender.

Як експортувати 3d моделі з blender в ігрові движки unity3d і unreal engine і підготовка
На малюнку показано виставлення масштабу для експорту в Blender.

Після імпорту файлу FBX в Unity3D значення File Scale, як і належить, равноедініце.

Як експортувати 3d моделі з blender в ігрові движки unity3d і unreal engine і підготовка
На малюнку показана імпортована в Unity 3D модель в форматі FBX з виставленим в Blender'е масштабом при експорті становить 100.

Але при додаванні 3D моделі на сцену необхідно скидати масштаб (який в цьому випадку Unity3D автоматично виставляє рівним 10000) на одиницю.

Як експортувати 3d моделі з blender в ігрові движки unity3d і unreal engine і підготовка
На малюнку показана 3D модель, при перенесенні якої на сцену, Unity3D автоматично виставив компенсаційний масштаб рівним 10000. Синім гуртком обведений місто в нормальному масштабі (1: 1).

Також ви можете змінити коефіцієнт експорту в файлі export_fbx.py. що відповідає за експорт в Blender в форматі FBX6.1ASCII. Даний файл знаходиться в настановної директорії Blender'а, за замовчуванням (для 64-бітнойOSMSWindows) - в папці "Program FilesBlender FoundationBlender2.75scriptsaddonsio_scene_fbx". Знайдіть рядок

Property: «UnitScaleFactor», «double», «», 1

І замініть останню цифру на 100, так щоб вийшло:

Property: «UnitScaleFactor», «double», «», 100.

Хоча в меню експорту в Blender'е це ніяк не відіб'ється і цифра 100 не відобразиться замість 1 для Scale, але при експорті сцени або 3D моделі з Blender в форматі FBX 6.1 ASCII коефіцієнт File Scale в Unity3D буде тепер дорівнює 1.

Якщо ви не хочете лізти в код пітоновскіх скриптів Blender Ви також можете змінити значення для даного параметра вже в створеному файлеFBX в форматі FBX 6.1 ASCII. У файлі FBX знайдіть ту ж саму рядок і змініть значення на те, що вам потрібно, наприклад, з 1 - на 100.

Для бінарного FBX-формату (FBX7.4binary) відкрийте в тій же папці файл скрипта на Python export_fbx_bin.py і знайдіть рядки

scale_factor = scene_data.settings.global_scale / units_blender_to_fbx_factor (scene)

scale_factor = scene_data.settings.global_scale * units_blender_to_fbx_factor (scene)

і замініть їх на

scale_factor = 100 * scene_data.settings.global_scale / units_blender_to_fbx_factor (scene)

scale_factor = 100 * scene_data.settings.global_scale * units_blender_to_fbx_factor (scene)

В параметрах експорту в Blender дані зміни ніяк не позначаться, зате в Unity File Scale Буде дорівнює Одиниці (1).

В якому форматі і як додати 3d модель в Unity

І в завершенні статті хочеться відзначити, що ви можете вибрати одну з двох доступних версій, в якій можете експортувати свою 3D модель: FBX7.4binaryіліFBX6.1ASCII. Я віддаю перевагу перший варіант і, за винятком бага Unity3D або Blender, пов'язаним з File Scale, поки ще не стикався з проблемами, ні при експорті окремого заважав, ні при експорті анімацій, ні при експорті анімацій разом з Мешем. Ще однією причиною, чому мною була обрана версія FBX 7.4 binary, є той факт, що Blender - взагалі дивна тваринка, оскільки експортувати в ASCII вміє, а імпортувати в себе ж свій експортований файл в цій версії FBX - немає. Чукча - не читач, чукча - письменник! 🙂

p.s. програми та плагіни для конвертації FBX-файлів:

p.p.s. Специфікація формату FBX