17 декабря 2015

                 Использование GIMP в pixel art
                         by Hippiman

После статьи в ACNews #61 о конвертации графики из RGB к палитре
ATM Turbo и ZX Evolution (будем писать просто "палитра ATM") 
через Photoshop, у читателей возникли вопросы по поводу того же,
но применительно к GIMP. Сам процесс конвертации графики в GIMP
не сильно отличается от него же в Photoshop, и делать статью
только про это было бы неинтересно. Посему я решил расширить
тему и написать обзорную статью о применении GIMP в pixel art'е.

                           Рисование

Инструменты (карандаш, заливка и т.д.), я думаю, не стоит
описывать. Всё то же самое есть и в Photoshop. Упомяну только
проSelect by color tool - "выделение по цвету"[что-то вроде
"волшебной палочки" в Photoshop, если снять там галочку 
"соседние пиксели" - Ред.]. Как понятно из названия, он 
позволяет выделять в изображении все области выбранного цвета с
определённым допуском -threshold. Это достаточно разноплановый
инструмент, который помогает как найти области с нужным цветом
при конвертации, так и оградить какие-то области от изменения.

Вот несколько напоминалок, которые позволят сильно ускорить
работу в GIMP:

  - Размер кисти можно менять горячими клавишами "[" и "]".
  - Быстро поменять местами основной и фоновый цвета можно
клавишей "X".
  - Быстро "взять" цвет из изображения без инструмента "Пипетка"
можно, просто зажав клавишу "Control" и кликнув по изображению
(если у вас активен какой-то из рисующих инструментов).
  - Линии рисуются от последнего нарисованного пикселя зажатием
клавиши "Shift".
  - Быстрый Zoom висит на цифровых клавишах.
  - Плавно изменять масштаб изображения можно вращениям колеса
мышки с зажатым "Control".
  - Для быстрой навигации по изображению, которое не вмещается
на экран, не нужно пользоваться полосами прокрутки. Зажмите
среднюю кнопку мышки и двигайте изображение в нужную сторону.

Это основное, но лучше заучите горячие клавиши к наиболее часто
используемым инструментам. Так работа пойдёт быстрее.

Ещё одна очень важная вещь при работе с пиксельной графикой
сетка. Вывести сетку на экран можно через менюView->Show Grid.
Обычно, по умолчанию, сетка имеет шаг 10x10 пикселей. Изменить
шаг на более подходящий - 8x8 или 16x16 - можно в меню
Image->Configure Grid. В открывшемся диалоговом окне, помимо
настроек шага сетки, есть ещё много интересного: например, цвет
линий сетки - очень полезная функция при работе с тёмными
изображениями.

                       Работа с палитрой

Теперь перейдём к самому главному. Палитру можно найти в верхнем
правом углу экрана, во вкладкеColourmap. Лучше её сразу оттуда
отцепить, потянув за корешок вкладки, и сделать отдельным окном.
Или прилепить отдельной панелью, без вкладок. Иначе при работе
со слоями придётся постоянно переключаться между вкладками.
(Любое плавающее окошко можно прилепить обратно к какой-нибудь
панели, перетянув его не за заголовок окна, а за корешок
вкладки.)

Двойным щелчком по какому-нибудь из цветов можно открыть диалог
редактирования цвета. После изменения цвета в палитре
автоматически изменится и изображение. Все пиксели с индексом
изменяемого цвета перекрасятся в новый.

Если выбрать в качестве основного цвета рисования цвет не из
палитры, то при рисовании пиксели будут окрашиваться в ближайший
цвет из палитры.

Если вставить из буфера обмена RGB изображение в проект с
палитрой, то RGB изображение будет автоматически конвертировано
в текущую палитру без сглаживания.

              Конвертация изображений в палитровые

Конвертировать готовое RGB изображение в палитровое очень
просто. Для этого нужно открыть диалогIndexed Colour
Conversion. МенюImage->Mode->Indexed. 

Пройдёмся по пунктам этого диалога.
  -"Generate optimum palette" - позволить программе самой
решить, какие цвета попадут в палитру. За максимальное
количество цветов в итоговой палитре отвечает параметр"Maximum
number of colours".
  -"Use web-optimized palette" - как понятно из названия, при
выборе этого пункта программа постарается оптимизировать
итоговую палитру для интернета [видимо, то же, что в Photoshop:
палитра с составляющими #00/#33/#66/#99/#cc/#ff - Ред.]. 
  -"Use black and white (1-bit) palette" - преобразует
изображение к монохромной чёрно-белой палитре.
  -"Use custom palette" - преобразует изображение к заранее
подготовленной палитре.
  -"Remove unused colours from colourmap" - определяет, удалять
или нет неиспользованные цвета из конечной палитры.

Для нас наиболее полезны 1-й и 4-й пункты:"Generate optimum
palette" и"Use custom palette". Советую всегда держать под 
рукой готовую палитру с цветовой картой ATM [соответствует
палитре "Uniform" на 64 цвета в Photoshop - Ред.]. 

Далее идёт группа пунктов, отвечающих за размытие цветов.
  -Colour dithering - позволяет выбрать метод размытия.
  -None - без размытия. Цвета конвертируются приближением к
ближайшему цвету в палитре.
  -Floyd-Steinberg (normal) и Floyd-Steinberg (reduce colour
bleeding) - размытие по Флойду - Стейнбергу.
  -Positioned - фиксированное размытие. Более простое, чем по
Флойду - Стейнбергу, но в то же время более применимое в pixel
art'е.
  -Enable Dithering on transparency - применять ли размытие к
альфа-каналу.

Для конвертации небольших изображений лучше использовать
фиксированное размытие или не использовать размытие вообще.
К сожалению, каких-либо дополнительных вариантов размытия для
GIMP я не смог найти. Единственный вариант, который может как-то 
скрасить скудность выбора - платный модуль для Photoshop
"XiColorDither" с 30-дневным пробным периодом (в GIMP можно 
использовать модули от Photoshop при помощи дополнения PSPI ).
В любом случае, автоматическое размытие на маленьких картинках
выглядит грязно. Красиво конвертировать какой-нибудь спрайт без
работы руками не выйдет даже с XiColorDither. Более-менее
приемлемая картинка получается от 320x200 и выше.

А теперь о том, как с помощью этого диалога можно преобразовать
любое изображение к палитре ATM.

 1. Делаем "Generate optimum palette". "Maximum number of
colours" подбираем опытным путём в зависимости от изображения -
так, чтобы после этого шага картинка выглядела пристойно, но
количество цветов было минимальным. Обычно это примерно 60 - 70
цветов.
 2. Пробуем преобразовать изображение обратно в RGB, а затем в
заранее подготовленную ATM палитру через"Use custom palette".
На этом этапе GIMP приведёт все цвета в изображении к ближайшим
из палитры.
 3. Если картинка сильно изменилась в цветах и чистая ATM
палитра не подходит, откатываемся назад и пытаемся подстроить
проблемные цвета вручную.
 4. Смотрим - если цветов <= 16, переходим к этапу ручной
правки финальной картинки.
 5. Если цветов больше 16, то ищем похожие цвета, которые можно
"слить вместе". Для этого я чаще всего использую следующий
приём. Разглядываю палитру изображения и ищу похожие цвета,
после чего прямо в палитре меняю какой-нибудь из них на любой
другой, которого нет на картинке (например ядовито-розовый).
(Было бы хорошо, если бы в GIMP можно было автоматически
подсвечивать все пиксели изображения с текущим цветом из
палитры, но увы. Такой функции нет, приходится плясать с
бубном.) Если областей с этим цветом получилось мало, просто
меняю этот цвет на соседний. В итоге в палитре получается
несколько одинаковых цветов.
 6. Когда цветов, которые можно совместить, не остаётся, можно
попробовать избавиться от какого-то цвета совмещением двух
других. Допустим, в изображении есть область оранжевого цвета.
Тогда её можно заменить шахматной штриховкой красного и желтого.
Как это делается:
  - Создаётся ещё один слой. В этом слое рисуется маленький
образец заливки. Например, 4 пикселя: 2 красных и 2 желтых. Этот
пример копируется в буфер обмена, а затем слой прячется.
  - Инструментом"Select by color" ("Выделение по цвету")
выделяем все области в изображении с нужным нам цветом.
  - Выбираем инструмент"Bucket fill tool" ("Заливка").
  - ВFill type (тип заливки) выбираем "Pattern fill". Жмём на
посветлевший квадратик с текстурой и в раскрывшемся списке
выбираем левый верхний угол. Это наш образец заливки.
  - Не забываем выделить"Fill whole selection" ("Заливка всего
выделения"), иначе заливка произойдёт только в той области, куда
мы ткнули мышкой.
  - Заливаем ненужный нам цвет. После чего смотрим на результат
и правим его руками.
 7. После всех этих манипуляций количество используемых цветов
должно сильно сократиться. Чтобы обновить палитру изображения,
преобразуем его в RGB:Image->Mode->RGB. А затем обратно к
палитре:Image->Mode->Indexed, с использованием оптимальной
палитры.
 8. Если цветов всё ещё больше 16, возвращаемся к пункту 4.

Как вариант, который может дать более приятный результат при
конвертации изображения в свою палитру, можно предложить
предварительно уменьшить в нём количество цветов.
Делается это так:Colours->Posterise, и в открывшемся диалоге
указываем уровень постеризации, после этого действуем так же,
как и с исходным изображением. Проверено экспериментально, что
преобразование 256-цветного изображения со спрайтами к 16 цветам
ATM палитры через постеризацию с уровнем 3 выглядит намного
приятней, чем преобразование его к той же палитре без
постеризации.

                       Сохранение палитры

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

Это делается так:

 1. Colors->Map->Set Colormap
 2. Жмём на кнопку Default, откроется окно Script-fu: palette
selection.
 3. Прокручиваем список в самый верх и находим там текущую
цветовую карту изображения.
 4. Правой кнопкой мыши на этой цветовой карте. Выбираем
Duplicate palette.
 5. Переименуем копию текущей цветовой карты во что-нибудь
более понятное.
 6. Всё - теперь эта палитра будет доступна для всех
изображений, во всех диалогах.

Сами палитры обычно хранятся в директории
C:Users%username%.gimp-2.8palettes.
Этот путь можно изменить в меню
Edit->Preferences->Folders->Palettes.
Файл палитры - это обычный текстовый файл, который открывается и
редактируется простым блокнотом. Вот примерное содержание
палитры:

GIMP Palette
Name: Colormap of Image #1
Columns: 8
#
255   0   0#0
210   3  16#1
 6   8   4#2
177 183 191#3
... 
208  97 145#255

При необходимости палитру можно полностью подготовить или
исправить вручную.

                         Сохранение BMP

После всех манипуляций с проектом вы, скорее всего, захотите
получить готовыйBMP, который можно будет использовать где-то
ещё. В новых версиях GIMP, непонятно почему, простым сохранением
"Save"/"Save as" можно сохранять только в родной для GIMP формат
-XCF. Для сохранения в другие форматы нужно пользоваться
пунктами"Export"/"Export as".

Далее - очень важно!!! В диалоге"Export Image as BMP" нужно 
раскрыть"Compatibility options" и поставить галочку напротив
"Do not write color space information". Иначе готовыйBMP может
неадекватно восприниматься другим софтом. Например, EvoSDK из
таких изображений вообще не может достать палитру и воспринимает
их как черно-белые.

                             * * *

GIMP - хорошая бесплатная программа, которой для большинства 
задач, не связанных с профессиональной обработкой фотографий,
хватает с головой. Я постарался изложить самое необходимое.
Здесь, конечно, далеко не всё, возможности GIMP намного шире,
чем простое рисование цветных точек, но для начала работы с
пиксельной графикой вполне хватит.

В архиве с газетой находится та самая ATM палитра на 64 цвета, о
которой я упомянул выше



Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Entry - The summer skopo come.
Amiga UMA - Pros and cons of Unified Memory Architecture.
Contest - Who was the first find all the jokes in this issue of the newspaper.
From the authors - the long awaited event finally happened ...

В этот день...   21 November