-
Notifications
You must be signed in to change notification settings - Fork 0
/
tutorial-tracing-pixelart-ru.txt
71 lines (39 loc) · 16 KB
/
tutorial-tracing-pixelart-ru.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Inkscape учебник: Трейсинг пиксел-арта
До появления у нас доступа к редакторам векторной графики...
Даже до дисплеев с разрешением 640x480...
Это было обыденно - видеоигры с тщательно прорисованными пикселами на дисплеях с низким разрешением.
Мы называем это "Pixel Art", вид искусства, который родился в то время.
Inkscape работает на libdepixelize, библиотеке автоматической векторизации "специальных" пиксел-арт изображений. На других видах входящих изображений результат не будет так же хорош, для этого лучше использовать другой трассировщик Inkscape - Potrace.
Давайте начнём с образца изображения, чтобы показать вам возможности этого движка векторизации. Ниже приводится пример растрового изображения (взято из Liberated Pixel Cup) слева и его векторизованного вывода справа.
file:///home/ashed/scrapbook-blackline/data/20150611193348/tracing-pixelart-f01-en.svg.png
Пример изображения
libdepixelize использует алгоритм Kopf-Lischinski для векторизации изображений. Этот алгоритм использует идеи из нескольких методов компьютерной науки и математических понятий для получения хорошего результата в пиксел-арт изображениях. Заметьте, что альфа-канал полностью игнорируется алгоритмом. libdepixelize не имеет в настоящее время расширения, для восстановления данного класса изображений, но все пиксел-арт изображения с поддержкой альфа-канала дают результаты, аналогичные основному классу образов, распознаваемых алгоритмом Kopf-Lischinski.
file:///home/ashed/scrapbook-blackline/data/20150611193348/tracing-pixelart-f02-en.svg.png
Пример изображения
Изображение выше имеет альфа-канал и получившийся результат просто отличен. Тем не менее, если вы найдете пиксел-арт изображение с плохим результатом, и вы уверены, что причина в альфа-канале, то свяжитесь с сопровождающим libdepixelize (например, чтобы заполнить ошибку на странице проекта), и он будет рад расширить алгоритм. Он не может расширить алгоритм, если он не знает, какие изображения дают плохие результаты.
Изображение ниже - скриншот диалога Trace Pixel Art в английской локализации. Вы можете открыть этот диалог, используя меню Контур > Векторизовать пиксельную графику... или нажав правой кнопкой мыши на изображение объекта, а затем Trace Pixel Art.
file:///home/ashed/scrapbook-blackline/data/20150611193348/tracing-pixelart-f03-en.svg.png
Пример изображения
Это диалоговое окно состоит из двух разделов: эвристика и вывод. Эвристика ориентирована на продвинутых пользователей, но умолчальные настройки уже хороши, и вам не нужно об этом беспокоиться, так что давайте оставим это на потом и начнём с объяснения вывода.
Алгоритм Kopf-Lischinski работает (с точки зрения высокого уровня) как компилятор, конвертируя данные из нескольких типов представления. На каждом шаге алгоритм имеет возможность изучить операции, которые это представление предлагает. Некоторые из этих промежуточных представлений имеют правильное визуальное представление (как реконструированный клеточный граф вывода алгоритма Voronoi), а некоторые нет (как графы подобия). Во время разработки libdepixelize пользователей опрашивали для добавления возможности экспорта эти промежуточных этапов на libdepixelize и автор оригинальной версии libdepixelize позволил внести эти изменения.
Вывод по умолчанию должен дать смягченный результат - возможно тот, который вы хотите. Вы уже видели результат вывода по умолчанию на первых образцах этого урока. Если вы хотите испробовать этот способ самостоятельно - просто откройте диалог трассировки Pixel Art и нажмите на кнопку OK после выбора какого-либо изображения в Inkscape.
Вы можете увидеть вывод алгоритма Вороного ниже - "реформированное пиксельное изображение", где клетки (ранее пикселы) были изменены для соединения подобных пикселов. Кривые при этом не создаются, и изображение по-прежнему состоит из прямых линий. Разница будет видна при увеличении изображения. Ранее пикселы не могли разделять край с соседом по диагонали. Но теперь (благодаря графу цветового подобия и настраиваемой эвристике, которые дают лучший результат) возможно заставить две диагональных клетки разделить край (ранее разделялись лишь единичные вершины).
file:///home/ashed/scrapbook-blackline/data/20150611193348/tracing-pixelart-f04-en.svg.png
Пример изображения
Стандартный B-Spline вывод даст вам гладкие результаты, потому что предыдущий вывод Вороного будет преобразован в квадратичные кривые Безье. Тем не менее, преобразование не будет 1:1, потому что там больше эвристик, решающих когда кривые будут объединены в одну, при достижении алгоритмом Т-образного перекрёстка среди видимых цветов. Намек на эвристики этого этапа: их пока нельзя настроить.
Заключительный этап libdepixelize (в настоящее время не экспортируется в Inkscape GUI из-за его экспериментального и незавершенного состояния) это "оптимизация кривых" для удаления ступенчатого эффекта B-Spline кривых. На этом этапе также выполняется обнаружение границ, чтобы предотвратить некоторые особенности сглаживания и применяется триангуляция, чтобы исправить положение узлов после оптимизации. Вы сможете индивидуально отключать каждую из этих функций, когда этот вывод перестанет быть экспериментальным в libdepixelize (надеюсь что скоро).
Раздел эвристики в GUI позволяет настраивать эвристики, используемые libdepixelize для решения, что делать, когда он сталкивается с 2x2 пиксельным блоком, где две диагонали имеют схожие цвета. "Какое соединение я должен сохранить?" - вот то, что решает libdepixelize. Он пытается применить все эвристики для конфликтующих диагоналей и сохраняет соединение победителя. Если происходит связывание, оба соединения удаляются.
Если вы хотите проанализировать влияние каждого правила и поиграть с числами, лучший вывод - это вывод Вороного. Вы можете легче увидеть эффекты эвристики на выводе Вороного и когда вы будете удовлетворены полученными настройками, можете просто изменить тип вывода на нужный вам.
Изображения ниже построчно состоят из оригинального изображения и B-Splines вывода с единственной включенной эвристикой. Обратите внимание на фиолетовые круги, которые указывают на различия в выполнении эвристик.
file:///home/ashed/scrapbook-blackline/data/20150611193348/tracing-pixelart-f05-en.svg.png
Пример изображения
Для первой попытки (верхнее изображение) включена только эвристика кривых. Эта эвристика пытается сохранить длинные кривые, связанные вместе. Можно заметить, что её результат аналогичен последнему изображению, в котором применена эвристика разрежённых пикселей. Одно из отличий состоит в том, что "сила" этой эвристики более справедлива и применима, когда действительно важно сохранить связи. Определение "справедливости" основано на "человеческой интуиции", применяемой к пикселу из базы проанализированных данных. Ещё одно отличие в том, что эта эвристика не может решить, что делать, когда группа соединений состоит из больших блоков, а не длинных кривых (представьте себе шахматную доску).
Для второй попытки (среднее изображение) включена только островная эвристика. Единственное, что делает эта эвристика - пытается удержать связь, которая в противном случае приводит к нескольким изолированным пикселам (островам) с постоянным весом голосования. Такая ситуация встречается не так часто, так как такие ситуации обрабатываются другими эвристиками, но этот эвристический подход в таких случаях даёт ещё лучшие результаты.
Для третьей попытки (нижнее изображение) включена только эвристика разрежённых пикселей. Эта эвристика пытается сохранить кривые, связанные с основным цветом. Для определения, что это - цвет переднего плана эвристика анализирует окно с пикселами вокруг конфликтующих кривых. Для этой эвристики вы настраиваете не только её «силу», но также и размер окна анализируемых ею пикселов. Но имейте в виду, что при увеличении окна анализируемых пикселов максимальная «сила» для голоса этого окна также будет увеличиваться, и, возможно, вам придётся настроить множитель для голосования. Автор оригинальной версии libdepixelize думает, что эта эвристика слишком жадная и предпочитает использовать значение "0,25" для её множителя.
Даже если эвристика кривых и эвристика разрежённых пикселов дают сходные результаты, вы можете оставить их обе включенными, эвристика кривых может дать дополнительную безопасность, чтобы важные кривые контуров пикселов не мешали в тех случаях, которые могут быть разрешены только эвристикой разрежённых пикселов.
Подсказка: Вы можете отключить все эвристики, установив значения множителя/веса в ноль. Вы можете испортить любую эвристику с помощью отрицательных значений для множителя/веса. Почему бы вам, при желании, не заменить настроенное поведение эвристики противоположным поведением? Потому что вы можете ... потому что вы хотите "художественный" результат ... неважно... просто потому, что это возможно.
И вот оно! В этом первом выпуске libdepixelize есть все эти опции. К тому же если исследование автора оригинальной версии libdepixelize и его творческого наставника будет успешным, вы сможете получить дополнительные опции, которые расширят диапазон изображений, для которых libdepixelize даёт хороший результат. Пожелаем им удачи.
Все изображения, используемые здесь, были взяты из Liberated Pixel Cup, чтобы избежать проблем авторского права. Ссылки ниже:
http://opengameart.org/content/memento
http://opengameart.org/content/rpg-enemies-bathroom-tiles