Компьютерная графика → 3D модели и анимация. Что это и где искать?

В этой статье вы узнаете:

  - Что такое 3D модель?

  - Что такое текстура и карты?

  - Где найти модели бесплатно?

  - Что такое анимация и риг?

  - Как применить анимацию к модели?

  - Как всё это импортировать в Unity

Начнем с основ.

3D (англ. 3 dimensions - 3 размера) модель – это объект, который имеет координаты в трёх плоскостях (длина, ширина, высота).

 

3D модели сегодня широко используются в различных сферах:

  - Игры

  - Кино

  - Мультфильмы

  - 3D печать

  - Медицина

  - Искусство и т.д.

 

Благодаря 3D моделированию картинка в играх и мультфильмах стала более походить на наш мир. Давайте разберемся из чего же состоит 3D модель.

Если говорить просто, то каждая модель образуется путем объединения точек в линию, а линий в плоскость. Если использовать термины, то вершины объединяются в грани, а грани составляют полигон.

 - Вершина (Vertex, Vertices) – это абстрактная геометрическая точка с тремя координатами. Она является крайней точкой либо замкнутого полигона (плоского многоугольника), либо объёмной фигуры.

 - Грань (Edge) – отрезок прямой, соединяющий две вершины. Она является ограничителем для полигонов.

 - Полигон (poly, polygon) – это плоская многоугольная фигура (обычно это треугольники и четырёхугольники), из множества которых состоит поверхности трёхмерной фигуры.

В итоге объединив полигоны мы получаем вот такую модель.

Сейчас она не имеет никакого цвета, потому что мы не задали ей текстуру.

Тексту́ра — изображение, накладываемое на поверхность модели для придания ей цвета, окраски или иллюзии рельефа. Текстуру можно легко представить как рисунок на поверхности скульптурного изображения.

Существует также такое понятие, как карты текстур. Они показывают программе в каком месте модели применить нужный эффект. Рассмотрим некоторые карты на примере нашей модели.

Albedo - контролирует основной цвет поверхности. Это может быть просто цвет, либо рисунок, наносимый поверх модели.

Specular Map (карта отражения) – текстура, которая показывает способность отражения материала. Она содержит в себе пиксели в черно-белой цветовой гамме. Чем светлее пиксель, тем больше способность материала отбивать свет и тем ярче на нём блики от света. Соответственно, чем темнее пиксель, тем матовее становится материал и теряет своё свойство отражать свет.

Normal map (карта нормалей) – это карта, которая увеличивает визуальную детализацию 3d-модели без добавления дополнительных полигонов.

Opacity map (карта непрозрачности) – текстура, которая показывает прозрачность материала. Чем светлее пиксель, тем меньше прозрачность участка материала.

Конечный результат

Бесплатно модели можно скачать:

https://sketchfab.com/

https://www.turbosquid.com

Sketchfab предоставляет возможность покрутить модель и посмотреть все карты текстур)

Главное при скачивании выбирайте формат fbx. FBX хранит в себе все необходимые аспекты модели:

 - Саму модель

 - Текстуру

 - Карты

 - Анимации

Если его нет, то obj или blend. Если вы хотите в дальнейшем сделать анимацию персонажа, то ищите модели в позе t-pose как на картинках выше.

Переходим к анимации

Анимация – «оживление» модели с помощью движения. Не будем глубоко копаться в анимации, просто немного о риге.

Риггинг (rigging) - это процесс подготовки персонажа к анимации, включающий создание и размещение внутри трёхмерной модели рига (от англ. Rig - оснастка), виртуального "скелета" - набора "костей" или "суставов" (bones, joints), установления иерархической зависимости между ними и значений возможных трансформаций для каждой из этих костей.

Грубо говоря, вы помещаете внутрь вашей модели скелет и во время создания анимации вы будете работать со скелетом.

Вам очень повезёт, если вы найдёте бесплатную модель со скелетом, так как это почти отдельная профессия и достаточно трудный процесс.

Но можно сделать анимацию и без рига и бесплатно. Поможет сервис https://www.mixamo.com/

На главной странице вы увидите модель, к которой будут применяется анимации и список самих анимаций. Так же вверху есть вкладка персонажи, где вы можете выбрать другого персонажа и применить все эти анимации к нему. Но что, если мы хотим добавить свою модель?

Нажимаем кнопку Upload Character и перетаскиваем нужный нам файл в поле или выбираем файл из папки. Важно!!! Выбирайте файл fbx, obj. Файл формата blend не поддерживается данным сервисом.

Если у вашей модели нет скелета, то сервис автоматически предложить создать подобие скелета.

Расположите маркеры как показано на примере справа и нажмите Далее.

Теперь вы можете выбрать любую анимацию, и она применится к вашей модели. На правой панели есть ползунки позволяющие кастомизировать анимацию. Если вы выбираете анимацию для движения персонажа (ходьба, прыжок и т.д.), то обязательно выберите пункт In place. Если его нет, то все хорошо.

После того как выберете нужную анимацию нажмите на кнопку Download. Выберите формат FBX, параметр With Skin, если модель была загружена с текстурами, Frames Per Second выберите на ваше усмотрение, Keyframe Reduction – none. Жмём Download и вот у вас готовый файл с анимацией.

Импорт в Unity

Чтобы импортировать объект в Unity достаточно перенести его, или папку с моделью и текстурами если это obj модель, в поле Project. Перетащите модель в поле Hierarchy и она появится в вашей сцене. Теперь применим анимацию.

Создайте новый Контроллер Анимации (поле Project -> Create -> Animation Controller) и перетащите его на нашу модель в Иерархии. Откройте окно Animator (Window -> Animation -> Animator) и перетащите туда анимацию mixamo.com из нашей модели в поле Project.

Если необходимо сделать анимацию зацикленной, то выберите модель в поле Project, раздел Animation, найдите пункт LoopTime и установите галочку. Тадааааа.

Теперь применим к объекту все текстуры и карты.

Создадим новый материал (поле Project -> Create -> Material) и в поле inspector вы увидите свойства этого материала. Пока что он белый и без всяких карт. Перетащите вашу папку с материалами в проект и перетащите карту с названием Diffuse в поле Albedo, Normal в Normal Map, Gloss в Metallic. Перетащите этот материал на нужную часть модели. Так придётся сделать материалы для каждой отдельной части модели.

Итог

1800 0
Христофориди Дмитрий Иванович