Распределение параметров анимации в mo.js строится вокруг идеи управления множеством объектов через функции, которые преобразуют индекс или случайное значение в конкретные числовые параметры. Такой подход позволяет уйти от ручной настройки каждого элемента и перейти к декларативному описанию поведения группы объектов.
В основе системы распределения лежит принцип: каждое анимируемое значение не задаётся напрямую, а вычисляется через функцию, принимающую контекст текущего элемента.
Контекст обычно включает:
Такой подход позволяет описывать сложные визуальные структуры одной функцией.
Наиболее базовая форма распределения — линейная. Она используется, когда требуется равномерное изменение параметра от минимального к максимальному значению.
genui{“math_block_widget_always_prefetch_v2”:{“content”:“f(x)=a+(b-a)x”}}
Где:
x — нормализованный индекс (0–1)a и b — границы диапазонаТакое распределение используется для параметров типа радиуса, угла, задержки анимации.
При работе с группами элементов часто используется преобразование индекса:
x_i =
где:
i — индекс элементаN — общее количество элементовЭто создаёт равномерное распределение значений по всей группе.
Случайность в mo.js используется для добавления органичности и вариативности. Однако она редко применяется «в чистом виде», чаще — внутри диапазона.
Функция случайного распределения обычно задаётся как:
f(x)=a+(0,1)(b-a)
Такой подход обеспечивает контролируемый шум, не выходящий за заданные границы.
Модуль Burst в mo.js является ключевым примером применения распределений. При создании всплеска частиц параметры каждой частицы вычисляются через функции:
Распределение углов часто задаётся через равномерное разбиение круга:
_i = 2
Это формирует симметричную радиальную структуру.
Чтобы избежать идеальной симметрии, к базовому распределению добавляют смещение:
_i = 2 + _i
где δ_i может быть случайным или зависеть от
индекса.
Это создаёт более «живую» геометрию, характерную для органических эффектов.
Один из ключевых инструментов визуального контроля — распределение задержек запуска анимации. Оно позволяет создавать волны, последовательные всплески и каскадные эффекты.
Линейное распределение задержки:
d_i = d_0 + k i
где:
d_i — задержка для элементаk — шаг увеличенияПри использовании нормализации:
d_i = d_{min} + (d_{max}-d_{min})
Для более сложных визуальных эффектов используются нелинейные функции. Они позволяют концентрировать элементы в определённых областях.
Классический пример — квадратичное распределение:
genui{“math_block_widget_always_prefetch_v2”:{“content”:“f(x)=x^2”}}
Такая функция смещает плотность значений ближе к началу диапазона.
Также часто применяется обратная парабола:
genui{“math_block_widget_always_prefetch_v2”:{“content”:“f(x)=1-(1-x)^2”}}
Она концентрирует значения ближе к верхней границе.
При построении круговых и взрывных эффектов важную роль играет радиальное распределение. Радиус может изменяться линейно или через нелинейные функции:
r_i = R
Использование квадратного корня позволяет равномерно распределять точки по площади круга, а не только по радиусу.
Для создания природных эффектов применяется приближение нормального распределения:
genui{“math_block_widget_always_prefetch_v2”:{“content”:“f(x)=e^{-}”}}
Такое распределение даёт концентрацию значений вокруг центра и разрежение по краям, что используется для дыма, частиц пыли и мягких вспышек.
В реальных сценах mo.js распределения редко используются изолированно. Обычно они комбинируются:
Пример комбинированной модели:
f(x)= (1-x^2) + ()
где ε управляет уровнем хаотичности.
Иногда требуется не плавное, а ступенчатое распределение. Оно используется для группировки элементов:
f(x)=x k / k
Это разбивает диапазон на фиксированное число уровней.
В mo.js распределение часто применяется не только к числам, но и к пространственным координатам. Например, переход от полярной системы к декартовой:
x=r,y=r
Это позволяет строить сложные формы: спирали, кольца, взрывы.
Один из часто используемых паттернов — спираль:
r=a+b
Комбинация роста радиуса и угла создаёт естественное распределение частиц вдоль спирали.
Распределения используются во всех ключевых объектах библиотеки:
Основная идея заключается в том, что один и тот же механизм применяется к разным сущностям: числа становятся визуальными структурами.
Пользовательские функции распределения позволяют создавать уникальные визуальные паттерны. Обычно они строятся на основе:
Пример волнового распределения:
Распределение параметров анимации в mo.js строится вокруг идеи управления множеством объектов через функции, которые преобразуют индекс или случайное значение в конкретные числовые параметры. Такой подход позволяет уйти от ручной настройки каждого элемента и перейти к декларативному описанию поведения группы объектов.
В основе системы распределения лежит принцип: каждое анимируемое значение не задаётся напрямую, а вычисляется через функцию, принимающую контекст текущего элемента.
Контекст обычно включает:
Такой подход позволяет описывать сложные визуальные структуры одной функцией.
Наиболее базовая форма распределения — линейная. Она используется, когда требуется равномерное изменение параметра от минимального к максимальному значению.
genui{“math_block_widget_always_prefetch_v2”:{“content”:“f(x)=a+(b-a)x”}}
Где:
x — нормализованный индекс (0–1)a и b — границы диапазонаТакое распределение используется для параметров типа радиуса, угла, задержки анимации.
При работе с группами элементов часто используется преобразование индекса:
x_i =
где:
i — индекс элементаN — общее количество элементовЭто создаёт равномерное распределение значений по всей группе.
Случайность в mo.js используется для добавления органичности и вариативности. Однако она редко применяется «в чистом виде», чаще — внутри диапазона.
Функция случайного распределения обычно задаётся как:
f(x)=a+(0,1)(b-a)
Такой подход обеспечивает контролируемый шум, не выходящий за заданные границы.
Модуль Burst в mo.js является ключевым примером применения распределений. При создании всплеска частиц параметры каждой частицы вычисляются через функции:
Распределение углов часто задаётся через равномерное разбиение круга:
_i = 2
Это формирует симметричную радиальную структуру.
Чтобы избежать идеальной симметрии, к базовому распределению добавляют смещение:
_i = 2 + _i
где δ_i может быть случайным или зависеть от
индекса.
Это создаёт более «живую» геометрию, характерную для органических эффектов.
Один из ключевых инструментов визуального контроля — распределение задержек запуска анимации. Оно позволяет создавать волны, последовательные всплески и каскадные эффекты.
Линейное распределение задержки:
d_i = d_0 + k i
где:
d_i — задержка для элементаk — шаг увеличенияПри использовании нормализации:
d_i = d_{min} + (d_{max}-d_{min})
Для более сложных визуальных эффектов используются нелинейные функции. Они позволяют концентрировать элементы в определённых областях.
Классический пример — квадратичное распределение:
genui{“math_block_widget_always_prefetch_v2”:{“content”:“f(x)=x^2”}}
Такая функция смещает плотность значений ближе к началу диапазона.
Также часто применяется обратная парабола:
genui{“math_block_widget_always_prefetch_v2”:{“content”:“f(x)=1-(1-x)^2”}}
Она концентрирует значения ближе к верхней границе.
При построении круговых и взрывных эффектов важную роль играет радиальное распределение. Радиус может изменяться линейно или через нелинейные функции:
r_i = R
Использование квадратного корня позволяет равномерно распределять точки по площади круга, а не только по радиусу.
Для создания природных эффектов применяется приближение нормального распределения:
genui{“math_block_widget_always_prefetch_v2”:{“content”:“f(x)=e^{-}”}}
Такое распределение даёт концентрацию значений вокруг центра и разрежение по краям, что используется для дыма, частиц пыли и мягких вспышек.
В реальных сценах mo.js распределения редко используются изолированно. Обычно они комбинируются:
Пример комбинированной модели:
f(x)= (1-x^2) + ()
где ε управляет уровнем хаотичности.
Иногда требуется не плавное, а ступенчатое распределение. Оно используется для группировки элементов:
f(x)=x k / k
Это разбивает диапазон на фиксированное число уровней.
В mo.js распределение часто применяется не только к числам, но и к пространственным координатам. Например, переход от полярной системы к декартовой:
x=r,y=r
Это позволяет строить сложные формы: спирали, кольца, взрывы.
Один из часто используемых паттернов — спираль:
r=a+b
Комбинация роста радиуса и угла создаёт естественное распределение частиц вдоль спирали.
Распределения используются во всех ключевых объектах библиотеки:
Основная идея заключается в том, что один и тот же механизм применяется к разным сущностям: числа становятся визуальными структурами.
Пользовательские функции распределения позволяют создавать уникальные визуальные паттерны. Обычно они строятся на основе:
Пример волнового распределения: