В Popmotion поведение анимации полностью определяется
конфигурационным объектом, передаваемым в фабрики анимаций
(animate, tween, spring,
decay, keyframes). Конфигурация задаёт
начальные и конечные значения, модель движения, ограничения, временные
параметры и обработчики жизненного цикла.
Все параметры можно условно разделить на несколько групп:
from задаёт начальное состояние анимации.
to определяет целевое состояние или набор ключевых
состояний.
В простейшем случае используется числовая интерполяция:
from: 0to: 100Также поддерживаются структуры:
{ x: 0, y: 0 } → { x: 100, y: 200 }Определяет длительность анимации в миллисекундах.
Характеристики:
tween и keyframesspring и decayПараметр ease управляет распределением прогресса
анимации во времени.
Поддерживаются функции:
(progress: number) => numberФункция easing преобразует линейный прогресс t ∈ [0, 1]
в нелинейный:
[ p = f(t)]
где p — фактическое значение интерполяции.
Параметр loop задаёт повторение анимации.
Поведение:
true — бесконечный циклНекоторые реализации используют:
repeat — количество повторенийrepeatDelay — задержка между цикламиЭти параметры применяются в tween/keyframes и не влияют на физические модели.
Определяет автоматический запуск анимации после создания.
true — запуск немедленноfalse — управление запускается вручную через
controlsФункция вызывается на каждом шаге анимации.
Передаёт текущее значение интерполяции:
Используется для синхронизации UI или состояния DOM.
Срабатывает при достижении конечного состояния.
Поведение зависит от типа анимации:
Вызывается при старте анимации или перезапуске цикла.
Срабатывает при каждом повторе, если включён loop или
repeat.
Активируется при принудительной остановке управления.
tween представляет линейную или easing-анимацию между
значениями.
Основные параметры:
from — начальное значениеto — конечное значениеduration — длительностьease — функция изменения скоростиflip — инверсия направления при повтореДополнительные особенности:
Модель пружины основана на уравнении гармонического осциллятора:
genui{“math_block_widget_always_prefetch_v2”:{“content”:“F = -kx”}}
Где поведение определяется балансом силы возврата и сопротивления.
Жёсткость пружины.
Коэффициент демпфирования.
Масса объекта.
Начальная скорость движения.
Используется для продолжения инерционного состояния при запуске spring-анимации.
Порог остановки по изменению значения.
Анимация считается завершённой при малых изменениях между кадрами.
Порог скорости, ниже которого система считается остановившейся.
Ограничивает выход за пределы целевого значения.
Используется для предотвращения перерегулирования.
Задаёт точность вычислений при определении состояния покоя.
Модель decay описывает движение, постепенно теряющее скорость.
Начальная скорость инерции.
Определяет направление и интенсивность движения.
Коэффициент сопротивления.
Постоянная времени затухания.
Контролирует экспоненциальное уменьшение скорости.
Функция изменения целевого значения на основе текущего состояния.
Позволяет моделировать ограничения или границы движения.
Модель keyframes задаёт последовательность промежуточных состояний.
Массив ключевых значений:
Массив временных меток для каждого кадра.
Определяет распределение прогресса.
Общая длительность всей последовательности.
Может быть:
Функция постобработки целевого значения.
Применяется для:
Позволяет преобразовывать итоговое значение перед применением:
Объект управления, возвращаемый фабриками анимации, поддерживает программное управление процессом.
Типовые операции:
Состояние контроллера синхронизируется с конфигурацией:
При смешивании конфигураций разных типов наблюдаются ограничения:
duration игнорируется в физически моделируемых
анимацияхstiffness, damping, mass не
применяются в tweenease не влияет на spring и decayvelocity используется только при наличии инерционной
моделиКонфигурация интерпретируется в зависимости от выбранного типа анимации, а не глобально.
Внутренний механизм Popmotion использует интерполяторы для разных типов значений.
Характер обработки зависит от входных данных:
Каждый интерполятор получает нормализованный прогресс
t ∈ [0,1] и возвращает промежуточное значение
состояния.
Повторный запуск анимации с той же конфигурацией приводит к пересчёту начальных условий:
from может переопределяться текущим состояниемvelocity сохраняется только в физических моделяхease и duration пересчитываются
зановоТакое поведение обеспечивает детерминированность каждой новой анимационной сессии при неизменной конфигурации.