[AI CC-CC2021] RECOLOR ENGINE v2 by S.H.

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Тут сложно сказать в чем проблема, либо я криво перенес (хотя сверял два раза), либо у Брюса ошибка, либо нужно понимать что это преимущественно отличие цвета (с игнорированием остальных показателей). Собственно dE94 добавил для случаев когда убираются ключевые цвета и нужно подобрать их адекватную по восприятию замену, переход от Lab к LCH в этом случае дает лучшие результаты.

Попробую реализовать FlyMode.

Абсолютно лишняя, через свотчи можно поправить результат.
Если нужно их удалить, то это одно движение мышкой по переносу группы на значок корзины.
У меня в версии 17 работает так: создаётся первая группа, затем скрипт создаёт из неё копию со спотами.
После применения скрипта, первая группа с CMYK вручную удаляется нормально, а вот при удалении группы со спотами, удаляется только значок группы, все споты остаются.
 

splxgf

12 лет на форуме
Сообщения
7 743
Реакции
3 425
Вторая версия скрипта Файл из Облака Mail.Ru
Добавлена кнопка для перекрашивания выделенных объектов "On fly".
Минимальный размер точки в слайдере уменьшен до 1.
Пока имеются некоторые отклонения при перекраске через свотчи, но затрудняюсь найти источник проблемы.
Для создания группы с глобальными цветами можно пользоваться не Recolor Artwork, а добавлением новой группы при выделенных объектах.
onfly.PNG sg.PNG
 
Последнее редактирование:
  • Спасибо
Реакции: dumbm1, Jeine и netik

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Вторая версия скрипта Файл из Облака Mail.Ru
Добавлена кнопка для перекрашивания выделенных объектов "On fly".
Минимальный размер точки в слайдере уменьшен до 1.
Пока имеются некоторые отклонения при перекраске через свотчи, но затрудняюсь найти источник проблемы.
Для создания группы с глобальными цветами можно пользоваться не Recolor Artwork, а добавлением новой группы при выделенных объектах.
Посмотреть вложение 106869 Посмотреть вложение 106870

По поводу минимальной точки - самый простой вариант, по-моему, добавить в самом конце отдельный цикл с условием на затягивание точки с шагом в 0,4% с учётом выбранных галочек CMYK(чтобы не затягивать чёрный, например, если выбрано CMY).
 

splxgf

12 лет на форуме
Сообщения
7 743
Реакции
3 425
По поводу минимальной точки - самый простой вариант, по-моему, добавить в самом конце отдельный цикл с условием на затягивание точки с шагом в 0,4% с учётом выбранных галочек CMYK
Это не самый простой вариант. Сейчас скрипт может затянуть или оборвать цвет в зависимости от лучшего цветового приближения.
Затягивать все используемые краски это не совсем корректно, а принимать такие решения исходя из других факторов это уже не задачи скрипта, для этого существуют специализированные программы и плагины которыми проще и воспользоваться.
 

splxgf

12 лет на форуме
Сообщения
7 743
Реакции
3 425
Я явно что-то пропустил, но что такое: deltaE
Delta E - это общее обозначения для формул по которым можно посчитать отличия между цветами.
Скрипт берет исходный цвет и пытается найти максимально к нему приближенный с помощью этих формул. Для убирания черного канала достаточно формулы DeltaE 76... Для случаев когда убираются другие каналы более подходящими будут DeltaE 94, эти формулы есть в двух вариантах: текстиль / компьютерная графика. Все формулы на одной странице Формула цветового отличия — Википедия
minimal dot size - это минимальный % краски на выходе в каждом канале, к примеру если зададим этот параметр 3, то можем получить цвета 5-4-3-0 или 4-3-0-0 или 0-0-0-0, но не будет 2-1-1-0.
Наверное даже проще показать картинкой из ColorPicker
cp.png
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А разве в данном контексте это не одно и то же?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Наоборот, при фиксированной линиатуре размер точки регулируется процентом растра.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Так я вам об этом и говорю
 

splxgf

12 лет на форуме
Сообщения
7 743
Реакции
3 425
внизу - как перекрасил скрипт, справа - фотошоп (через Channel Mixer),
как по мне - через фотошоп получше (особенно в тенях).
О тенях спорить не буду, но как по мне результат для автоматики вполне достойный.
вот бы сделать так, чтобы
перекрашивание было по тому алгоритму как в ChannelMixer фотошопа...
Вроде @Станислав Хоффман анонсировал разработку такого скрипта, я пока чисто технически не знаю как это реализовать кроме как через глобальные цвета, но этот метод похоже не снискал понимания (да и есть небольшие детальки с которыми нужно управиться).
 

splxgf

12 лет на форуме
Сообщения
7 743
Реакции
3 425
Кстати посмотрите вариант который получается после deltaE 94G.
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Протестировал на РЕАЛЬНОЙ задаче (ссылку прилагаю),
внизу - как перекрасил скрипт, справа - фотошоп (через Channel Mixer),
как по мне - через фотошоп получше (особенно в тенях).
DropMeFiles – бесплатный файлообменник без регистрации
--
Вы, насколько Я понял, перекрашиваете по некому алгоритму, а вот бы сделать так, чтобы
перекрашивание было по тому алгоритму как в ChannelMixer фотошопа...
Channel Mixer будет. Алгоритм как в фотошопе - один-в-один. И с более продвинутым интерфейсом. Остановился на последней стадии - сборка интерфейса - там очень много элементов.
 

splxgf

12 лет на форуме
Сообщения
7 743
Реакции
3 425
И с более продвинутым интерфейсом.
А можно скрин интерфейса для примера?
Кстати нашел в чем у меня ошибка, обработка минимального размера точки вносит искажения. Сейчас внесу правки и добавлю пару плановых фишек и может одну неплановую и в целом будет финальная версия скрипта.
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
А можно скрин интерфейса для примера?
Кстати нашел в чем у меня ошибка, обработка минимального размера точки вносит искажения. Сейчас внесу правки и добавлю пару плановых фишек и может одну неплановую и в целом будет финальная версия скрипта.
у интерфейса будет 2 варианта - компактный и полный - на выбор пользователя. Компактный ещё не готов. Могу скинуть скрин в личку, не хотелось бы сейчас отвлекаться на критику интерфейса.
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
А можно скрин интерфейса для примера?
Кстати нашел в чем у меня ошибка, обработка минимального размера точки вносит искажения. Сейчас внесу правки и добавлю пару плановых фишек и может одну неплановую и в целом будет финальная версия скрипта.
Отлично. Позже тоже сделаю интерфейс для Recolor Engine. Возможно, поковыряюсь с точностью подбора цветов, но идей как это сделать пока нет.
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Всем привет, нужна помощь зала.
Переключение между окнами - скрыть одно и показать другое.
В хелпе к ExtendScript Toolkit описано следующее ограничение:

4.1 “Nested” modal dialogs

The following sequence of operations using dialog (modal) windows is illegal, and will result in an
application crash (assuming the script created two separate dialog windows - win1 and win2):

var result1 = win1.show();
win1.hide();
/* Create and show a nested dialog */
var result2 = win2.show();
win2.close();
win1.show();
win1.close();

As noted in the JavaScript Tools Guide document, calling hide() for a dialog window does not only
change the window's visibility; it is equivalent to calling close(0), which removes the window from its
modal state. If the script calls show() a second time for this window to make it visible again, the
application is likely to crash when the window is finally closed. If your script requires the use of "nested"
modal dialogs, use a sequence like this instead:

var result1 = win1.show();
/* Create and show a nested dialog */
var result2 = win2.show();
win2.close();
win1.close();

С типом pallete работает, а вот с dialog - нет, сообщает о нарушении правил.
Если закрыть окно командой win.close, то его уже не вернуть.

Пример кода для теста:

Код:
var win = new Window ("dialog", "Window 1", [150, 150, 1040, 880]);

     var win2 = new Window("dialog", "Window 2", [150, 150, 600, 250]);   
          win2_pnl = win2.add("panel", [10, 10, 440, 100], "Move slider around"); 
     resetButton2 = win2_pnl.add("button", [25, 10, 125, 40], "Minus x");       

var tpanel = win.add ("tabbedpanel", [5, 5, 650, 680]);
var general = tpanel.add ("tab", [5, 5, 400, 300], "1, 2");  ////  TAB
var win_pnl = general.add ("panel", [0, 0, 500, 500], "1"); ////  PANEL

    var ys1 = 5;
    var ys2 = 30;
    var xxx = 20;
    var yyy = 10;
    var xx2 = 230;
    var yy2 = 45;
    
    var dfg = 8;
    label_CC = win_pnl.add("edittext", [xxx+220, 19+dfg, 280, 38+dfg],             "100"); 

        var slideCC = win_pnl.add("slider", [xxx, 25, xx2, 50], 0, -200, 200);      slideCC.value = 100;

var images = tpanel.add ("tab", undefined, "3, 4");  ////  TAB
images.alignChildren = "fill";
var imwin_pnl = images.add ("panel", undefined, "Options");  ////  PANEL
imwin_pnl.dtd_decl = imwin_pnl.add ("checkbox", undefined, "123");

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////  BUTTONS
//var buttons = win.add ("group");
button1 = win.add ("button", [50, 200, 100, 230], "Export", {name: "ok"});
button2 = win.add ("button", [250, 200, 300, 230], "Cancel");
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     button1.onClick = function()  //  WIN 1
     {   
//  ВЛОЖЕННЫЕ ОКНА
//var result1 = win.show();
win.close();
win2.show();
//var result2 = win2.show();
//win2.close();
     } 

    resetButton2.onClick = function()  //  WIN 2
     {   
//  ВЛОЖЕННЫЕ ОКНА
//var result1 = win2.show();
win2.close();
win.show();
//var result2 = win.show();
//win2.close();
     } 

win.show ();
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А зачем вам его скрывать? В порядке бреда - просто уберите подальше с глаз долой, потом верните.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
ну последнее и будет активно.

вот только одно окно из другого я бы не советовал показывать, в последней модификации ScriptUI от этого начинается форменный бардак, и эти порожденные окна вообще никогда не закрываются
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
я задумал 2 варианта интерфейса - полный и компактный. Хочу по кнопке между ними переключаться. Пока нашёл только вариант в один конец - к окну 2.
 
Последнее редактирование:

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
ну, надо вызывать из обработчика клика функцию с параметром (1 или 2), текущее окно прямо из обработчика закрывать, а из этой функции запускать новое в зависимости от параметра. так по-моему нормально работает.