Градиенты в анимациях Lottie представляют собой интерполяцию цветов между заданными точками. Они экспортируются из графических редакторов (например, Adobe After Effects через плагин Bodymovin) и преобразуются в JSON-структуру, которую интерпретирует библиотека Lottie Web.
В основе лежит массив значений, описывающий:
Градиенты поддерживаются в двух вариантах:
Каждый тип использует одинаковую структуру данных, но отличается способом интерполяции.
Градиент в Lottie описывается объектом со следующими ключевыми полями:
t — тип градиента (1 — линейный, 2 — радиальный)g — данные градиента (цвета и позиции)s — начальная точкаe — конечная точкаo — непрозрачностьПример:
{
"t": 1,
"g": {
"p": 2,
"k": [0, 1, 0, 0, 1, 0, 0, 1]
},
"s": [0, 0],
"e": [100, 100],
"o": { "k": 100 }
}
Разбор массива k:
position, R, G, Bp — количество цветовых точекЛинейный градиент определяется направлением от точки s к
точке e. Цвет изменяется вдоль этой линии.
Ключевые особенности:
Пример визуальной логики:
s (start) ---------> e (end)
цвет A цвет B
Анимация возможна по следующим параметрам:
s и eg.k)Радиальный градиент строится от центра к периферии. Центр задаётся
точкой s, а радиус определяется расстоянием до
e.
Особенности:
Пример:
центр (s)
↓
распространение к (e)
Lottie использует линейную интерполяцию между цветовыми точками. Это означает, что:
Если задано несколько точек:
[0.0, R1, G1, B1,
0.5, R2, G2, B2,
1.0, R3, G3, B3]
то результатом будет плавный переход:
Градиенты в Lottie могут анимироваться по нескольким направлениям:
Изменяется массив g.k:
"g": {
"k": [
{ "t": 0, "s": [...] },
{ "t": 30, "s": [...] }
]
}
Это позволяет:
Анимируются s и e:
"s": {
"k": [
{ "t": 0, "s": [0, 0] },
{ "t": 60, "s": [200, 200] }
]
}
Используется для:
Поле o может изменяться во времени:
"o": {
"k": [
{ "t": 0, "s": [100] },
{ "t": 60, "s": [0] }
]
}
Градиенты — одна из наиболее ресурсоёмких частей Lottie-анимаций, особенно в браузерах.
Основные ограничения:
Рекомендации:
p)В Lottie Web доступны разные рендереры, и градиенты работают в них по-разному.
<linearGradient> и
<radialGradient>Радиальный градиент с анимацией центра создаёт эффект движущегося источника света.
Используются вместе с альфа-каналом для плавного появления элементов.
Анимированные линейные градиенты создают:
Комбинация:
даёт эффект трёхмерности.
Причина:
Решения:
Иногда градиенты выглядят иначе, чем в Adobe After Effects:
Причины:
Часто связано с:
Прямое управление градиентами через JavaScript ограничено, но возможно через модификацию JSON:
animation.renderer.elements[0].shapes[0].it[1].g.k = newGradient;
Однако:
Более надёжный подход — подготовка анимации на этапе дизайна.
Градиенты поддерживаются:
Ограничения возможны в:
Во время рендеринга:
g.kЭтот процесс выполняется:
Несколько градиентов можно накладывать:
Интересные эффекты достигаются при сочетании:
Дополнительные значения в массиве позволяют задавать альфа-канал:
[position, R, G, B, alpha]
Это даёт:
Градиенты существенно увеличивают размер файла:
Оптимизация:
Градиенты часто используются вместе с:
Это делает их важным инструментом для создания сложной визуальной динамики внутри Lottie Web.