ACNews #62
17 декабря 2015

Использование GIMP в pixel art - Рисование, Работа с палитрой, Конвертация изображений в палитровые , Сохранение палитры, Сохранение BMP.

                 Использование 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 цвета, о
которой я упомянул выше




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

Похожие статьи:
Обзор - O новых программах: Narc, The Hundred, Heavy Metal Mover, Quick Draw McGraw, Iice Climber (Альпинист), Super Cars, Lode Runner 3, Down Town, Страна Мифов, Gremlin 2, Sword of Bane, Turbo Skate Fighter, Assault Course, Mercs, Darkman. Десятка лучших игр.
Новогодний выпоск - Жизнь платформы продолжается, и очередной год не будет последним для спектрума!
Все о гитаре - Осмотрите гитару перед ее настройкой.

В этот день...   24 сентября