Выражения. Метод clamp(value, limit1, limit2) в After Effects

 

 

Метод clamp(value, limit1, limit2) в After Effects используется для ограничения значения value в пределах диапазона, заданного limit1 и limit2. Этот метод полезен, когда нужно убедиться, что значение не выходит за определённые границы.

Список эффектов и не только After Effects
Выражения After Effects список

Например, он может применяться для ограничения позиции слоя, масштаба, прозрачности или других параметров.
Если limit1 больше limit2, метод всё равно корректно обработает значения, так как он автоматически определяет минимальное и максимальное значение.
Этот метод очень полезен для создания контролируемых и предсказуемых анимаций в After Effects.

Допустим, вы хотите, чтобы слой не выходил за пределы определённой области по оси X. Например, ограничить движение слоя между значениями 100 и 500 по оси X:

var minX = 100;
var maxX = 500;
var currentX = position[0]; // Текущая позиция по оси X изменяется в зависимости от метода random()
var clampedX = clamp(currentX, minX, maxX); // Ограничиваем значение
position = [clampedX, position[1]]; // Устанавливаем новую позицию

var minX = 100;
var maxX = 500;
var currentX = random(position[0]); // Текущая позиция по оси X
var clampedX = clamp(currentX, minX, maxX); // Ограничиваем значение
position = [clampedX, position[1]]; // Устанавливаем новую позицию

Если вы хотите, чтобы масштаб слоя не превышал определённых значений (например, от 50% до 200%):

var minScale = 50;
var maxScale = 200;
var currentScale = scale[0] * time; // Текущий масштаб по первой оси
var clampedScale = clamp(currentScale, minScale, maxScale); // Ограничиваем значение
scale = [clampedScale, clampedScale]; // Устанавливаем новый масштаб

Если нужно, чтобы прозрачность слоя не опускалась ниже 20% и не поднималась выше 80%

var minOpacity = 20;
var maxOpacity = 80;
var currentOpacity = opacity; // Текущая прозрачность
var clampedOpacity = clamp(currentOpacity, minOpacity, maxOpacity); // Ограничиваем значение
opacity = clampedOpacity; // Устанавливаем новую прозрачность

var minOpacity = 20;
var maxOpacity = 80;
var currentOpacity = random(opacity); // Текущая прозрачность изменяется в зависимости от метода random()
var clampedOpacity = clamp(currentOpacity, minOpacity, maxOpacity); // Ограничиваем значение
opacity = clampedOpacity; // Устанавливаем новую прозрачность

Метод clamp может использоваться для создания сложных эффектов, где нужно ограничивать значения. Например, для создания эффекта «дрожания» (wiggle) с ограничением:

wiggle(10,200);// Эффект покачивания частота 10, амплитуда 200

wiggle(clamp(10,3,3),clamp(200,10,10));//Ограничение покачивания

А можно записать вот так для положения или масштаба

freq = 10;//Частота покачивания исходная, которую надо ограничить
amp = 200;//Амплитуда покачивания исходная, которую надо ограничить
minfreq = 3;//Минимальное значение ограничения частоты
maxfreq = 4;//Максимальное значение ограничения частоты
minamp = 10;//Минимальное значение ограничения амплитуды
maxamp = 10;//Максимальное значение ограничения амплитуды
wiggle(clamp(freq,minfreq,maxfreq),clamp(amp,minamp,maxamp));//Результат покачивания с ограничением

Можно записать по другому для положения или масштаба

minValueX = 2;
maxValueX = 5;
WiggleX = 10;
minValueY = 10;;
maxValueY = 20;
WiggleY = 100;
wiggle(clamp(WiggleX, minValueX, maxValueX), clamp(WiggleY, minValueY, maxValueY));

Если вы хотите, чтобы анимация замедлялась или останавливалась при достижении определённых значений:

var minValue = 0;
var maxValue = 50;
var currentValue = time * 10; // Текущее значение, зависящее от времени
var clampedValue = clamp(currentValue, minValue, maxValue); // Ограничиваем значение
rotation = clampedValue; // Применяем значение