Вступ до SeExpr

Нове в версії 4.4: Цей документ є вступом до мови виразів SeExpr.

Для чого призначено SeExpr?

SeExpr — придатна до вбудовування мова виразів, яку розроблено Disney Animation, і яка дає змогу базовим програмам обробляти динамічно створені дані. Pixar називає цю мову у своїй документації «генератором і поєднувачем визначених скриптами візерунків».

Доступ до SeExpr у Krita можна отримати за допомогою засобу заповнення кольором.

Тло

Щоб краще зрозуміти призначення SeExpr, нам слід поділити графіку на два типи: растрова і процедурна.

Більшість створених за допомогою комп’ютерів зображень, які ви бачите щодня, належать до першого типу — зображення подібні до фотографій, знімків з вашого улюбленого аніме, меми — усе це величезні набори маленьких кольорових крапок або пікселів, які розташовано у формі певної ґратки.

У растрової графіки є два недоліки. Перший пов’язано із тим, що її роздільна здатність є фіксованою. Ви не можете збільшити масштаб і якимось чарівним чином отримати кращу деталізацію. Далі, якщо у вас виникне потреба у зміні растрової графіки, вам доведеться або повертатися до початкового зображення і знову виконувати його дискретизацію (іноді це неможливо), або редагувати зображення у програмі для редагування растрової графіки, подібній до Krita.

Втім, однією з найбільших проблем є те, що ми завжди обмежені об’ємом пам’яті, яким може скористатися програма. Це може бути або об’єм вторинного сховища, подібного до SD-картки, або об’єм оперативної пам’яті. Якщо дані зображення не стиснуто, пам’ять, потрібна для зберігання його даних, квадратично залежить від лінійного розміру зображення. Зокрема, у діалоговому вікні Створення документа Krita повідомляє вам три значення: розмір зображення у пікселях, об’єм пам’яті, потрібний для зберігання даних пікселя, та загальний об’єм пам’яті, потрібний для зберігання зображення.

../_images/Krita_newfile.png

Це резюме для квадратних текстур. Зауважте, що вказані об’єми пам’яті лише для одного шару:

Розмір

Потрібний об’єм пам’яті

256

256 кБ

512

1 МБ

1024

4 МБ

2048

16 МБ

4096

64 МБ

Альтернативою є векторна графіка. Векторна графіка, наприклад SVG, для опису форм використовує формули, подібні до визначення сплайнів та кривих Безьє. Оскільки форми визначено математичними формулами, їхні розміри можна змінювати так, щоб вони відповідали вашим потребам.

SeExpr належить до іншого класу, процедурної графіки. Подібно до векторної графіки, у процедурній графіці для вторинного зберігання визначення потрібно лише декілька кілобайтів пам’яті. Втім, графіка не визначається математичними формулами — ви, насправді, програмуєте, як обчислюється колір кожного з пікселів текстури. І, оскільки точність обчислень нічим не обмежено, ви можете створювати складні візерунки на шарах у повністю довільній роздільній здатності.

Написання скрипту

У цих настановах ми покажемо вам, як написати скрипт на SeExpr, обробити його, отримавши шар, а потім зберегти результат як набір.

Розпочнімо з переходу на бічну панель шарів і додавання нового шару заповнення. Далі, виберімо генератор SeExpr зі списку. У відповідь буде показано таке вікно:

../_images/SeExpr_editor.png

Діалогове вікно генератора SeExpr поділено на дві вкладки. Зупинімося на вкладці Параметри.

Примітка

У розділі Шари заповнення ці вкладки описано докладніше.

Розпочнімо із малювання шару світлим синім кольором.

Для початку, скрипти SeExpr мають визначати змінну результату. Назвімо її $color. Оскільки SeExpr обробляє кольори у просторі кольорів RGB, змінні кольорів визначаються трійкою чисел, яка відома як вектор. Розпочнімо з визначення змінної $color і надання їй значення.

Перейдіть до поля для введення тексту і спорожніть його, якщо у ньому містився якийсь текст. Далі, визначте і встановіть для $color якесь значення, наприклад [0.5, 0.5, 1] (напівсвітлий червоний, напівсвітлий зелений і повністю світлий синій):

$color = [0.5, 0.5, 1];

SeExpr потрібно знати, яка змінна міститиме остаточне значення кольору. Вказати змінну можна наприкінці скрипту, у власному рядку із назвою:

$color

Тепер скрипт має виглядати так:

$color = [0.5, 0.5, 1];
$color

Натисніть кнопку Гаразд, і спостерігайте за результатами роботи вашого першого скрипту!

../_images/SeExpr_first_render.png

Попередження

Якщо бути абсолютно точним, у SeExpr не передбачено можливостей із керування кольорами. Обробний завжди визначає текстури як 32-бітові із рухомою крапкою зображення sRGB із виправленням гамми. Krita перетворює їх до простору кольорів документа за допомогою профілю sRGB-elle-V2-srgbtrc.icc.

Див. розділ Процедура керування кольорами, щоб дізнатися про це більше.

Керування вашим скриптом за допомогою віджетів

Передбачено також інший спосіб визначення і редагування ваших змінних. Відкрийте панель властивостей шару заповнення, клацнувши правою кнопкою миші на пункті Шар заповнення 1, і вибравши Властивості шару….

../_images/SeExpr_prop_1.png

Помітили середню панель? Щойно буде виявлено синтаксично коректний скрипт, SeExpr увімкне увесь набір регуляторів для керування окремими змінними. У прикладі, який ми навели вище, ви можете змінити $color у три способи:

  • ввести значення червоного, зеленого або синього каналу у поля для введення

  • пересунути маленькі розфарбовані повзунки для зміни значення відповідного каналу

  • клацнути на квадратику попереднього перегляду ліворуч від полів для введення для вибору повністю нового кольору.

Останньою кнопкою на середній панелі завжди є кнопка Додати нову змінну. Натискання цієї кнопки відкриває таке діалогове вікно:

../_images/SeExpr_add_variable.png

У цьому діалоговому вікні буде показано усі типи змінних, які приймаються SeExpr:

Крива і крива кольорів

Це версії SeExpr позиційних градієнтів: вони є інтерполяціями заданого набору значень.

Кривим відповідають одновимірні градієнти, кожній точці кривої відповідає одне число із рухомою крапкою.

Кривій кольорів відповідають градієнти RGB, кожній точці такого градієнта відповідає певний колір (трійка значень).

Цілі числа і числа із рухомою крапкою.

Числа.

Вектор

Трійка чисел із рухомою крапкою.

Колір

Вектор, що відповідає кольору RGB.

Зразок

Список кольорів.

Рядок

Зазвичай, одинарні слова.

Наприклад, ви можете відтворити $color на вкладці Вектор:

../_images/SeExpr_add_variable_vector.png

Створення вашого першого набору

Якщо у вас є готовий скрипт, ви можете повторно скористатися ним створивши набір.

Створити набір можна за допомогою верхньої панелі вкладки «Параметри»:

../_images/SeExpr_editor.png

Виберіть пункт Зберегти новій набір SeExpr…. У відповідь буде відкрито таке діалогове вікно:

../_images/SeExpr_save.png

Ви можете змінити назву набору у верхньому полі для редагування і встановити мініатюру для полегшення ідентифікації набору.

Підказка

У діалоговому вікні до назви набору буде дописано «Копія», якщо набір є копією наявного набору. Ви можете змінити назву довільним чином.

У діалоговому вікні передбачено такі варіанти встановлення мініатюри:

Завантажити наявну мініатюру

Якщо у набору вже є мініатюра (наприклад, якщо ви створили набір на основі наявного набору), ця кнопка завантажить і застосує її.

Завантажити зображення

Застосовує як мініатюру зображення з файла у файловій системі.

Обробити скрипт до мініатюри

Обробляє ваш скрипт до текстури розміром 256 на 256 пікселів і застосовує отримане зображення як мініатюру.

Вилучити мініатюру

Вилучає мініатюру. Зауважте, що якщо набір є копією наявного набору, ви можете скасувати цю дію натисканням кнопки Завантажити наявну мініатюру.

Зміна наявних наборів

Якщо ви зміните скрипт набору, ви побачите дві нові кнопки на верхній панелі вкладки Параметри:

../_images/SeExpr_overwrite_preset.png

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

Крім того, ви можете змінити назву набору натисканням кнопки перейменування із наступним введенням нової назви і натисканням кнопки Зберегти:

../_images/SeExpr_rename_preset.png

Створення пакетів з ваших наборів

Поділитися вашими скриптами просто! Набори скриптів SeExpr є подібними до будь-яких інших ресурсів у Krita. Виконайте настанови з розділу Керування ресурсами, щоб створити ваші власні пакети.