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]; // внимание - это массив
Вобщем изобрёл на коленке следующий метод получения инвертированного цвета с помощью скриптов
(чел тут на форуме зарядил головоломку, а мне интересно было решить).
Собсно сам скрипт:
В композиции, разумеется должна лежать какая-нибудь цветная подложка.
Скрипт для наглядности создает новый 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]
Если нужно изменить координаты точки, откуда брать цвет, то в строке
var expr = "center = effect(\"Sample Image\")(1); radius = effect(\"Sample Image\")(2); sampleImage(center, [radius, radius]); "
параметр center можно заменить на координаты по осям [x,y]; // внимание - это массив