Эффекты Drop Shadow (падающая тень) и Glow (свечение) относятся к визуальным постобработкам, применяемым к слоям анимации. В контексте Lottie Web их поддержка ограничена, поскольку библиотека интерпретирует JSON-данные, экспортированные из After Effects через Bodymovin, а не рендерит эффекты напрямую, как это делает сам After Effects.
В Lottie Web отсутствует полноценный движок эффектов After Effects. Поддерживаются только те эффекты, которые:
Drop Shadow и Glow по умолчанию не поддерживаются как динамические эффекты. Однако существуют подходы для их имитации.
Эффект Drop Shadow в After Effects включает параметры:
При экспорте через Bodymovin этот эффект игнорируется, если используется стандартным способом.
Наиболее распространённый способ:
В Lottie это выглядит как отдельный слой с трансформациями.
Преимущества:
Недостатки:
Lottie Web поддерживает SVG-рендеринг, а значит возможно применение фильтров:
const animation = lottie.loadAnimation({
container: document.getElementById('anim'),
renderer: 'svg',
loop: true,
autoplay: true,
path: 'animation.json'
});
После загрузки можно вручную добавить фильтр:
const svg = document.querySelector('svg');
const defs = document.createElementNS("http://www.w3.org/2000/svg", "defs");
const filter = document.createElementNS("http://www.w3.org/2000/svg", "filter");
filter.setAttribute("id", "dropShadow");
const feDropShadow = document.createElementNS("http://www.w3.org/2000/svg", "feDropShadow");
feDropShadow.setAttribute("dx", "4");
feDropShadow.setAttribute("dy", "4");
feDropShadow.setAttribute("stdDeviation", "3");
filter.appendChild(feDropShadow);
defs.appendChild(filter);
svg.appendChild(defs);
И применить:
const target = document.querySelector('.target-element');
target.setAttribute("filter", "url(#dropShadow)");
Ограничения:
Эффект “запекается” в растровое изображение:
Плюсы:
Минусы:
Glow в After Effects включает:
Как и Drop Shadow, Glow не экспортируется напрямую.
Классическая техника:
В Lottie это реализуется через несколько слоёв.
Использование radial gradient:
Позволяет создать эффект мягкого свечения без blur.
Аналогично Drop Shadow:
const filter = document.createElementNS("http://www.w3.org/2000/svg", "filter");
filter.setAttribute("id", "glow");
const blur = document.createElementNS("http://www.w3.org/2000/svg", "feGaussianBlur");
blur.setAttribute("stdDeviation", "5");
filter.appendChild(blur);
Можно комбинировать с:
Эффекты свечения и теней:
Особенно критично:
Рекомендуемые практики:
Иногда эффекты имитируются напрямую в JSON:
Пример структуры:
{
"layers": [
{
"nm": "Shadow",
"ks": {
"o": { "k": 30 },
"p": { "k": [5, 5, 0] }
}
}
]
}
Bodymovin:
Поддерживаются только:
Наиболее устойчивый подход:
Создание эффекта вручную в After Effects:
Проверка в Lottie Preview
При необходимости:
Glow + Shadow:
Имитация через:
Drop Shadow и Glow в Lottie Web не являются нативными эффектами, а представляют собой композицию базовых примитивов. Качественная реализация требует:
Такие эффекты должны проектироваться с учётом возможностей Lottie с самого начала, а не переноситься напрямую из After Effects.