loopOut и loopIn в After Effects: типы циклов и типовые ошибки
Анимация сделана, но нужно, чтобы она повторялась.
В After Effects это решается одной строкой выражения — если понимать, что именно она повторяет.
Что делает loopOut
Документация: loopOut продолжает движение свойства за пределами последнего ключа.
Он берёт закономерность между ключами и повторяет её дальше по времени.
Практика: без ключей выражение бесполезно: повторять нечего.
Как добавить
Практика: последовательность такая.
Поставьте минимум два ключа. Затем с зажатым Alt (Option на macOS) щёлкните по секундомеру свойства — откроется поле выражения.
Практика: впишите loopOut() и нажмите Enter. Дальше можно уточнять параметры в скобках.
Типы
Практика: типов четыре.
cycle повторяет отрезок между первым и последним ключом. pingpong идёт вперёд-назад. offset повторяет с накоплением смещения. continue продолжает движение с последней скоростью.
Практика: для вращения подходит offset, для маятника — pingpong.
cycle
Практика: самый частый вариант.
Повтор начинается с последнего ключа и идёт до следующего цикла.
Практика: если начало и конец не совпадают, на стыке будет рывок. Это не ошибка выражения, а ошибка анимации.
pingpong
Практика: движение идёт вперёд, потом назад.
Подходит для качелей, дыхания, покачивания.
Практика: на стыке направление меняется мгновенно: если нужна плавность, добавьте промежуточные ключи.
offset
Практика: каждый цикл продолжает предыдущий со сдвигом.
Колесо, бесконечная лента, вращающийся элемент — это offset.
Практика: ключи должны описывать ровно один шаг, иначе смещение накопится неправильно.
continue
Практика: этот тип сохраняет скорость последнего участка.
Это не цикл в прямом смысле: движение просто продолжается по инерции.
Практика: удобно для разлетающихся элементов, которым не нужен стык.
loopIn
Документация: loopIn работает в обратную сторону — до первого ключа.
Практика: нужен редко, когда композиция выхватывает середину бесконечного процесса.
Зацикливание видео
Практика: для слоя с видео используется Time Remapping.
Включите его, поставьте ключ на последнем нужном кадре, удалите автоматический ключ в конце слоя и добавьте loopOut() на свойство Time Remap.
Практика: слой должен быть растянут на всю длительность композиции, иначе цикл оборвётся.
Пустой кадр
Практика: самая частая жалоба — на стыке мелькает пустой кадр.
Причина в том, что последний ключ стоит на кадре, которого нет в источнике, или последний кадр не совпадает с первым.
Практика: поставьте ключ на кадр раньше конца, затем loopOut: стык станет чистым.
Дизайн цикла
Практика: бесшовность — это не про выражение, а про ключи.
Первый и последний кадр должны совпадать, а движение между ними — быть равномерным.
Практика: проверьте цикл, поставив playhead на стык и пролистав несколько кадров вперёд-назад.
Порядок работы
- Поставьте два-три ключа.
- Откройте поле выражения.
- Введите loopOut().
- Выберите тип.
- Проверьте стык.
- При необходимости поправьте ключи.
- Для видео включите Time Remapping.
- Проверьте на повторе.
Практика: шаг 8 — единственная настоящая проверка: смотреть надо именно стык.
Где ломается
Ничего не происходит. На свойстве нет ключей.
Рывок на стыке. Первый и последний кадр не совпадают.
Пустой кадр. Ключ стоит за пределами источника.
Движение «плывёт». Выбран continue вместо cycle.
Выражение в эффекте, а не в свойстве. Открыто не то поле.
FAQ
Какие типы есть у loopOut?
cycle, pingpong, offset и continue.
Нужны ли ключи?
Да, минимум два.
Чем loopIn отличается?
Повторяет движение до первого ключа.
Как зациклить видео?
Через Time Remapping и loopOut на Time Remap.
Почему появляется пустой кадр?
Последний ключ стоит на кадре, которого нет в источнике.
Практика: вращение и offset
Практика: у вращения есть неприятная особенность: значение накапливается и через несколько циклов становится огромным. Это не ошибка, но число в панели выглядит пугающе, а некоторые эффекты начинают терять точность. Лечится это тем, что ключи ставят на один полный оборот, а не на несколько, и следят за интерполяцией: линейная даёт ровную скорость, а сглаженная — «дыхание», которое на цикле заметно.
Практика: несколько свойств
Практика: часто нужно зациклить сразу несколько свойств слоя. Выражение придётся вставить в каждое: одна строка на позицию, вторая на масштаб, третья на прозрачность. Если параметров много, проще собрать их в один контроллер через null-объект и анимировать его, а остальные свойства привязать к контроллеру. Тогда цикл живёт в одном месте, и править его нужно один раз.
Практика: проверка стыка
Практика: самый честный тест — просмотр на повторе без остановки. Включите Preview с зацикливанием и смотрите минуту. Глаз быстро находит момент, где что-то дёргается, даже если по кадрам всё кажется ровным. Если стык виден, вернитесь к ключам: скорее всего, последняя поза чуть отличается от первой, а разница в пару пикселей на цикле превращается в заметный рывок.
Практика: цикл и звук
Практика: если анимация зациклена, а звук нет, стык слышен даже когда картинка идеальна. Проверяйте цикл вместе с аудиодорожкой: щелчок на стыке выдаёт, что визуальный ритм не совпадает с музыкальным. Иногда достаточно сдвинуть начало цикла на несколько кадров, чтобы всё встало на место, и никакие выражения менять не придётся.
Итог
Практика: loopOut — одна строка, которая делает анимацию бесконечной. Но бесшовность обеспечивают ключи, а не выражение: первый и последний кадр должны совпадать, движение — быть равномерным, а тип цикла — соответствовать задаче. Если стык дёргается, правьте анимацию, а не формулу.
Выражение и рендер
Практика: выражения считаются на каждом кадре. На простой анимации это незаметно, но если в композиции десятки зацикленных свойств, просмотр начинает тормозить. Если проект тяжёлый, замените выражение на предварительный рендер: включите ключи на нужную длительность и удалите выражение. Это некрасиво с точки зрения «правильного» проекта, зато быстро и предсказуемо при сдаче.
Что попробовать первым
Практика: если не знаете, какой тип выбрать, начните с cycle. Он предсказуем и почти всегда даёт понятный результат. Если цикл должен накапливать движение — переключитесь на offset, если раскачиваться — на pingpong. И не забывайте: тип задаётся в скобках, а не в отдельном меню, поэтому опечатка в кавычках ломает всё выражение сразу.