Выражения. Свойства width и height в After Effects
В Adobe After Effects свойства width и height часто используются в выражениях (expressions) для работы с размерами слоев, композиций или других элементов. Эти свойства возвращают высоту (height) и ширину (width) объекта в пикселях. Они полезны, например, для адаптивной анимации, выравнивания или создания динамических эффектов.
Список эффектов и не только After Effects
Выражения After Effects список
// Выражения для Масштаба, как пример
x = thisComp.width/2;
y = thisComp.height/2;
[x, y];
x = thisLayer.width/2;
y = thisLayer.height/2;
[x, y];
x = transform.scale[0] + thisLayer.width/2;
y = transform.scale[1] + thisLayer.height/2;
[x, y];
// Выражение для позиции
x = transform.position[0] + thisLayer.width;
y = transform.position[1];
[x, y];
thisLayer.width;// Выражение для поворота
Если вы хотите, чтобы слой автоматически располагался в центре композиции, но с учетом его собственных размеров, можно использовать width и height в выражении для свойства Position
[thisComp.width/2, thisComp.height/2];
[thisLayer.width / 2, thisLayer.height / 2]; // Если использовать это выражение то результат будет иным
Если вы хотите, чтобы слой масштабировался пропорционально ширине композиции, используйте width в выражении для свойства Scale
Scale = (thisComp.width / thisLayer.width) * 100; // Вычисление масштаба в процентах
[ Scale, Scale]; // Применяем одинаковый масштаб по X и Y
Слой масштабируется так, чтобы его ширина соответствовала ширине композиции, сохраняя пропорции.
Можно привязать масштаб одного слоя к размерам другого слоя, используя width и height:
scaleX = (thisComp.layer(«Сплошная заливка Синий 3»).width / thisLayer.width) * 100;
scaleY = (thisComp.layer(«Сплошная заливка Синий 3»).height / thisLayer.height) * 100;
[scaleX, scaleY];
Текущий слой масштабируется так, чтобы соответствовать размерам целевого слоя.
Пропорциональное масштабирование
// Связываем высоту слоя с его шириной, сохраняя исходное соотношение сторон
[width, width * (thisLayer.height/thisLayer.width)];
Автоматически подстраивает высоту слоя при изменении ширины, чтобы избежать искажений
Анимация на основе времени
// Пульсирующая ширина (синусоидальная анимация)
amp = 50; // Амплитуда колебаний
[100 + Math.sin(time * 3) * amp, 100];
amp = 50; // Амплитуда колебаний
[transform.scale[0] + Math.sin(time * 3) * amp, 100];
amp = 50; // Амплитуда колебаний
[width/width * 100 + Math.sin(time * 3) * amp, height/height * 100];
Создание эффекта «дыхания» или пульсации для кнопок, иконок.
Адаптация к размерам композиции
// Занимает 80% ширины и 60% высоты композиции
[thisComp.width * 0.8, thisComp.height * 0.6];
[thisComp.width/thisComp.width * 100 * 0.8, thisComp.height/thisComp.height * 100 * 0.6];
Связь с эффектами
// Интенсивность размытия зависит от высоты слоя
x = 100;
y = height/ height * 100 * time * 10;
[x, y];
effect(«Быстрое размытие»)(1) + height / 10;
Динамическое управление параметрами эффектов на основе размера слоя.
Условные выражения
// Если ширина > 300, фиксировать высоту на 150
if (width > 300) {
[width, 150];
} else {
[width, height];
}