Поддерживаемые типы слоев и эффектов

Lottie Web интерпретирует анимации, экспортированные из Adobe After Effects через плагин Bodymovin, преобразуя их в JSON-формат. Основой любой анимации являются слои (layers), каждый из которых описывает визуальный элемент, его трансформации, эффекты и поведение во времени.

Каждый слой имеет базовый набор свойств:

  • ty — тип слоя
  • ks — трансформации (позиция, масштаб, вращение, прозрачность)
  • ip, op — начальный и конечный кадры
  • st — сдвиг времени
  • nm — имя слоя
  • ind — индекс слоя

Тип слоя определяет способ его рендеринга и доступные свойства.


Основные типы слоев

Shape Layer (слой фигур)

Тип: ty: 4

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

Поддерживаемые элементы внутри слоя:

  • Прямоугольники (rc)
  • Эллипсы (el)
  • Пути (sh)
  • Заливки (fl)
  • Обводки (st)
  • Градиенты (gf, gs)
  • Трансформации (tr)

Особенности:

  • Полная поддержка анимации параметров
  • Высокая производительность благодаря векторной природе
  • Возможность комбинирования через группы (gr)

Пример структуры:

{
  "ty": 4,
  "shapes": [
    {
      "ty": "gr",
      "it": [
        { "ty": "rc", "s": {...}, "p": {...} },
        { "ty": "fl", "c": {...} }
      ]
    }
  ]
}

Solid Layer (сплошной слой)

Тип: ty: 1

Представляет собой прямоугольник с однотонной заливкой.

Свойства:

  • sw, sh — ширина и высота
  • sc — цвет

Особенности:

  • Используется как фон или маска
  • Может участвовать в анимации прозрачности и трансформаций
  • Ограниченная гибкость по сравнению с Shape Layer

Image Layer (слой изображения)

Тип: ty: 2

Используется для отображения растровых изображений.

Свойства:

  • refId — ссылка на ресурс изображения
  • Ресурсы описываются в разделе assets

Особенности:

  • Поддержка PNG, JPG
  • Зависимость от внешних файлов или base64
  • Меньшая производительность по сравнению с вектором

Null Layer (нулевой слой)

Тип: ty: 3

Невидимый слой, используемый для управления другими слоями.

Особенности:

  • Не рендерится
  • Используется как родитель (parent)
  • Применяется для групповых трансформаций

Text Layer (текстовый слой)

Тип: ty: 5

Отображает текст, включая стили и анимации.

Свойства:

  • t.d — данные текста
  • t.a — анимации текста

Поддержка:

  • Шрифты (через fonts)
  • Цвет, размер, межбуквенный интервал
  • Базовые текстовые анимации

Ограничения:

  • Частичная поддержка сложных текстовых анимаций
  • Возможны расхождения с After Effects

Pre-comp Layer (предкомпозиция)

Тип: ty: 0

Слой, содержащий вложенную композицию.

Свойства:

  • refId — ссылка на другую композицию в assets

Особенности:

  • Позволяет строить сложные сцены
  • Поддерживает вложенность
  • Может включать любые другие типы слоев

Маски (Masks)

Маски применяются к слоям для ограничения области видимости.

Свойства:

  • masksProperties

  • Типы:

    • a — add (добавление)
    • s — subtract (вычитание)
    • i — intersect (пересечение)

Особенности:

  • Поддержка анимации формы
  • Ограниченная производительность при сложных масках
  • Возможны различия между SVG и Canvas рендерингом

Трансформации слоев

Каждый слой содержит объект ks (transform), включающий:

  • p — позиция
  • s — масштаб
  • r — вращение
  • o — прозрачность
  • a — anchor point

Все параметры могут быть:

  • статическими
  • анимированными (через keyframes)

Поддерживаемые эффекты

Lottie Web поддерживает ограниченный набор эффектов, так как не все возможности After Effects могут быть воспроизведены в браузере.

Fill (заливка)

Позволяет изменять цвет слоя.

Поддержка:

  • Цвет
  • Прозрачность

Stroke (обводка)

Добавляет контур к фигурам.

Параметры:

  • Цвет
  • Толщина
  • Dash pattern

Trim Paths

Позволяет анимировать прорисовку линий.

Параметры:

  • Start
  • End
  • Offset

Особенности:

  • Один из ключевых эффектов для иконок и иллюстраций
  • Полностью поддерживается

Repeater

Создает повторяющиеся копии фигур.

Параметры:

  • Количество копий
  • Смещение
  • Трансформации

Gradient Fill / Stroke

Поддержка линейных и радиальных градиентов.

Особенности:

  • Ограничения на сложность градиентов
  • Возможны отличия в рендеринге

Частично поддерживаемые эффекты

Некоторые эффекты работают с ограничениями:

  • Drop Shadow — упрощенная версия
  • Blur — ограниченная реализация
  • Opacity — базовая поддержка

Неподдерживаемые эффекты

Следующие эффекты не поддерживаются или игнорируются:

  • 3D-слои и камеры
  • Expressions (частично)
  • Particle systems
  • Advanced lighting
  • Layer styles (в полном объеме)

Рендеринг и ограничения

Lottie Web поддерживает несколько режимов рендеринга:

  • SVG — основной, лучше для качества
  • Canvas — лучше для производительности
  • HTML — ограниченное применение

Ключевые ограничения:

  • Сложные композиции могут замедлять рендеринг
  • Большое количество масок и градиентов влияет на производительность
  • Вложенные pre-comp увеличивают нагрузку

Практические рекомендации

  • Использование Shape Layers вместо изображений
  • Минимизация количества масок
  • Ограничение глубины вложенности
  • Избегание неподдерживаемых эффектов
  • Тестирование в разных режимах рендеринга

Взаимодействие слоев

Слои могут взаимодействовать через:

  • Родительские связи (parent)
  • Тайминг (ip, op)
  • Прозрачность и наложение
  • Маски и трек-матты (ограниченная поддержка)

Трек-матты (Track Matte)

Поддержка реализована частично.

Типы:

  • Alpha Matte
  • Alpha Inverted Matte

Особенности:

  • Используются для сложных эффектов маскирования
  • Требуют аккуратной настройки

Анимация параметров

Все поддерживаемые свойства могут быть анимированы:

  • Позиция
  • Масштаб
  • Цвет
  • Форма

Анимация задается через keyframes:

{
  "a": 1,
  "k": [
    { "t": 0, "s": [0] },
    { "t": 30, "s": [100] }
  ]
}

Совместимость с After Effects

Не все функции After Effects корректно экспортируются:

  • Поддерживаются только те элементы, которые реализованы в Bodymovin
  • Визуальные расхождения возможны
  • Рекомендуется использовать проверенные шаблоны и плагины

Влияние структуры на производительность

Производительность напрямую зависит от:

  • Количества слоев
  • Сложности Shape Layers
  • Использования эффектов
  • Частоты анимации

Оптимизированная структура слоев обеспечивает:

  • Быструю загрузку
  • Плавную анимацию
  • Снижение нагрузки на CPU/GPU