Выражения. Метод 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];