Импорт 3D ассетов в Unity. #6

Unity    2018-02-06 20:53:48     тег: Курс по Unity

В этом уроке я расскажу как подготовить ассет для экспорта в Unity. Ассетом принято называть любой цифровой объект, будь это 3D модель, картинка или звуковой файл. В программе 3ds max предназначенной для создания 3D моделей, нам нужно сделать несколько изменений нашего ассета, а именно настроить его масштаб. Настройка масштаба важна, так как все наши объекты в конечном итоге должны соответствовать шкале масштабирования Unity. В 3ds max у меня есть несколько ассетов, и сейчас я включу их отображение. Теперь кроме бочки в файле также есть модель персонажа, что дает представление какого размера должна быть бочка.

В дальнейшем когда мы будем использовать 3D модели в среде Unity, нам нужно, чтобы эти пропорции сохранились, и при этом соответствовали шкале масштабирования Unity. Нажмем CTRL+Z, выберем бочку и изолируем ее от других объектов. Теперь наша задача сбросить в значения по умолчанию любые трансформации и позицию объекта.

Для того чтобы сбросить масштаб перейдем к утилитам и нажмем кнопку Reset XForm после чего появится кнопка Reset Selected, нажав ее выполнится сброс масштаба объекта. Затем перейдем на вкладку Modify, и увидим, что к этому объекту был применен модификатор изменения.

Следующее, что я покажу не имеет прямого отношения к Unity. Тем не менее это будет полезно знать. Для быстрого удаления модификаторов выделим оба объекта, и щелкнем по ним правой кнопкой мыши. В появившемся контекстном меню выберем Convert to: Convert to Editable Poly. При этом объект будет возвращен к изначальной 3D геометрии.

Теперь нам нужно изменить опорную точку объекта, называемую часто просто pivot. Нам необходимо сделать так, чтобы ось Y на объекте была направлена вверх. В данный момент вверх направлена ось Z. Чтобы изменить направление оси мы просто повернем пивот. Чтобы это сделать перейдем на вкладку Hierarchy, и укажем, что будем производить изменения только с пивотом.

Выберем инструмент вращения и повернем пивот вдоль оси X в направлении зеленой стрелки, таким образом чтобы ось Y стала вверху. Сделаем тоже самое для металлических обручей бочки. После этого можем отключить управление пивотом. Теперь выделим весь объект, и перейдем в меню «File» - «Export» - «Export Selected».

Но прежде чем экспортировать объект, важно проверить размещение пивота. Выделив бочку вы увидите, что пивот находится в самом низу. В целом это нормально, но при желании мы всегда можем изменить ее местоположение при помощи инструментов Unity. Итак, оставим пивот внизу и продолжим экспорт объекта. Выберем всю бочку, и экспортируем ее открыв меню «File» - «Export» - «Export Selected».

Укажем папку с нашим проектом, в ней папку Assets, а в ней папку Meshes, именно сюда мы сохраним нашу 3D модель бочки. Если у вас нет папки Meshes создайте ее в папке Assets. Как вы знаете из прошлых уроков папка синхронно появится в Unity. Откроем Unity и посмотрим в раздел Project, как вы видите здесь появилась папка Meshes.

Но вернемся в 3ds max и дадим название файлу - Barrel, при этом оставим формат FBX. Это - популярный формат файла, который поддерживается многими 3d редакторами и может быть использован для разработки игр на Unity. Этот формат хорош тем, что позволяет внутри файла экспортировать материалы, анимации и текстуры.

И это не полный список возможностей формата FBX, но об этом поговорим позже, а пока нажмем кнопку сохранить. Откроется диалоговое окно опций экспорта FBX. В разделе Geometry как правило мной используются опции Smoothing Groups и Tangents and Binormals. Также если ассет содержит анимацию, при экспорте мы можем выбрать какие кадры нам нужно экспортировать.

В нашем случае мы просто сохраняем объект как статический меш. Нам не нужны камеры и освещение поэтому я их отключу. Однако, если нам необходимо экспортировать наши текстуры, которые применялись к нашему мешу, нам нужно использовать опцию Embed Media. Но у меня нет текстур, поэтому я не буду включать их использование. В разделе Units видно, что коэффициент масштаба Scale Factor равен 1, то есть объект будет экспортирован в оригинальном размере.

Включенная опция Automatic означает, что будут использованы единицы измерения установленные по умолчанию, у меня это метры. Я предпочитаю использовать метры в Unity. Но если вы измените единицы измерения, то заметите, что Scale Factor может стать больше или меньше 1, и это означает, что файл в котором хранится ассет, не был настроен на метры. Поэтому, чтобы установить нужные нам единицы измерения по умолчанию нажмем Cancel и перейдем в меню Customize - Unit Setup.

Нажмем кнопку System Unit Setup. И как вы можете видеть у меня 1 unit равен 1 метру. Эти настройки следует выполнить до того как вы приступите создавать объекты. Но что будет если я продолжу работу не задав нужные мне единицы измерения. В принципе ничего страшного не произойдет, но в конечном итоге если я хочу работать с метрами мне придется изменить единицы измерения на метры и затем масштабировать объект до нужных размеров.

Отобразив персонажа мы можем видеть какого размера нужно сделать бочку. Итак, теперь, когда мы сделали все что нужно, давайте продолжим  экспорт. Выполнив соответствующие настройки нажмем OK, и экспортируем файл. После этого перейдем в Unity и посмотрим появился ли он там. Как вы можете видеть в папке Meshes есть игровой объект Barrel. Если щелкнуть по нему левой кнопкой мыши, то на вкладке Inspector мы увидим параметры импорта.

В разделе Model мы можем настроить масштаб объекта. В большинстве случаев используется масштаб равный единице. Но если ваша модель слишком мала вы всегда можете настроить масштаб, например увеличить до двух. Чтобы применились изменения необходимо нажать кнопку Apply. После чего объект увеличился в два раза.

Но давайте его вернем к исходному масштабу. Как вы видите объект имеет множество различных опций для импорта. Это может быть видимость, камеры, освещение, которые при необходимости можно изменить. Но вряд ли вы увидите какие-либо изменения, так как если вы помните мы отключили камеры и освещение. Если  при экспорте у вас на сцене были скрытые объекты, то опция Import Visibility позволит вам отображать или скрывать эти объекты.

Также здесь мы видим Normals & Tangens. Обычно Normals я оставлю в значении Import, а Tangens в значение Calculate Tangent Space, то есть расчеты будет производить среда Unity. Это позволит картам нормалей корректно отображаться на сцене.

Говоря об импортируемых материалах, когда вы создаете 3D объект, важно создать для него материал и использовать его в 3D-пакете. Так, например, если мы снова откроем 3ds Max, и перейдем в браузер материалов, то увидим, что у меня есть материал, который называется Material #2.

Поэтому когда я экспортировал ассет включая материалы, при добавлении объекта на сцену Unity мы увидим этот материал среди наших файлов. Давайте откроем папку Materials, в ней вы увидите, что используется Material #2. Но как вы понимаете это имя текстуры нам ни о чем не говорит. Нам нужно максимально понятно назвать текстуру.
 
Поэтому, чтобы показать правильность рабочего процесса, вернемся к 3ds Max, и изменим название материала на Barell. После чего закроем текстуры и заново экспортируем нашу бочку. Просто перезапишем ее поверх существующей. Все настройки которые мы делали ранее остаются прежними, и все, что нам нужно сделать, это нажать ОК. Теперь, если мы вернемся в Unity, вы увидите, что был создан новый материал для бочки.

При этом старый материал останется, но мы можем без проблем его удалить. Но если бы я удалил материал который используется в данный момент на объекте, то слот который содержит ссылку на материал, будет содержать ошибку, и вместо материала будет отображаться пурпурной цвет. И если вам вдруг придется с этим когда-то столкнуться, вы будете знать где это исправить.

Теперь, когда мы знаем как импортировать ассет со статическим мешем, рассмотрим импорт анимированного ассета, но уже в следующем уроке.