June 28th, 2013

Willyam Bradberry фотография

After Effects. How to get inverted colors using expressions.

Ковырял тут афтер эффектс, блин, до чего убогие референсы, туториалы и хелпы. Просто вынос мозга.

Вобщем изобрёл на коленке следующий метод получения инвертированного цвета с помощью скриптов
(чел тут на форуме зарядил головоломку, а мне интересно было решить).

Собсно сам скрипт:

В композиции, разумеется должна лежать какая-нибудь цветная подложка.
Скрипт для наглядности создает новый SOLID и закрашивает его инвертированным цветом

// запускается FILE>SCRIPTS>OPEN SCRIPT EDITOR, далее код копируется и проверяется результат
// собсно нужный инвертированный цвет сохраняется в массиве "newInvertedColor"

var fxName = "Sample Image"
var fxEffect = "Sampled Color Output"

var lName = "SASHA GREY MUST DIE AND GENDALF WHITE FOREVER";
var activeItem = app.project.activeItem;
var selectedLayers = activeItem.selectedLayers;
var mc = activeItem.layers.addSolid([1,1,1], lName, activeItem.width, activeItem.height, 1);
mc.blendingMode = 4433;

var expr = "center = effect(\"Sample Image\")(1); radius = effect(\"Sample Image\")(2); sampleImage(center, [radius, radius]); "

var mc2 = activeItem.layers.addSolid([1,1,1], "Adjustment", activeItem.width, activeItem.height, 1);
mc2.adjustmentLayer = "true";

fx = mc2.Effects.addProperty(fxName);
fx(fxEffect).expression = expr;

a = newInvertedColor = (fx(fxEffect).value);

mc.remove();
mc2.remove();

var mc3 = activeItem.layers.addSolid([a[0],a[1],a[2]], "INVERTED GENDALF FOREVER", activeItem.width, activeItem.height, 1);



Если нужно изменить координаты точки, откуда брать цвет, то в строке

var expr = "center = effect(\"Sample Image\")(1); radius = effect(\"Sample Image\")(2); sampleImage(center, [radius, radius]); "

параметр center можно заменить на координаты по осям [x,y]; // внимание - это массив