Типы анимации в компьютерной графике

В статье вы узнаете еще один взгляд на дальнейшее развитие анимации. Вытеснит 3Д анимация 2Д или они пойдут параллельными дорогами. О некоторых особенностях производства анимации в этих стилях

“2D анимация мертва” . Мы слышим эту фразу везде и повсюду, несмотря на недавние короткометражные проекты, которые были номинированы на Оскар.

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

2Д анимация страсть моей жизни, которая идет со мной бок о бок уже много лет. За время своей карьеры я осознал, что нужно научиться смотреть на любую ситуацию под разными углами. Раз люди говорят “2D анимация мертва” – мы должны знать ПОЧЕМУ они так говорят, а так же понять, чем это хорошо и чем плохо. В этой статье нет гипербол накруток. Только сухие факты. Приступим.

1. 3Д проще.

Да, есть аниматоры которые с пеной у рта будут доказывать вам, что 3Д анимация НЕ проще 2Д, пока вы не выбежите из комнаты и не спрячетесь в безопасном месте. Но прошу вас, рассмотрите и мою точку зрения.

Анимация – это анимация. Это не стиль, и даже не тип (2д, 3д, стоп-моушн и тд). Несмотря на ту среду, в какой вы анимируете, вы будете использовать одни и те же принципы, что в 2д, 3д, 5д, и в любых других Д. Поэтому, БУКВАЛЬНО ни одна из форм анимации не сложнее и не проще. Это субъективный показатель. Потому мы должны обратить внимание на ПРОЦЕСС.

Предположим, у вас есть аниматор – мастер своего дела. Гипотетически, она не имеет опыта анимирования, но владеет теоретическими навыками, которым бы позавидовал сам Глен Кин. Это было бы пустой тратой времени, сил и таланта, если не дать этому аниматору заняться делом, так что наш долг дать ей работу.

Для того, чтобы применить свои знания в 3д, ей понадобится изучить 3Д софт. Изучение нового софта – сложная задача, но выполнимая. Посещая, например, некие курсы и изучая некую литературу, наш гипотетический аниматор сможет применить свои теоретические супер-знания в 3д пространстве.

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

Не верьте моим словам, проверьте их.

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

Нет, я не говорю, что 3д анимация это прямо легко, так как напомню – анимация – есть анимация. Это умение, необходимое для оживления и передачи изображения на экран. Одно требует уверенного пользования ПО, другое мастерского умения рисовать, такого, чтобы Да Винчи отложил перо и выбросил свои работы в урну от зависти.

Правда в том, что таких художников с каждым днем становится все меньше и меньше. Это происходит потому, что анимация – это тот вид искусства, который передается от учителя к ученику. Вам нужен более опытный аниматор, чтобы он указал вам на ваши косяки. и чем меньше таких учителей остается, тем меньше учеников продолжает их дело.

Конечно, мы можем использовать различные технические приемы чтобы облегчить некие моменты, но тогда мы должны спросить себя: СТОИТ ЛИ?

2. Компьютеры превосходят человека.

У нас уже разжегся неплохой костер? Подбросим же еще дровишек.

Простой факт: компьютер способен делать что либо на таком уровне детализации и совершенства, что ни один человек не способен делать так же. Не верите мне? Попробуйте сделать так вручную:

Одни могут спорить: “Ну, в 2д просто не делают кадры такого типа. Там делается по-другому.” Тогда остается вопрос: Почему? Зачем и почему мы должны ограничивать себя в чем-то, когда технологии уже здесь, в ваших руках, и могут позволить вам безграничные возможности. Зачем возвращаться назад и делать то, что делать сложнее, еще и в ограниченном формате? Почему не принять будущее, и не жить в прошлом?

Это вопросы, на которые должен дать ответ любой аниматор, вне зависимости от того как и где он использует свои навыки. Мы ДОЛЖНЫ спросить: “Это лучший способ? Сможем ли мы таким способом лучше рассказать историю (ведь именно она важнее всего)? Будет ли контакт между персонажем и зрителем установлен лучше? Помогут ли кадру эти красивые реалистичные волны, или стоит их приглушить, ведь несмотря на свою красоту и крутизну они отвлекают?”

Использование технологий ради самих технологий – бесплодная затея. То же самое делать вещи “по-старому”, потому что раньше так делали. Если новый способ превосходит старый, если он дает вам новые возможности, то отказ от него глупая затея ради чувства ностальгии. Как художники/техники мы ДОЛЖНЫ ЗНАТЬ, ПОЧЕМУ МЫ ВЫБИРАЕМ ту или иную технику/метод/способ/среду для достижения своих целей, и этот выбор никогда не должен быть ” потому что кто-то когда-то так делал”. быть вдохновленными нашими наставниками, “художественными предками” – это замечательно. Но сравнивание себя с ними, или еще хуже, попытки стать ими – верный способ облажаться. Они – это они, а мы – это мы.

3. Компьютеры превосходят человека. (точность)

Я спросил у одного из крутейших аниматоров современности Тома Банкрофта о том, “Что делает 3Д анимацию лучше” и получил такой ответ:

“Одна вещь, которую 3Д анимация (и, безусловно, люди стоящие за ней) делает лучше 2Д – это точность (аккуратность). Я бы сказал, экстремальная точность. Я работал над некоторыми такими сценами в одном из самых точных фильмов 20 века Дисней: Покахонтас (например, когда она думает о своей умершей матери). Я могу засвидетельствовать, что даже с самыми лучшими промежуточными кадрами с самым лучшим клин апом, невероятно сложно показать, что персонаж еле двигается в течение длительного периода времени, особенно учитывая последующий показ на действительно больших экранах, где все-все видно. А во времена 2Д анимации в Диснее мы не могли позволить себе использовать один и тот же лист с персонажем, иначе он становился не живым и сливался с фоном. А в компьютерной анимации это сделать не проблема. Еле двигать что-либо стало легко. Никаких дрожащих линий. Многие лучшие CG аниматоры активно используют эту возможность. И в тоже время CG аниматоры часто используют 2Д анимацию для предварительного просмотра. И в этом, определенно есть смысл.

Качнулся ли маятник нашего искусства слишком далеко? Да, думаю, именно это мы сейчас и видим. Ультра реалистичная анимация, которая напоминает своей правдоподобностью игровое кино, и следовательно, в ней теряется та магия, что лежит в центре анимационного искусства.”

Том подметил очень важный момент: “3Д анимация (и, безусловно, люди стоящие за ней)”. Очень многие (не художники) думают, что компьютер делает всю работы за нас. Когда я говорю, что компьютеры превосходят человека, я говорю о том, что компьютер, в качестве инструмента, имеет большую степень точности. Это позволяет аниматорам делать то, что не может карандаш. А как уже было сказано, анимация – это анимация, не смотря ни на что.

4. Изменения опережают нас.

Предположим, у вас есть сцена в 3Д и ваш режиссер вдруг понимает, что ее лучше бы показать с высоты птичьего полета, а не с точки зрения червяка, как это есть сейчас. В 3Д провернуть такую махинацию можно без проблем! Небольшая корректировка уже имеющейся камеры и вуаля. А в 2Д? Вам остается лишь швырнуть стулом в ближайшего сценариста. В 2Д аниматору придется не просто переделать сцену, а начать все с чистого листа. Буквально. Новые скетчи, тонны зарисовок, поиск оптимального угла зрения на сцену…вместо того, чтобы просто незначительно откорректировать виртуальную камеру как делают сейчас в 3Д. Так что вносить правки, которые неминуемо следуют за сценарием, будет не только быстрее, но и дешевле для производства.

5. 3Д реальней.

Выйдем немного за рамки этой статьи. Подготавливая материал, я опросил некоторых своих коллег, почему, гипотетически, 3Д – это единственное развитие будущей анимации. Некоторые из опрашиваемых были аниматорами, и они спросили, не больной ли я на голову. Некоторые были просто энтузиастами, Один, однако, был просто моим другом, который связан с анимацией исключительно креслом и попкорном в кинотеатре, в который я его приглашал. Помимо детства он редко когда-либо проявлял инициативу в сторону просмотра какого-либо мультфильма. Я спросил, смотрел ли он “Холодное сердце”? Нет. А “Город Героев” или “Как приручить дракона 2”? Нет. Я даже не стал спрашивать, видел ли он “Сказание о принцессе Кагуя”. Он смотрел мультсериал Геркулес, так как является поклонником греческой мифологии, но признался, что не получил удовольствия от просмотра самого фильма.

На мой вопрос: “Почему 3Д?” его ответ был очевиден и просто до безобразия – она реалистичней. для него, 3Д анимация “размывает границы между реальностью и фантазией”, и для него это способ теоретически воплотить некоторые свои фантазии.

А если спросить любого 2Д аниматора тот же вопрос, они расскажут, что реальным происходящее делают убедительные персонажи, и в этом они превосходят любые технологии, дизайн и модели (3Д). Но проблема в том, что в кинотеатры ходят не аниматоры. Залы наполнены различными людьми, которые понятия не имеют о том, как сделана и устроена анимация. Для них “3Д анимация реальней”.

Можно сколько угодно оспаривать этот факт с точки зрения творческого человека, который непосредственно знаком с процессом/историей и тд анимации. Но нужно всегда помнить о ЦЕЛЕВОЙ АУДИТОРИИ.

Как я уже упоминал, при написании этой статьи я побеседовал с разными людьми из разных областей. Charles Kenny – автор сайта AnimationAnomaly.com поделился интересной точкой зрения, о которой я никогда раньше не задумывался: Инфраструктура.

“Традиционная анимация, которая находится под постоянным давлением CG, не имеет даже приблизительно таких же внушительных капиталов и технических разработок. Если вы, как инвестор, хотите вложиться в рендер ферму или в разработку ПО, то вы заинтересованы в том, чтобы ваш продукт был многоразовым, что соответствует 3Д анимации.”

Samantha Youssef из Studio Technique в своей предстоящей книге “Движения и Формы” так же сказала:

“В конечном счете, я считаю, что 3Д более эффективна с точки зрения ведения бизнеса, а индустрия – это в первую очередь бизнес, а не искусство. Сколько бы замечательных художников не работали в этой индустрии, какие бы шедевральные проекты не разрабатывались, мотивация всегда будет одна – деньги.”

Вышесказанное является жирной точкой с точки зрения логики. (Да-да, мы художники часто игнорируем логику, но она существует, поверьте). Сегодня студии закладывают гораздо больше сил, инвестиций, надежд в 3Д производство.

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

Ни одно принятое решение не позволит уже созданным дорогостоящим софтам, рендер-фермам и технологиям собирать пыль пока аниматоры будут точить свои карандаши. И хотите вы это признать или нет, наша индустрия – это бизнес, и лишь потом искусство. Если 3Д инструментарий уже здесь, инфраструктура налажена, и рабочий процесс отточен, то почему бы им ГРАМОТНО не воспользоваться?

Подведем итоги.

Когда я начал собирать материал для этой статьи, я делал это лишь потому, что я стопроцентный фанат 2Д и мне было интересно посмотреть на ситуацию под другим углом. К концу своего исследования я почти убедил себя, что стоит почтить память 2Д и не ждать, когда она будет медленно умирать у нас на руках.

Но все же.

Как вы видите, есть одна причина, которая отказывается капитулировать из недр моего разума, относительно того, что 2Д must go on. По сравнению с предоставленными выше фактами она абсолютно нелогична и иррациональна. Тем не менее, это наиболее убедительная причина:

2Д АНИМАЦИЯ = ЛЮДИ.

Я посмотрел и полюбил многие анимационные 3Д фильмы. Они были убедительными, с богатым визуалом и внутренним миром. Однако, я никогда не чувствовал в них столько “человека”, сколько чувствовал в 2Д анимации.

Отдавая машине некий контроль над происходящим, я искренне верю, что мы теряем частичку души в финальном продукте. Безусловно, есть многие, кто не согласится со мной (но в этой статье можно оспаривать любое мое слово=)), сказав, что компьютер лишь инструмент, как до него был карандаш, до которого был уголек от костра и стены пещеры. Это справедливое замечание, и я его принимаю. В тоже время, будут аниматоры, утверждающие, что “101 далматинец” и “Книга джунглей” были вершиной анимации благодаря сырым линиям аниматора, которые не были зачищены до машинной точности.


Люди неидеальны. И на мой взгляд, именно благодаря нашим изъянам мы создаем то великое, что мы создаем. И есть вещи, которые может сделать идеально лишь неидеальный человек. Живые линии рисунка, неровные края, “ошибки” как могут сказать некоторые – это именно то, что привлекает меня в 2Д анимации. Вы смотрите гораздо глубже этих самых линий, форм и пятен.

Звучит сопливо? Потому что такие мы есть. Люди. Мы человечны, и нам свойственны такие чувства как любовь, ненависть и тонна других сложнейших чувств. Убрав этот элемент, даже просто позволив компьютеру сделать работу “чисто” мы теряем 2Д, и то, что таится в нем. Именно этот аргумент всегда будет на чаше моих весов “За 2Д и против 3Д”. Пока живы мы, те кто знают и помнят 2Д анимацию в ее лучшие годы, будет жива и она.

03.01.17 6.3K

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


Вот основные виды анимации, с помощью которых могут создаваться цифровые персонажи для телевизионных шоу, коммерческих приложений, логотипов компаний, кино, видео или игр.
  • Традиционная анимация.
  • 2D векторная анимация.
  • 3D компьютерная анимация.
  • Графика движения.
  • Стоп моушен.

Традиционная анимация

Вы когда-нибудь видели изображения, которые появляются, как быстро сменяющиеся кадры, нарисованные на прозрачных листах бумаги цветными маркерами? Этот вид компьютерной анимации называется традиционным. Он используется для предварительных набросков персонажей.

Этот процесс может быть довольно дорогостоящим и продолжительным, так как аниматорам приходится создавать набор различных кадров, исходя из частоты 24 кадра в секунду. Данный метод используется в основном на ПК, а также планшетах с применением специальных компьютерных программ, позволяющих создавать анимацию в стиле старых диснеевских мультфильмов.

2D векторная анимация

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

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

3D компьютерная анимация

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

Это также называется генерируемые компьютером изображения (CGI ). Они возникают, когда компьютерные аниматоры создают поток изображений, которые сводится воедино, чтобы сформировать анимацию. Объединение динамических и статических изображений выполняется с использованием компьютерной графики. Персонажи, созданные в 3D, в цифровом формате отображаются на экране, а затем объединяются с каркасом, что позволяет анимировать каждую модель по-разному.

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

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

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

Графика движения

Вы когда-нибудь задумывались о том, как создаются промо-ролики, анимированные логотипы, вступительные титры фильмов и реклама приложений? Это делается с помощью движущихся графических текстов и элементов, или, как я это называю, графики движения.

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

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

Stop-motion

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

Создание 2D-мультфильма в KINESKO это:

Цена 2D-анимации зависит от таких факторов

  1. Хронометраж ролика.
  2. Сложность анимации. Чем детальней прорисовка, тем выше цена 2D-анимации.
  3. Наличие дополнительных услуг (озвучка, продвижение и т.д.).

Этапы создания 2D-анимации

1. Создание двухмерной анимации начинается со сбора и анализа исходной информации , на основе которых формируется идея . После ее согласования с заказчиком, пишется сценарий .

2. Следующий этап изготовления 2d-анимации - разработка дизайна персонажей . Она начинается с нарисованного художником наброска, который позже дорабатывают и упрощают. Художник придумывает внешний вид персонажей, их эмоции и даже произносимые ими звуки.

3. Затем мы приступаем к созданию раскадровки , предварительной визуализации ролика. Она позволяет аниматорам понять, как должен выглядеть итоговый ролик (ракурс, вид и поведение персонажей, и т.д.).

4. Раскадровку используют, чтобы создать ключевые кадры ролика . После их прорисовки начинается работа над созданием промежуточных кадров (фазовка). Параллельно рисуются задние планы .

5. После того, как работа над производством 2D-анимации завершена, остается озвучка и добавление звуковых эффектов .

С услугой 2D-анимации заказывают

Почему вам нужно сделать 2D-анимацию

1. В 3D-анимации есть множество ограничений при построении кадра или сцены. Создать 2D-анимацию куда проще. 2D-персонажи более пластичны и обладают лучшей мимикой , которая способствует их запоминаемости. Трехмерные модели созданы иначе, каждое их движение рассчитано математическими формулами.

2. В 2D-анимации применяют больше визуальных эффектов, чем в 3D, что сильно ускоряет работу .

3. Анимация персонажа в 2D-роликах стоит дешевле , чем в объемных.

4. В 2D-анимации информацией можно наполнить весь экран. Тогда как в 3D-роликах ориентиры в п ространстве отбирают часть экран и сокращают число рабочих пикселей.

5. У объемных персонажей волосы могут «утонуть» в текстуре головы, а уши - пройти сквозь шляпу. С 2d-анимированными персонажами таких проблем не возникает.


1. «Резиновый» герой. Тела нарисованных персонажей часто сжимаются и растягиваются. И все же объем тела должен оставаться одинаковым.

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

3. Сценичность. Позы и мимика анимационных персонажей должны быть просты и выразительны.

4. Бесконечное движение. Даже если двухмерный персонаж статичен, второстепенные элементы должны быть в перманентном движении.

5. Движение по дугам. Живые существа всегда движутся по дугообразной траектории. Хотя резкие движения могут показаться прямыми, это обманчивое впечатление.

6. Карикатурность. Анимация и реализм - трудно совместимые вещи. Счастливый персонаж должен сиять, словно солнце, а сердитый - выглядеть, как готовый взорваться котел.

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

Как сделать анимационного персонажа миловидным?

  • персонаж должен быть похожим на ребенка;
  • его главные черты характера - скромность и неуверенность в себе;
  • его голова должна быть больше, чем тело, а глаза - быть низком посажеными;
  • его тело должно быть пухловатым, подчеркивая хороший аппетит.

Эволюция создания двухмерной анимации

1. «Пароход Вилли» (1928) - это первый звуковой мультфильм. Также это третий мультфильм, в котором появляется Микки Маус.

2. «Белоснежка и семь гномов» (1937) стала первым полнометражным цветным мультфильмом. За передовые достижения она даже получила Оскара.

3. «Мэри Поппинс» (1964) не является первым фильмом, где реальная картинка совмещена с анимацией. Тем не менее, это главный пример использования подобной технологии, без которого не было бы «Кто подставил кролика Роджера» и других известных фильмов.

4. «Приключения кота Фрица» (1962) - это первый мультфильм, получивший возрастной рейтинг X. Из-за сцен эротики и насилия его никогда не показывали по телевизору, однако он стал отправной точкой в истории взрослой анимации.

5. «Акира» (1988) вышла уже после того, как Хаяо Миядзаки основал свою знаменитую студию «Гибли». Но именно она послужила толчком для популяризации аниме в Америке и остальном мире, открыв дорогу фильмам вышеупомянутого Миядзаки, «Евангелиону» и многим другим.

6. «Медвежонок Винни и его друзья» стал последним рисованным мультфильмом студии Disney, ознаменовав собой конец целой эпохи.

Это довольно провокационный вопрос, волнующий многих людей. Все началось с того момента, когда такой гигантский анимационный монстр, как «Дисней» (основоположник стиля) сообщил о закрытии своего 2Д отделения. Всех взволновал вопрос, что же это значит для будущего классической анимации»? Означает ли это то, что больше не будет классической анимации?

Я все чаще и чаще сталкиваюсь с молодыми специалистами, которые предпочитают 2Д анимацию, но работают именно в 3Д. Когда я их спрашиваю почему, то ответ по большей части один и тот же - «Но ведь у 2Д анимации нет будущего. Классическая анимация умерла!» Но правда ли это? Действительно ли умерла 2Д анимация? Давайте разберемся.

Для начала «2Д анимация» и «классическая анимация»- это два абсолютно разных понятия. Одно из них означает направление, вид анимации, «2Д» - плоская, двумерная анимация. А другое понятие означает технику. Классическая техника - работа на анимационном столе с использованием 12 принципов Диснея. Эти два понятия ни в коем случае нельзя путать.

«Классическая анимация», расшифровка этого понятия в самом названии - «КЛАССИЧЕСКАЯ». Многие годы анимация делалась на анимационных столах, с использованием все тех же неизменных 12 принципов, которые были придуманы уже давно. Это классика, как и другие хорошие классические вещи в нашем мире, как музыка Моцарта например. Проходит их время, но мы все равно их ценим и идем дальше, используя накопленный опыт. Но нельзя говорить о том, что классическая анимация умерла. Она всего лишь претерпела изменения, идя в ногу со временем и адаптируясь к требованиям нового поколения зрителей.

Сейчас уже сложно говорить об одном определенном виде анимации. Границы стерлись. Редко в самом начале проекта студия знает в 2Д или 3Д она собирается делать проект. Сначала проводится тестирование - в в каком направлении анимации идея будет понятнее всего, легче всего для создания и конечно же, быстрее всего. И уже потом, исходя из результатов многочисленных тестов, иногда даже многолетних, решается, какую технику будут использовать.

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

CSS3-анимация может применяться практически для всех html-элементов, а также для псевдоэлементов:before и:after . Список анимируемых свойств приведен на странице. При создании анимации не стоит забывать о возможных проблемах с производительностью, так как на изменение некоторых свойств требуется много ресурсов.

Введение в CSS-анимацию

Поддержка браузерами

IE: 10.0
Firefox: 16.0, 5.0 -moz-
Chrome: 43.0, 4.0 -webkit-
Safari: 4.0 -webkit-
Opera: 12.1, 12.0 -o-
iOS Safari: 9, 7.1 -webkit-
Opera Mini:
Android Browser: 44, 4.1 -webkit-
Chrome for Android: 44

1. Ключевые кадры

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

Ключевые кадры указываются с помощью правила @keyframes , определяемого следующим образом:

@keyframes имя анимации { список правил }

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

@keyframes shadow { from {text-shadow: 0 0 3px black;} 50% {text-shadow: 0 0 30px black;} to {text-shadow: 0 0 3px black;} }

Ключевые кадры создаются с помощью ключевых слов from и to (эквивалентны значениям 0% и 100%) или с помощью процентных пунктов, которых можно задавать сколько угодно. Также можно комбинировать ключевые слова и процентные пункты. Если кадры имеют одинаковые свойства и значения, их можно объединить в одно объявление:

@keyframes move { from, to { top: 0; left: 0; } 25%, 75% {top: 100%;} 50% {top: 50%;} }

Если 0% или 100% кадры не указаны, то браузер пользователя создает их, используя вычисляемые (первоначально заданные) значения анимируемого свойства.

Если несколько правил @keyframes определены с одним и тем же именем, сработает последнее в порядке документа, а все предыдущие проигнорируются.

После объявления правила @keyframes , мы можем ссылаться на него в свойстве animation:

H1 { font-size: 3.5em; color: darkmagenta; animation: shadow 2s infinite ease-in-out; }

Не рекомендуется анимировать нечисловые значения (за редким исключением), так как результат в браузере может быть непредсказуемым. Также не следует создавать ключевые кадры для значений свойств, не имеющих средней точки, например, для значений свойства color: pink и color: #ffffff , width: auto и width: 100px или border-radius: 0 и border-radius: 50% (в этом случае правильно будет указать border-radius: 0%).

1.1. Временная функция для ключевых кадров

Правило стиля ключевого кадра также может объявлять временную функцию, которая должна использоваться при перемещении анимации к следующему ключевому кадру.

Пример

@keyframes bounce { from { top: 100px; animation-timing-function: ease-out; } 25% { top: 50px; animation-timing-function: ease-in; } 50% { top: 100px; animation-timing-function: ease-out; } 75% { top: 75px; animation-timing-function: ease-in; } to { top: 100px; } }

Пять ключевых кадров указаны для анимации с именем «bounce». Между первым и вторым ключевым кадром (то есть между 0% и 25%) используется функция замедления. Между вторым и третьим ключевым кадром (то есть между 25% и 50%) используется функция плавного ускорения. И так далее. Элемент будет перемещаться вверх по страницу на 50px , замедляясь по мере того, как он достигает своей наивысшей точки, а затем ускоряясь, когда он падает до 100px . Вторая половина анимации ведет себя аналогичным образом, но только перемещает элемент на 25px вверх по странице.

Временная функция, указанная в ключевом кадре to или 100% , игнорируется.

2. Название анимации: свойство animation-name

Свойство animation-name определяет список применяемых к элементу анимаций. Каждое имя используется для выбора ключевого кадра в правиле, которое предоставляет значения свойств для анимации. Если имя не соответствует ни одному ключевому кадру в правиле, нет свойств для анимации, отсутствует имя анимации, анимация не будет выполняться.

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

Имя анимации чувствительно к регистру, не допускается использование ключевого слова none . Рекомендуется использовать название, отражающее суть анимации, при этом можно использовать одно или несколько слов, перечисленных через дефис - или символ нижнего подчеркивания _ .

Свойство не наследуется.

Синтаксис

Animation-name: none; animation-name: test-01; animation-name: -sliding; animation-name: moving-vertically; animation-name: test2; animation-name: test3, move4; animation-name: initial; animation-name: inherit;

3. Продолжительность анимации: свойство animation-duration

Свойство animation-duration определяет продолжительность одного цикла анимации. Задаётся в секундах s или миллисекундах ms . Если для элемента задано более одной анимации, то можно установить разное время для каждой, перечислив значения через запятую.

Свойство не наследуется.

Синтаксис

Animation-duration: .5s; animation-duration: 200ms; animation-duration: 2s, 10s; animation-duration: 15s, 30s, 200ms;

4. Временная функция: свойство animation-timing-function

Свойство animation-timing-function описывает, как будет развиваться анимация между каждой парой ключевых кадров. Во время задержки анимации временные функции не применяются.

Свойство не наследуется.

animation-timing-function
Значения:
linear Линейная функция, анимация происходит равномерно на протяжении всего времени, без колебаний в скорости.
функции Безье
ease Функция по умолчанию, анимация начинается медленно, разгоняется быстро и замедляется в конце. Соответствует cubic-bezier(0.25,0.1,0.25,1) .
ease-in Анимация начинается медленно, а затем плавно ускоряется в конце. Соответствует cubic-bezier(0.42,0,1,1) .
ease-out Анимация начинается быстро и плавно замедляется в конце. Соответствует cubic-bezier(0,0,0.58,1) .
ease-in-out Анимация медленно начинается и медленно заканчивается. Соответствует cubic-bezier(0.42,0,0.58,1) .
cubic-bezier(x1, y1, x2, y2) Позволяет вручную установить значения от 0 до 1. вы сможете построить любую траекторию скорости изменения анимации.
пошаговые функции
step-start Задаёт пошаговую анимацию, разбивая анимацию на отрезки, изменения происходят в начале каждого шага. Вычисляется в steps(1, start) .
step-end Пошаговая анимация, изменения происходят в конце каждого шага. Вычисляется в steps(1, end) .
steps(количество шагов,положение шага) Ступенчатая временная функция, которая принимает два параметра. Первый параметр указывает количество интервалов в функции. Это должно быть положительное целое число больше 0 , если вторым параметром не является jump-none — в этом случае оно должно быть положительным целым числом больше 1 . Второй параметр, который является необязательным, указывает позицию шага — момент, в котором начинается анимация, используя одно из следующих значений:
  • jump-start — первый шаг происходит при значении 0
  • jump-end — последний шаг происходит при значении 1
  • jump-none — все шаги происходят в пределах диапазона (0, 1)
  • jump-both — первый шаг происходит при значении 0 , последний — при значении 1
  • start — ведет себя как jump-start
  • end — ведет себя как jump-end

Со значением start анимация начинается в начале каждого шага, со значением end - в конце каждого шага с задержкой. Задержка вычисляется как результат деления времени анимации на количество шагов. Если второй параметр не указан, используется значение по умолчанию end .

initial
inherit

Синтаксис

Animation-timing-function: ease; animation-timing-function: ease-in; animation-timing-function: ease-out; animation-timing-function: ease-in-out; animation-timing-function: linear; animation-timing-function: step-start; animation-timing-function: step-end; animation-timing-function: cubic-bezier(0.1, 0.7, 1.0, 0.1); animation-timing-function: steps(4, end); animation-timing-function: ease, step-start, cubic-bezier(0.1, 0.7, 1.0, 0.1); animation-timing-function: initial; animation-timing-function: inherit;

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

5. Повтор анимации: свойство animation-iteration-count

Свойство animation-iteration-count указывает, сколько раз проигрывается цикл анимации. Начальное значение 1 означает, что анимация будет воспроизводиться от начала до конца один раз. Это свойство часто используется в сочетании со значением alternate свойства animation-direction , которое заставляет анимацию воспроизводиться в обратном порядке в альтернативных циклах.

Свойство не наследуется.

Синтаксис

Animation-iteration-count: infinite; animation-iteration-count: 3; animation-iteration-count: 2.5; animation-iteration-count: 2, 0, infinite;

6. Направление анимации: свойство animation-direction

Свойство animation-direction определяет, должна ли анимация воспроизводиться в обратном порядке в некоторых или во всех циклах. Когда анимация воспроизводится в обратном порядке, временные функции также меняются местами. Например, при воспроизведении в обратном порядке функция ease-in будет вести себя как ease-out .

Свойство не наследуется.

animation-direction
Значения:
normal Все повторы анимации воспроизводятся так, как указано. Значение по умолчанию.
reverse Все повторы анимации воспроизводятся в обратном направлении от того, как они были определены.
alternate Каждый нечетный повтор цикла анимации воспроизводятся в нормальном направлении, каждый четный повтор воспроизводится в обратном направлении.
alternate-reverse Каждый нечетный повтор цикла анимации воспроизводятся в обратном направлении, каждый четный повтор воспроизводится в нормальном направлении.
initial Устанавливает значение свойства в значение по умолчанию.
inherit Наследует значение свойства от родительского элемента.

Чтобы определить, является ли повтор цикла анимации четной или нечетной — количество повторов начинается с 1 .

Синтаксис

Animation-direction: normal; animation-direction: reverse; animation-direction: alternate; animation-direction: alternate-reverse; animation-direction: normal, reverse; animation-direction: alternate, reverse, normal; animation-direction: initial; animation-direction: inherit;

7. Проигрывание анимации: свойство animation-play-state

Свойство animation-play-state определяет, будет ли анимация запущена или приостановлена. Остановка анимации внутри цикла возможна через использование этого свойства в скрипте JavaScript. Также можно останавливать анимацию при наведении курсора мыши на объект — состояние:hover .

Свойство не наследуется.

Синтаксис

Animation-play-state: running; animation-play-state: paused; animation-play-state: paused, running, running; animation-play-state: initial; animation-play-state: inherit;

8. Задержка анимации: свойство animation-delay

Свойство animation-delay определяет, когда анимация начнется. Задается в секундах s или миллисекундах ms .

Свойство не наследуется.

Синтаксис

Animation-delay: 5s; animation-delay: 3s, 10ms;

9. Состояние элемента до и после воспроизведения анимации: свойство animation-fill-mode

Свойство animation-fill-mode определяет, какие значения применяются анимацией вне времени ее выполнения. Когда анимация завершается, элемент возвращается к своих исходным стилям. По умолчанию анимация не влияет на значения свойств, когда анимация применяется к элементу — animation-name и animation-delay . Кроме того, по умолчанию анимация не влияет на значения свойств после ее завершения — animation-duration и animation-iteration-count . Свойство animation-fill-mode может переопределить это поведение.

Свойство не наследуется.

animation-fill-mode
Значения:
none Значение по умолчанию. Состояние элемента не меняется до или после воспроизведения анимации.
forwards После того, как анимация заканчивается (как определено значением animation-iteration-count), анимация будет применять значения свойств к моменту окончания анимации. Если animation-iteration-count больше нуля, применяются значения для конца последней завершенной итерации анимации (а не значения для начала итерации, которое будет следующим). Если значение animation-iteration-count равно нулю, применяемыми значениями будут те, которые начнут первую итерацию (так же, как и в режиме animation-fill-mode: backwards;).
backwards В течение периода, определенного с помощью animation-delay , анимация будет применять значения свойств, определенные в ключевом кадре, которые начнут первую итерацию анимации. Это либо значения ключевого кадра from (когда animation-direction: normal или animation-direction: alternate), либо значения ключевого кадра to (когда animation-direction: reverse или animation-direction: alternate).
both Позволяет оставлять элемент в первом ключевом кадре до начала анимации (игнорируя положительное значение задержки) и задерживать на последнем кадре до конца последней анимации.

Синтаксис

Animation-fill-mode: none; animation-fill-mode: forwards; animation-fill-mode: backwards; animation-fill-mode: both; animation-fill-mode: none, backwards; animation-fill-mode: both, forwards, none;

10. Краткая запись анимации: свойство animation

Все параметры воспроизведения анимации можно объединить в одном свойстве — animation , перечислив их через пробел:

Animation: animation-name animation-duration animation-timing-function animation-delay animation-iteration-count animation-direction;

Для воспроизведения анимации достаточно указать только два свойства — animation-name и animation-duration , остальные свойства примут значения по умолчанию. Порядок перечисления свойств не имеет значения, единственное, время выполнения анимации animation-duration обязательно должно стоять перед задержкой animation-delay .

11. Множественные анимации

Для одного элемента можно задавать несколько анимаций, перечислив их названия через запятую:

Div {animation: shadow 1s ease-in-out 0.5s alternate, move 5s linear 2s;}



Индийский Пасьянс