Выражения. Метод sampleImage After Effects
Метод sampleImage(point, radius = [.5, .5], postEffect = true, t = time) в After Effects позволяет получить цвет или прозрачность пикселей в указанной точке слоя. Он возвращает массив из четырёх чисел [R, G, B, A], представляющих значения красного, зелёного, синего и альфа-канала. Ниже приведены примеры использования этого выражения с пояснениями.
Список эффектов и не только After Effects
Выражения After Effects список
sampleImage(point, radius = [.5, .5], postEffect = true, t = time);
——-
1
Извлечь цвет пикселя в заданной точке слоя и применить его к свойству, например, к цвету заливки фигуры.
// Выражение для свойства Fill Color фигуры
point = [640, 360]; // Координаты точки выборки (x, y)
radius = [0.5, 0.5]; // Размер области выборки (по умолчанию 1 пиксель)
color = thisComp.layer(«Слой-фигура 1»).sampleImage(point, radius, true, time);
point = [640, 360] Указывает координаты точки в слое (в пикселях, начиная с верхнего левого угла [0,0]).
radius = [0.5, 0.5] Определяет область выборки (половина пикселя по горизонтали и вертикали, т.е. один пиксель).
postEffect = true или false Учитывает эффекты, применённые к слою (например, размытие или цветокоррекцию) или не учитывает
color: Возвращает массив [R, G, B, A], но After Effects использует только [R, G, B] для цвета заливки.
//Выражение для свойства Исходный текст Текстового слоя, чтобы увидеть числовой результат
point = [640, 360]; // Координаты точки выборки (x, y)
radius = [0.5, 0.5]; // Размер области выборки (по умолчанию 1 пиксель)
color = thisComp.layer(«Слой-фигура 1»).sampleImage(point, radius, false, time);
——-
2
Анимация на основе яркости пикселя Использовать яркость пикселя для управления масштабом слоя.
//Выражение для свойства Исходный текст Текстового слоя. чтобы увидеть числовые результаты
point = [640 + Math.sin(time) * 100, 200];
radius = [1, 1]; // Область выборки (2×2 пикселя)
sample = thisComp.layer(«Кот»).sampleImage(point, radius, true, time);
brightness = (sample[0] + sample[1] + sample[2]) / 3; // Средняя яркость (R+G+B)/3
scaleFactor = brightness * 100; // Масштаб от 0 до 100%
[scaleFactor.toFixed(2), scaleFactor.toFixed(2)];
//Выражение для свойства Масштаб слоя Кот
point = [640 + Math.sin(time) * 100, 200];
radius = [1, 1]; // Область выборки (2×2 пикселя)
sample = thisComp.layer(«Кот»).sampleImage(point, radius, false, time);
brightness = (sample[0] + sample[1] + sample[2])/3; // Средняя яркость (R+G+B)/3
scaleFactor = Math.max(brightness * 100, 10); // Масштаб от 0 до 100%
[scaleFactor, scaleFactor];
———
3
//Выражение для анимации положения слоя Пусто 1 по оси Х
transform.position + time * 100;
//Выражение для свойства Исходный текст Текстового слоя, чтобы увидеть числовые результаты
point = [thisComp.layer(«Пусто 1»).position[0], 360];
radius = [1, 1]; // Область выборки (2×2 пикселя)
sample = thisComp.layer(«Кот»).sampleImage(point, radius, false, time);
brightness = (sample[0] + sample[1] + sample[2]) / 3; // Средняя яркость (R+G+B)/3
scaleFactor = brightness * 100; // Масштаб от 0 до 100%
[scaleFactor.toFixed(2), scaleFactor.toFixed(2)];
//Выражение для свойства Масштаб слоя Кот
point = [thisComp.layer(«Пусто 1»).position[0], thisComp.layer(«Пусто 1»).position[1]];
radius = [1, 1]; // Область выборки (2×2 пикселя)
sample = thisComp.layer(«Кот»).sampleImage(point, radius, false, time);
brightness = (sample[0] + sample[1] + sample[2]) / 3; // Средняя яркость (R+G+B)/3
scaleFactor = brightness * 100; // Масштаб от 0 до 100%
[scaleFactor.toFixed(2), scaleFactor.toFixed(2)];
point Координаты точки выборки яркости. Изменяются по оси Х в соответствии с положением слоя Пусто
radius Область выборки
sample Получает цвет в точке с областью 2×2 пикселя.
brightness Вычисляет среднюю яркость, усредняя значения RGB.
scaleFactor Преобразует яркость (0–1) в масштаб (0–100%).
Масштаб слоя изменяется в зависимости от яркости выбранной области.
Полезно для создания анимаций, реагирующих на изменения яркости в видео или изображении.
Использование только альфа-канала для масштабирования
point = [Math.sin(time) * 100, 200];
radius = [1, 1];
color = thisComp.layer(«Кот»).sampleImage(point, radius, true, time);
alpha = color[3]; // значение от 0 (прозрачно) до 1 (полностью непрозрачно)
scaleFactor = alpha * 100;
[scaleFactor, scaleFactor];
Комбинированная яркость и альфа
color = thisComp.layer(«Кот»).sampleImage(point, radius, true, time);
brightness = (color[0] + color[1] + color[2]) / 3;
alpha = color[3];
scaleFactor = brightness * alpha * 100;
[scaleFactor, scaleFactor];