Експортиране от Blender към Unity или защо старите тайни вече не са актуални
Коя версия да използвате
В момента версия 2.74.4.
Моите препоръки относно версиите. Силно препоръчвам да използвате 2 версии на Blender:
1)Официална стабилна версия, инсталиран exe от официалния сайт с регистрация в системата. Това е необходимо за някои приложения. Например двигателът на игратаUnity. Unity използва Blender за импортиране на *.blend файлове. Но ако приложението не вижда Blender регистриран в системата, файловете за смесване няма да бъдат импортирани в Unity.
Как правилно да експортираме модел към Unity от Blender?
Ще започна с малка образователна програма. Основният проблем с Blender е неговият лиценз. Тя е отворена. Съответно всичко, което използва или включва, също трябва да бъде отворено. Поради тази причина собственият FBX експортер/импортер на Autodesk не може да бъде включен в Blender. Но хората искаха двоичен формат и по-свеж. Поради тази причина Blender Foundation започна разработването на FBX експортер/импортер в Python. Тъй като на практика нямаше отворени спецификации за това как работи този формат, им беше трудно. Но основните трудности вече са преодолени. Поне тези, които пречеха на експорта към FBX.
В момента (аз лично проверих) Blender може: 1) Експортира данни за допирателните (Unity вече не се кълне, че шейдърът се нуждае от допирателни, но те не са в модела), както и да пече брадвите (тук е основната функция!). 2) Импортирайте данни за Tangents (той научи това малко по-късно, но - ура. - моделите се импортират от Hard Edge).
Основните функции можете да намерите на връзката в края на статията.
Как да подготвим модела за експорт
Първо трябва да изгладим модела. Можете да направите това в обектен режим:

Така че в режим на редактиране изберете всички върхове/ръбове/лица (A) и отворете контекстното меню Specials (W) и изберете Shade Smooth:

Страхотен. Сега трябва да посочим Hard Edge (В Blender -Sharp Edge). Изберете ги в режим на редактиране на ръбове и отворете контекстното меню на Edge (Ctrl + E):

Но какво се случва? Защо моделът все още е гладък?

„Трябва да добавите модификатор Edge Split“ – някои ще кажат сега! Но не. Edge split само разбива модела на части и няма нищо общо с експортирането на данни към FBX. Въпреки че това беше единственият начин да се пренесе вече счупен модел без Tangents в Unity.
Но сега, за да генерираме необходимите данни и да работим с Hard Egdes, трябва да поставим отметка в квадратчето Autosmooth с параметъра 180 градуса в менюто Vertex Data. Какво се случва в този случай. С тази отметка задаваме изглаждането на модела на 180 градуса - което всъщност е близо до екстремното.

Приключихме с генерирането на данни от Hard Edges. Сега трябва да се занимаваме с износа.
Справете се с брадви
Ако натиснем 1 на цифровата клавиатура в Blender, нашият изглед ще бъде центриран върху изгледа отпред. Като се има предвид, че това е пред модела, координатите на Blender изглеждат така: предната ос е Y-, горната е Z+, а страната е X+- (в този случай + е вляво, когато гледате отзад на модела напред, както в игрите от трето лице). Запомнете, че ако гледате напред зад модела, тогава гърбицата трябва да е отляво и отгоре. В същото време всички данни за местоположение/въртене/мащаб са съответно 0.0.0 и 1.1.1.
Тази снимка показва кои оси са в Blender и какво ще станат в Unity.

Меню за експортиране: 1) Задължителна отметка е маркирана в бяло. използвамза създаване на модели за проекта в почти един blend файл (за удобство). Затова, за да не експортираме всичко, експортираме само избраното. 2) Най-важният параметър е маркиран в синьо. Това е възможност да ПЕЧЕТЕ координатите, от които се нуждаете, във FBX файл. Тъй като в Unity предната ос е Z+, а горната ос е Y+, ние уточняваме това. 3) Това, което е маркирано в червено, е това, което ще бъде експортирано заедно с модела във FBX - Tangents. С което Unity ще раздели модела вече в двигателя.

Импортирайте модела в Unity
Отваряме модела в Unity и виждаме несъответствия. Импортираният модел е огледален по оста X. Това може да се дължи на факта, че оста X е обърната.

Затова се връщаме към експортера на Blender и вместо Z + в Forward задаваме Z-, както беше първоначално. Ура! Всичко е точно. И никакви извращения.

Работа с импортиране на анимация
С костите няма нищо особено, но ще го подредим по ред.
Нека създадем прост куб, опънат на височина. Нека добавим още ръбове за костите.

Нека добавим 3 кости и да го използваме като Armature Deform: Автоматично тегло, така че да не страдаме от разпределението на теглото.


Осите на костите са стандартни (т.е. костите не са завъртани след създаването):

Всичко е наред с модела:

Но костите не са наред:

Какво кара модела да се върти при нулиране на трансформации:

Но да слезем едно ниво надолу. И виждаме, че кореновата кост също е завъртяна. Като цяло при тази ситуация при експортиране от Blender се създава ненужно празно пространство пред йерархията на костите. Следователно можете спокойно да се отървете от него.

Всички кости с правилни оси в цялата йерархия.
Относно различни данни в Blender иединство. Данните всъщност не са различни. Просто Blender в режим на редактиране показва броя на върховете на мрежата. Би било поне странно, ако Blender показва общото количество данни.
Кубът, който експортирахме в Unity, има 24 върха в Blender в началото:
И 72 върха в Unity:

Но ако го направите в Blender - Render:
Тогава виждаме, че те също са 72. 72 в този случай е броят на данните от Vertex. Това са мрежови върхове, UV0, UV1 (колко от тях присъстват и колко поддържа двигателят), както и кости и дори Vertex Color.