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