Данная часть статьи является инструкцией по тому, как экспортировать из Blender в Unity 3D модели. В данной части статьи я продолжу рассказывать про особенности экспорта 3D моделей из Blender и импорт 3D моделей в Unity3D, Unreal Engine и другие игровые движки. В данной части статьи-уроке будет рассказано про ориентацию 3D модели в 3D пространстве, про локальные оси 3D модели и про глобальные оси 3D модели.
Как экспортировать из blender в unity 3D: ориентация 3D модели в пространстве. Локальные оси.
Еще одним важным параметром, особенно для нестатичных и/или анимированных моделей является направление осей (системы координат), в которой будет экспортирован персонаж. Проблема экспорта из Blender’а в Unity3D не раз упоминалась в статьях на данном сайте (и еще не раз я сошлюсь на эту статью).
Повторю здесь то, что уже было сказано в статье Быстрый старт из мейкхьюмен в юнити и других статьях на сайте. В Blender’е направленной вверх осью, так же как и в Unreal Engine 4, является ось z, а осью, определяющей направление «лица» модели (forward, перед), является ось минус игрек (-y). В UE4 передом 3D модели считается положительная направляющая оси x. В свою очередь, в Unity вертикальной осью является ось y, а «передом» модели — ось z.
Таким образом, для правильного экспорта 3D модели для Unity в Blender’е модель должна смотреть лицом в направлении оси -y (минус у), а «тыковкой-маковкой» — в направлении положительной оси z.
Как экспортировать из blender в Unity 3d, Unreal Engine, UDK, CryEngine, Amazon Lumberyard. Но не все так просто, поскольку поворачивая 3D модель (или несколько 3D моделей) в режиме объекта, вы изменяете направление его локальных осей, так что подобные трансформации 3D модели, должны завершаться сбросом углов поворота модели на значения по умолчанию.

Чтобы сбросить углы поворота модели и совместить локальные оси 3D модели (или оси сразу нескольких 3D моделей) с глобальными осями координат, выберите 3D модель в режиме объекта и нажмите сочетание клавиш Ctrl+A, после чего в открывшемся меню Apply выберите «Rotation«. Как вы могли заметить, в данном меню, помимо сброса поворота модели и всего остального, присутствует ещё и пункт сброса масштаба модели. Да, после масштабирования 3D модели на сцене в режиме объекта значение параметров масштабирования также необходимо сбросить на значения по умолчанию, выбрав в упомянутом выше меню «Scale«, но для того чтобы сохранить нам нервы и время разработчики добавили пункт меню “Rotation & Scale”, который позволяет сбросить сразу как значения для масштаба 3D модели, так и для поворота.
Однако и этого мало, поскольку в Blender’е существует небольшой баг с поворотом модели при экспорте. Допустим, вы проделали описанные выше действия и сориентировали 3D модель так, что ее «перед» смотрит в сторону отрицательной оси y, а «верх» — в сторону z. Предположим, что вы сбросили значения для поворота и масштаба на значения по умолчанию. Если сейчас вы экспортируете 3D модель и откроете ее в Unity (независимо от того, какие оси вы выставите в меню экспорта), то в окне ассетов, «раскрыв» импортированного персонажа, вы увидите, что его меш повернут на 90 градусов.
На рисунке показана 3D модель, импортированная в Unity3D с настройками Blender по умолчанию, т.е. сброшенными значениями для поворота.
Вы решаетесь добавить 3D модель на сцену. Поместив персонажа на сцену, вы не заметите ничего особенного, пока не включите отображение локальных осей импортированного персонажа, которые, как оказывается не совпадают с глобальными осями и, когда приходит время двигать 3D модель в локальных координатах, вы видите, что модель двигается совсем не туда, куда вы задумали.
Вы смотрите значения поворота/вращения объекта в инспекторе. Ага! Вон оно — 3D модель самостоятельно развернулась при переносе ее на сцену, игровой движок Unity3D самостоятельно «докрутил» модель, чтобы она была правильно ориентирована. Вы сбрасываете значения поворота на нулевые значения, будучи уверены, что все встанет на свои места, но после сброса значений 3D модель вообще приняла горизонтальное положение, уткнувшись лицом в пол.
На рисунке ниже показана 3D модель девушки, ориентированная в редакторе Blender для трех различных игровых движков.

Ниже на рисунке ниже показана эта же 3D модель в окне проекта Project, импортированная в Unity3D с различными направлениями локальных осей.
На рисунке показаны импортированные в Unity 3D модели и подготовленные для трех разных движков сверху вниз: Blender, Unreal Engine 4 и Unity.
Как можно заметить, после импорта 3D модели повернуты на соответствующие направлению локальных осей углы. Давайте посмотрим, как они будут выглядеть после добавления их на сцену в Unity.
Поместив персонажа на сцену, вы не заметите ничего особенного, пока не включите отображение локальных осей импортированного персонажа, которые, как оказывается, не совпадают с глобальными осями в Unity 3D.

Так как экспортировать из blender в Unity 3d, Unreal Engine, UDK, CryEngine, Amazon Lumberyard? Как было сказано выше, вылечить это можно путем создания пустышки, в которую следует перетащить модель персонажа в окне Иерархии в Unity, но это можно считать костылем, ведь хочется правильно экспортировать 3D модель, чтобы не было дополнительной пустышки.
Почему модель импортируется с перевернутыми осями? Мы же все сделали правильно… Или нет? Не совсем. Давайте посмотрим в параметры экспорта, возможно, здесь что-то не то?
В настройках осей для экспортируемой модели по умолчанию стоит Forward: -y, Top: z, т.е. оси перевернуты и Blender предлагает в качестве “переда/лица” модели использовать отрицательное направление оси игрек, а в качестве «верха» — ось зэд, что нас никак не устраивает (правильное назначение осей для Unity приведено выше). Значит необходимо изменить их на систему координат Unity. Выставляем в настройках для осей нужные параметры и экспортируем модель. Вуаля! Нет, не «Вуаля!» — изменение осей ни на что не влияет! Изменяя параметры осей в меню экспорта, мне так и не удалось изменить направление осей экспортированной и импортированной в Unity 3D модели.
Чтобы понять, как экспортировать из blender в Unity 3d, и правильно перенести 3D модель в Unity3D и другие игровые движки, нужно немного немного потанцевать с бубном. На время забудем о локальных координатах в Blender и сориентируем 3D модель, как показано на рисунке выше: вертикально (z – верх, —z низ модели) и лицом в направлении оси —y. Теперь выберите 3D модель Правой Кнопкой Мыши и в виде справа (клавиша 3 на дополнительной цифровой клавиатуре) поверните ее вокруг оси x по часовой стрелке на 90 градусов, для чего нажмите клавишу ‘R‘, зажмите клавишу Ctrl для поворота с шагом и перемещайте мышь, пока под активным окном (в котором вы поворачиваете 3D модель) значение угла поворота не достигнет значения в 90 градусов и нажмите Левую Кнопку Мыши. Теперь сбросьте значения поворота и масштаба модели на значения по умолчанию (Ctrl+A и выберите «Rotation and Scale«) и поверните модель в исходное положение (на минус 90 градусов вокруг оси x) и можете смело экспортировать 3D модель для использования в Unity3D.

Описанный выше процесс дополнительной подготовки модели для экспорта в Unity также может быть выполнен посредством использования комбинации горячих клавиш и их сочетаний, а именно: R->X->90->Enter->Ctrl+A-> Выберите Rotation and Scale-> R->X->-90, т.е. нажмите клавишу ‘R’, затем клавишу ‘X’, затем клавишу ‘9’ и ‘0’, после чего нажмите клавишу ‘Enter’. Теперь нажмите сочетание клавиш Ctrl+A и выберите «Rotation and Scale«. Далее нажмите клавишу ‘R’, затем клавишу ‘X’, затем клавишу ‘—’, ‘9’ и ‘0’, после чего нажмите клавишу ‘Enter’.

Вот и подошла к концу очередная часть уроков о том, Как экспортировать из blender в Unity 3d, Unreal Engine, UDK, CryEngine, Amazon Lumberyard.
Автор: Максим Голдобин
goldmaxval@gmail.com