b733e4
Научим создавать свои игры, сайты и приложения
Начать учиться
Modal window id: wid-new-form-initschool-popup

3D-анимация в Unity

3D-анимация в Unity
12.3K

«Движение — это жизнь», — сказал когда-то Аристотель. Сегодня мы научимся оживлять объекты и персонажей в Unity, используя анимацию.

В Roblox можно больше, чем просто играть
Научим детей и подростков программировать и создавать миры в Roblox
В Roblox можно больше, чем просто играть

Что такое анимация

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

С помощью анимации можно визуально оживить любой объект, персонажей, задний фон в игре и т. д. Анимация используется повсеместно: в рекламе, кино, играх, на телевидении. В зависимости от целей и вида анимации, для ее создания применяют множество разнообразных программ. Мы будем использовать Unity.

Modal window id: popup-professionsbox

Откуда берется анимация в Unity

2D-анимация

2D-анимация спрайтов — это просто набор картинок, на которых объект находится в разных состояниях. Быстрая смена этих картинок даёт анимацию.

Исходный набор картинок

Исходный набор картинок

Итоговая анимация

Итоговая анимация

Картинки можно нарисовать самостоятельно в Photoshop, Illustrator или любой другой программе для работы с изображениями. Далее всё это можно быстро настроить инструментами Unity и превратить в анимацию.

В этой статье речь пойдет о 3D-анимации, и с ней всё немного сложнее — это не просто картинки.

3D-анимация

Анимацию объектов (перемещение, вращение, изменение размера, смена цвета) можно легко сделать самостоятельно в самом Unity, используя окно Animation.

А вот анимацию персонажей уже так просто не сделать. Персонаж должен быть подготовлен, у него должен быть скелет, то есть набор виртуальных «костей», которые образуют дерево и отражают структуру модели. Процесс создания скелета называется риггингом. Этим обычно занимаются либо сами моделлеры на этапе создания модели, либо аниматоры.

Риг персонажа

Уроков по риггингу и созданию своих 3D-моделей в интернете предостаточно, нужно лишь ваше время и желание. Я предпочитаю брать уже готовые модели с подготовленным риггом и анимацией под них.

Обычно анимации под 3D-модели создаются в той же программе, в которой эту модель и делали, например Maya или Blender.

В Unity создать свою анимацию персонажа можно, но это очень долгий процесс. На самом деле анимацию персонажей редко создают вручную, обычно для этих целей используются специальные костюмы, а процесс её создания называется Motion Capture. Вручную происходит только так называемая чистка, в ходе которой исправляют недочеты в записанной анимации.

Если вы всё-таки решите сделать анимацию персонажа вручную, то советую использовать Cascadeur — это удобная бесплатная программа для создания физически корректных анимаций. Потребуется только компьютер, руки и время.

Я предпочитаю использовать готовую анимацию, а если не нашел ничего подходящего, то заказываю её изготовление у профессионалов по анимированию. Если же анимация несложная, то создаю ее сам прямо в Unity.

Готовые ассеты 2D-анимаций и 3D-персонажей можно найти на многих интернет-ресурсах, например, в Unity Asset Store или Mixamo.

Сегодня мы создадим свою анимацию 3D-объекта, а также научимся использовать готовые анимации для анимирования персонажа.

Получи больше пользы от Skysmart:

Как сделать анимацию в Unity для 3D-моделей

В Unity для анимации мы будем использовать Animation и Animator.

  • Animation. Это окно представляет из себя таймлайн (временную шкалу), на котором вы можете анимировать любые объекты, используя ключевые кадры. Ключевыми кадрами или ключами называются кадры, в которых происходят изменения.

  • Animator. Это система, которая управляет анимациями. Animator воспроизводит файлы анимации, как плеер — музыку. Он позволяет гибко выстроить дерево из анимаций со всевозможными ветвлениями. Эта система анимации в Unity называется Mecanim.

Теперь, когда мы разобрались с инструментами, приступим к созданию простой анимации 3D-модели в Unity. К примеру, у нас в игре есть собираемый объект, и мы хотим, чтобы он вращался. Мы можем сделать эту анимацию двумя вариантами — через Animation или через код. Посмотрим, как ее реализовать через Animation.

  1. Создадим пустой объект, сбросим его Transform (позиция и поворот на ноль).

    Как сделать анимацию в Unity для 3D-моделей. Шаг 1

  2. Добавим в этот пустой объект наш объект для анимации и тоже сбросим в ноль.

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

  3. Откроем окно Animation. Оно включается через Window → Animation → Animation (Ctrl + 6).

    Как сделать анимацию в Unity для 3D-моделей. Шаг 3

  4. Выберем объект для анимации и нажмем Create в окне Animation. Создадим папку для хранения анимаций, дадим название нашей анимации и сохраним ее в этой папке.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 4

  5. В окне Animation есть пульт управления.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 5, рисунок 1

    Красный кружок — это запись. Можно нажать на него, переходить по кадрам и вручную менять параметры объекта прямо на сцене — все ключи будут автоматически записывать в выбранный кадр.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 5, рисунок 2

    Следующие кнопки — стандартные: перейти в начало анимации, перейти на предыдущий ключ, проиграть анимацию. Маленькое окошко справа показывает, в каком кадре вы сейчас находитесь.

  6. Нажмём AddProperty и выберем Rotation.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 6

    На таймлайне появятся ключевые кадры (ромбики) в начале и в конце анимации. Нажимая на линейку над таймлайном, можно перемещаться по нему.

  7. Перейдем к первым кадрам. Развернем Rotation в левом меню, там должны быть все оси на 0.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 7

  8. Перейдём в последние ключи и выставим там ось Y на 360. Таким образом наш объект сделает один полный оборот за всю анимацию.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 8

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

  9. Проигрываем анимацию, нажав на воспроизведение в левом меню. В данный момент наша анимация плавно стартует и плавно останавливается. Наша задача — сделать анимацию равномерной.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 9

  10. Нажмём на самом первом, верхнем ключевом кадре ПКМ и выберем пункт меню Both Tangents → Linear, таким образом задав линейную скорость.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 10

    То же самое сделаем и для последних кадров. Теперь наша анимация проигрывается с одинаковой скоростью.

  11. Дополним анимацию движением печеньки вверх-вниз. Для этого нажмем Add Property → Position. В начале все оси Position со значением 0, в конце 0. Перехожу в середину анимации и ставлю новый ключ, выставляю позицию по Y на 1. Поставить дополнительный ключ можно, нажав под пультом на ромбик с плюсом.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 11, рисунок 1

    Теперь наша печенька анимирована по двум свойствам.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 11, рисунок 2

  12. Если выбрать печеньку в иерархии, то в окне Inspector можно заметить, что добавился компонент Animator. Он и воспроизводит нашу анимацию. Более подробно мы рассмотрим его чуть позже.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 12, рисунок 1

    Но если два раза кликнуть на Controller, вы попадете в окно Animator.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 12, рисунок 2

  13. В папке, в которой вы создавали анимацию, появился вот такой файл с ней.

    Как сделать анимацию в Unity для 3D-моделей. Шаг 13

Теперь примерно то же самое через код:

Как сделать анимацию в Unity для 3D-моделей через код

Этот скрипт нужно просто кинуть на анимируемый объект, чтобы анимация заработала.

3D-анимация персонажа в Unity через готовые анимации

  1. Скачиваем подходящего персонажа — на нём должен быть подготовленный риг. Иногда персонажи идут сразу в паке с анимациями конкретно под этого персонажа. Обычно скелеты делаются по определенным канонам, поэтому в большинстве случаев анимации и персонажа взаимозаменяемы. В редких случаях анимация может не работать на определенном скелете, если не хватает некоторых соединений или они, наоборот, в избытке.

    Для нашего примера я взял персонажа отсюда.

  2. Скачиваем анимацию. Ее можно поискать в Asset Store или в крутом бесплатном сервисе Mixamo. Я брал отсюда.

  3. Если выбрать модель персонажа, то в окне Inspector в разделе Rig нужно убедиться, что выбран пункт Humanoid. Обычно это уже сделано по умолчанию.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 3

  4. Добавляем персонажа на сцену.

  5. В окне Project создаём папку Animation, а внутри ПКМ → Create → Animator Controller. Это компонент позволит нам настраивать переходы между анимациями.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 5

  6. Открываем Animator Controller двойным кликом.

    Слева от аниматора есть окно со слоями (Layers), здесь можно удобно разбить анимации на разные слои. Например: анимации бега в одном слое, анимации прыжка в другом и т. д. Так как анимаций для одного только бега может быть очень много (бег влево, бег вправо, вперёд, назад), и если это всё делать на одном слое с другими действиями — рано или поздно вы запутаетесь в этом хаосе. Но сегодня мы разбираем только один небольшой пример, поэтому не будем использовать слои.

    В главном окне аниматора есть 3 состояния: Exit, Any State, Entry. В рамках этой статьи мы будем использовать только Entry.

    Entry — это точка входа в анимацию. При запуске игры сразу начнет проигрываться привязанная к Entry анимация.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 6

  7. Находим нужную анимацию. Нажав на файл анимации, можно увидеть её предпросмотр в окне Inspector.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 7

  8. Переносим эту анимацию в окно аниматора. Она автоматически привяжется к Entry, а значит, будет воспроизводиться сразу со старта.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 8

  9. Выбираем нашего персонажа и переносим на него файл Animator Controller. Он сразу прицепится к компоненту Animator.

  10. Запускаем игру. Первая анимация должна запуститься автоматически. Готово — у нас получилась анимация движущейся 3D-модели в Unity!

    Что делать, если ваша анимация останавливается после проигрывания, а вы хотите зациклить ее? Найдите файл с этой анимацией, выберите его и в инспекторе найдите галочку Loop.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 10, рисунок 1

    Отлично! Теперь пришло время сделать переход между анимациями.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 10, рисунок 2

  11. Добавим ещё одну анимацию в наш аниматор. В этот раз она не привязалась, никакого перехода не создалось.

  12. Нажимаем ПКМ на предыдущей анимации, выбираем Make Transition (Создать переход) и проведём стрелочку к нашей второй анимации.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 12

  13. Нажмем на эту стрелочку, в инспекторе видим основные настройки перехода.

    Из важных тут галочка Has Exit Time: если она включена, то при переходе на следующую анимацию аниматор ждёт, пока полностью завершится предыдущая анимация и только после этого начнет следующую, если же галочка не стоит, то переход происходит сразу.

    Также на графике можно отредактировать длительность перехода, передвигая ползунки.

    Conditions (условие перехода) — это свойство, в котором мы можем задать, при каких обстоятельствах переходить в эту анимацию.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 13

  14. Создадим параметр для перехода. Выбираем в окошке слева от аниматора вкладку Parameters, нажимаем на «+», добавляем Bool и даём ему понятное имя.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 14

    Тут стоит отметить, что параметры могут быть разными: int, float (переходы будут зависеть от их значения), bool (true, false), и Trigger (Выполняется один раз и отключает анимацию).

  15. Снова выбираем стрелочку перехода, в свойстве Conditions жмём «+» и добавляем переход со значением True.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 15

  16. Создаём переход обратно и так же в свойстве Conditions жмём «+» и добавляем наш переход со значением False.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 16

  17. Можно запустить игру и ткнуть в галочку у нашего параметра Kick в окне Animator, увидим как анимация поменялась.

  18. Сделаем переход по нажатию кнопки. Создадим скрипт и сразу закинем его на персонажа.

    3D-анимация персонажа в Unity через готовые анимации. Шаг 18

Теперь, пока мы держим клавишу, проигрывается другая анимация. Стоит нам клавишу отпустить — анимация возвращается в исходное положение.

Готовая анимация

Разные параметры вызываются по-разному:

Вызов параметров

Как аниматор понимает, какую часть тела двигать?

Мы уже говорили про Rig. Так вот, на каждую часть тела назначены свои ключи анимации. Если вы попробуете открыть анимацию персонажа двойным кликом, то увидите примерно такую картину:

Как аниматор понимает, какую часть тела двигать. Рисунок 1

Выглядит устрашающе. 😱

Каждый ключ привязан к определенной части тела. В Unity у анимированных персонажей есть такой компонент как Avatar. Он строится на основе рига персонажа, и каждую часть тела персонажа можно привязать вручную.

Как аниматор понимает, какую часть тела двигать. Рисунок 2

Вот мы с вами и разобрали самые основы работы с 3D-анимацией в Unity. Есть ещё много чего, что я не затронул в этой статье. На самом деле это очень обширная тема и её более глубокое изучение займет у вас не один день. Ну а если вы захотите научиться создавать свои игры с красивой анимацией — жду вас на курсе по Unity в Skysmart Pro.

Комментарии

Открыть диалоговое окно с формой по клику
Бесплатные шпаргалки
Бесплатные шпаргалки
Бесплатные шпаргалки
Научиться разработке
Подготовиться к ОГЭ/ЕГЭ
Получите план развития в программировании
  • Поможем с выбором IT-профессии
  • Вместе сделаем первый проект
  • Расскажем, как проходят занятия
Шаг 1 из 2
Шаг 1 из 2
Шаг 2 из 2