Покадровая scroll-анимация: как связаны motion-дизайн, FFmpeg и GSAP
Разбираю, как превращаю подготовленную motion-сцену в управляемую прокруткой анимацию, зачем для этого нужны FFmpeg и GSAP и почему мобильной версии всегда нужен отдельный сценарий.
Покадровая анимация при скролле выглядит просто: человек прокручивает страницу, а объект плавно вращается, собирается из деталей или меняет состояние. За плавным движением стоят три отдельные части: motion-дизайн, подготовка ассетов и front-end. Их нужно свести в один сценарий и проверить на реальной странице.
Я отношусь к такой анимации как к дополнительному слою проекта. Она не должна заменять понятную структуру, сильный текст и нормальную навигацию. Страница должна объяснять продукт и без эффекта. Когда смысл уже собран, покадровая сцена хорошо показывает устройство продукта, процесс или изменение состояния.
Из чего складывается покадровая анимация
Сначала дизайнер или motion-дизайнер создаёт сцену: 3D-объект, композицию, переходы, свет и движение камеры. Затем результат рендерится в последовательность изображений. Это принципиальный момент: браузеру нужны отдельные кадры, между которыми можно перемещаться в обе стороны вместе со скроллом пользователя.
Моя часть начинается с технического разбора. Я смотрю разрешение, длительность, количество кадров, прозрачность, визуальную детализацию и реальное место сцены в макете. После этого определяю, какой формат выдачи подойдёт проекту и сколько данных допустимо загрузить без вреда для первого экрана.
- motion-дизайн задаёт само движение и визуальный сценарий;
- FFmpeg помогает подготовить, переименовать, масштабировать и сжать последовательность;
- JavaScript загружает кадры и рисует их на canvas;
- GSAP и ScrollTrigger связывают прогресс сцены с положением страницы;
- адаптивный сценарий определяет, что увидит пользователь на конкретном устройстве.
Зачем в цепочке нужен FFmpeg
Рендер из motion-программы редко готов к прямой публикации. Кадры могут весить слишком много, иметь избыточное разрешение или содержать технические поля. Вручную обрабатывать сотни файлов бессмысленно. FFmpeg позволяет собрать воспроизводимый процесс: привести серию к нужному размеру, изменить частоту кадров, подготовить превью, проверить последовательность и получить альтернативные версии для разных экранов.
Я не пытаюсь сохранить максимальное качество любой ценой. В вебе важен баланс. Пользователь не должен ждать десятки мегабайт ради эффекта, до которого он ещё не доскроллил. Поэтому исходная сцена обычно превращается в несколько наборов: основной для больших экранов, облегчённый для планшетов и статичный или короткий вариант для слабых мобильных устройств.
Как GSAP связывает кадры со скроллом
На странице создаётся объект состояния, например номер текущего кадра. ScrollTrigger меняет это значение в зависимости от положения пользователя, а функция отрисовки выводит нужное изображение на canvas. Благодаря этому сцена может двигаться вперёд и назад, останавливаться в смысловых точках и синхронизироваться с заголовками или подписями.
Здесь легко сделать эффектно, но неудобно. Если закрепить секцию на слишком большую дистанцию, человек почувствует, что страница удерживает его силой. Если связать каждый пиксель прокрутки с кадром без сглаживания, движение станет нервным. Если одновременно анимировать текст, фон и десяток декоративных элементов, основная мысль потеряется. Я настраиваю длительность и кривые движения после проверки реального интерфейса, а не по красивому ролику из макета.
Загрузка без зависания страницы
Главная техническая задача — не скачать все кадры раньше критического контента. Я разделяю загрузку на этапы: сначала страница получает минимально необходимое изображение, затем браузер подготавливает ближайшие кадры, а остальная последовательность подгружается по мере приближения к секции. Порядок зависит от проекта: иногда важнее заранее загрузить каждое изображение, иногда допустимо показывать только уже готовые кадры.
Canvas также нужно правильно масштабировать под плотность пикселей и размеры контейнера. Просто растянуть картинку CSS недостаточно: на Retina-дисплее она может стать размытой, а на узком экране важная часть композиции уйдёт за границу. Поэтому я отдельно задаю правила вписывания, позицию фокуса и максимальное разрешение.
Почему мобильному устройству нужен другой сценарий
Сенсорная прокрутка, небольшой экран и ограниченная память меняют поведение сцены. То, что выглядит плавно на мощном компьютере, на телефоне может тормозить, перегревать устройство или мешать быстро добраться до информации. Поэтому адаптив — это не уменьшенная копия desktop-эффекта.
На мобильных я могу сократить число кадров, уменьшить дистанцию закрепления, отказаться от pin-секции или заменить последовательность на изображение и короткое ненавязчивое движение. Для пользователей с настройкой reduced motion нужен спокойный вариант без обязательной управляемой анимации. Облегчённый fallback входит в нормальную разработку мобильной версии.
Когда эффект действительно оправдан
Покадровая сцена полезна, когда она объясняет изменение: раскрывает конструкцию, показывает этапы производства, демонстрирует принцип работы или ведёт человека через сложный объект. Делать её только ради того, чтобы сайт «был как у Apple», не всегда разумно. У Apple за подобной подачей стоят подходящие материалы, команда и конкретная продуктовая задача.
Я подключаю motion как отдельную часть оценки. Для неё нужны подготовленные материалы и согласованный сценарий, а иногда участие motion-дизайнера. Срок и стоимость определяют количество сцен и кадров, адаптивные версии и требования к производительности. До начала работы я объясняю, где эффект усилит проект, а где лучше оставить обычный быстрый блок.
Вопросы о покадровой scroll-анимации
Можно ли сделать такую анимацию без motion-дизайнера?
Можно, если уже есть готовая последовательность кадров или простой исходный материал. Для сложной 3D-сцены, движения камеры и качественного света обычно нужен motion-дизайнер: я отвечаю за подготовку веб-ассетов и интеграцию эффекта в интерфейс.
Почему нельзя просто встроить видео?
Обычное видео воспроизводится по времени и хуже подчиняется движению пользователя. Последовательность кадров позволяет точно связать сцену со скроллом, двигаться назад и останавливаться в нужных точках.
Будет ли анимация работать на телефоне?
Да, но мобильный сценарий может быть легче: меньше кадров, короче дистанция, отсутствие закрепления или статичный fallback. Решение выбирается после проверки памяти, плавности и смысла сцены.
FFmpeg работает прямо в браузере пользователя?
Нет. В таком процессе FFmpeg используется заранее для подготовки и оптимизации файлов. На сайте кадрами управляют JavaScript, canvas и GSAP.
Входит ли сложная анимация в базовую стоимость сайта?
Нет. Motion и сложные GSAP-сцены оцениваются отдельно, потому что требуют дополнительных материалов, реализации, адаптивных вариантов и тестирования производительности.