Каждому из нас хоть раз в жизни хочется создать рисунок с полупрозрачностью, собрать анимацию из простых нарисованных кадров, выдрать какой нибудь кадр из AVI-фильма и создать мозаичную карту, написав впоследствии двумерную игру, в которой герой бегает по этой подгружаемой карте.
Как ни странно, но в бесплатном графическом редакторе PaintCAD 4Windows с версии 1.2.1 стало возможным:
- создавать/загружать из PNG-файлов рисунки с полупрозрачным фоном и сохранять их в PNG
- удобно редактировать последовательности BMP/JPG кадров в специальном интерфейсе «Очередь кадров», применять к ним различные эффекты и собирать из них AVI видеофайлы
- разбирать уже имеющиеся AVI на кадры, извлекать из них кадры по одиночке или сразу в некотором диапазоне
- создавать мозаичные карты для игр или оформления таблиц, рисуя элементы мозаики (тайлы) по отдельности или в окружении соседних элементов, проверять стыки между ними, создавать раскладки из тайлов, сохранять и загружать раскладки
Как же всё это сделать? И как же оно разрабатывалось?
Использование альфа-канала в PaintCAD 4Windows
Так повелось, что паинткаде нет слоёв. Здесь рисунок — это «кусок бумаги» с картинкой. Поэтому никогда не стоял вопрос «а что за рисунком?». За рисунком — фоновый цвет (он же цвет заднего фона, он же ЗЦ). Все операции по вырезанию или сдвигу пикселей знали, что надо оставить на пустых местах ЗЦ.
Когда разрабатывалась в далеких 200х годах еще древняя явовская мобильная версия паинткада, то кроме Вставки, которая вставляла скопированный прямоугольный фрагмент, появилась Спецвставка. Нужно было вставлять один рисунок на другой, при этом указать паинткаду «прозрачный цвет», который не вставлялся на рисунок. Это все в дальнейшем переехало и в паинткад для windows:
Прозрачный цвет устранялся, объект вставлялся, все были счастливы.
А чтобы они были еще счастливее — можно было указать с какой прозрачностью в процентах вставлять оставшийся непрозрачным кусок рисунка:
Но после всех этих операций фон рисунка все равно оставался непрозрачным.
В версии 1.2.1 в команду по открыванию любых известных паинткаду типов файлов (Ctrl+O, "???-файл") был добавлен PNG формат. И если паинткад почувствует, что внутри файла есть альфа-канал прозрачности — то он спросит вас:
Чтобы подгрузить и рисунок, и альфа-канал — нужно выбрать третий пункт «Картинку на рисунок, альфу в буфер».
Тогда вот такой рисунок на прозрачном фоне:
будет разложен в паинткаде на картинку (которая будет на рисунке) и альфа-канал (который будет во внутреннем буфере паинткада), на котором белые пиксели — полностью непрозрачные, черные пиксели — полностью прозрачные, серые — промежуточные градации прозрачности:
А если затем при сохранении указать что хотим сохранить «PNG», то паинткад спросит вас еще раз о прозрачности:
И при выборе «Использовать буфер как альфа-канал» сохранит PNG обратно вместе с его альфа-каналом.
Соответственно, чтобы создать с нуля рисунок с полупрозрачностью — нужно откопировать ваш рисунок в буфер (Ctrl+C) и довести его там в буфере до кондиции альфа-канала. Поэтому потребовалось быстро переключаться между буфером и рисунком.
Раньше уже такие команды были добавлены в паинткад, это «Рисунок<->Буфер» в меню команд по Ctrl+Вправо, и это обмен рисунка и буфера в режиме 3D стерео рисования. Но тут нужно было отдублировать эту команду еще раз, сделать ее доступной, легко запускаемой с клавиатуры в любое время, и чтобы было понятно что она «для переключения между картинкой и альфа-каналом».
Поэтому в главном меню (которое включается при нажатии на кнопку «Меню» в левом верхнем углу окна или по нажатию «0» на клавиатуре) было добавлено целое новое подменю «Альфа».Первой в нем появилась команда «Рисунок<->Буфер» (Ctrl+D) и теперь по этому сочетанию клавиш можно переключаться между рисунком и его альфа-каналом.
В процессе рисования хочется посмотреть «как же мой рисунок будет выглядеть на прозрачном фоне». Поэтому в Предпросмотре (F3) была добавлена кнопка «Наложение альфы (D)», доступная к нажатию когда буфер не пуст.
Нажимая на эту кнопку или на клавишу «D» можно предпросматривать не только просто рисунок, а рисунок наложенный с альфой на черный фон, белый фон или сетчатый фон (на котором хорошо видно, как раскладывается прозрачность поверх регулярной текстуры).
Также пользователь может захотеть наложить таки этот рисунок с альфой на определенный фон — для этого в меню «Альфа» есть вторая команда «Наложить альфу из буфера на рисунок», которая предложит вам варианты, в которых помимо Черного, Белого и Сетчатого фонов будут фоны цвета ПЦ и ЗЦ:
Но такой вариант наложения используется редко, чаще пользователь может захотеть взять такой PNG с альфа-каналом, подгрузить его и потом наложить на какой нибудь другой рисунок.
Т.к. в паинткаде всего один рисунок и один буфер, то если в них будет храниться наш PNG и его альфа-канал — то куда же девать рисунок, на который мы хотим всё это дело вставить?
Для этого в меню «Альфа» лежат последние две команды.
«Захват рисунка и альфа-буфера для спецвставки» (Ctrl+Shift+C) — помещает альфа-канал в специальный слот. После этого рисунок копируется в буфер. И теперь вставляемый рисунок лежит в буфере, его альфа-канал лежит в спецслоте. Текущий рисунок при этом пуст. Открываем картинку, на которую будем вставлять. И используем Спецвставку (в меню Выделения и буфера обмена, доступном по Alt+".") — после Захвата она знает, что не надо спрашивать о прозрачности ничего, надо просто использовать альфа-канал из спецслота.
Таким образом, кладем наш PNG с альфа-каналом на любой другой рисунок:
Как только закончили вставлять рисунок с альфа-каналом — надо отменить захват, чтобы Спецвставка снова стала работать как обычно, для этого вызываем в меню «Альфа» команду «Отменить захват» (Ctrl+Shift+X).
Таким образом, в PaintCAD 4Windows можно рисовать картинки с полупрозрачностью, загружать их из PNG, сохранять в PNG и вставлять на другие картинки.
Видеомонтаж в PaintCAD 4Windows
Раньше, еще в мобильной версии паинткада был написан запаковщик анимированных GIFов. И поэтому понятия «Видео» в паинткаде не существовало, была только GIF-анимация. Можно было собирать анимации из GIF кадров и разбирать их на GIF кадры.
Вся эта работа с GIFами также была перенесена в паинткад для windows и всегда находилась в меню «Утилиты»:
У анимированных GIFов есть особенность: каждый кадр может иметь любую задержку. Там нет понятия «FPS» или «Количество кадров в секунду»:
(в паинткаде кадры для видео и анимаций хранятся в отдельных файлах, например, в папке лежит 1000 GIF кадров — и из них можно собрать одну GIF анимацию)
При переписывании паинткада под windows была добавлена возможность сборки AVI-видеофайлов из BMP/JPG кадров. И здесь обозначилась проблема — нельзя просто так взять и задержать один из кадров AVI-файла.
Кроме того, в паинткаде кадры именуются просто 1.bmp, 2.bmp, 3.bmp....9.bmp, 10.bmp...99.bmp, 100.bmp и т.д., и чтобы, например, задержать в AVI на секунду третий кадр при скорости проигрывания 24 кадра в секунду — нужно его отдублировать с 3.bmp по 26.bmp, а у всех кадров, которые были впереди — увеличить имена в названиях файлов на 24.
Поэтому очень нужно было средство видеомонтажа чтобы обрабатывать длинные последовательности кадров. И в версии 1.2.1 оно появилось.
И из-за него появилось даже целое структурированное меню «Утилиты»-«Обработка BMP/JPG кадров».
Первый пункт в этом меню «Просмотр очереди (Ctrl+J)» — и есть вызов утилиты для видеомонтажа. После вызова этого пункта и выбора одного из BMP/JPG файлов-кадров вашей последовательности появится окно просмотра и редактирования последовательности кадров:
Слева направо в нижней части окна находится сама очередь. На каждом кадре написано его имя и момент времени его показа. Если зажать Shift — то вместо времени на каждом кадре будет отображаться его мини-изображение.
Слева вверху окна показывается изображение кадра, масштабированное по размеру этой области предпросмотра.
Справа вверху окна показывается информация: имя файла кадра, размеры кадра в пикселях, текущая скорость проигрывания в кадрах в секунду, длина текущего выделения (начало-конец выделения), отрезок последовательности кадров, скопированный в буфер.
Пользователь может легко бегать по очереди кадров курсором (просто бегать по 1 кадру, удерживая Q — по 10 кадров, A — по 100 кадров, Z — по 1000 кадров, W — по 10000 кадров за шаг), выделить часть очереди кадров, скопировать или передвинуть ее, сделать стоп-кадр (затянуть один кадр), вставить пустой промежуток (сдвинув остальные кадры спереди) и многое другое (подробнее см. ниже назначение кнопок). В конце после правки последовательности можно проиграть выделенный участок и всю последовательность целиком. И потом собрать ее в AVI и запустить на плеере, установленном по умолчанию для проигрывания AVI в вашей системе.
К/С (F) — вызывает окно установки количества кадров в секунду для будущей анимации (от 1 до 30 к/с).
Предыдущий (ВЛЕВО) и Следующий (ВПРАВО) — перемещает курсор по кадрам последовательности.
Перейти (G) — вызывает меню выбора места переходов. Можно перейти до ближайшего разрыва последовательности назад или вперед, до конца анимации назад или вперед или на конкретный кадр (тогда нужно ввести номер кадра).
Правка (ENTER) — открывает кадр, на котором стоит курсор, в паинткаде через «Открыть ???».
Выделение (ПРОБЕЛ) — начинает/заканчивает выделять отрезок последовательности. Если дважды применить на одном кадре — то выделение сбрасывается и считается, что оно находится в текущем положении курсора и длиной 1 кадр (двигается вместе с перемещением курсора).
Копировать (Ctrl+C) — запоминает выделенный отрезок последовательности
Вставить (Ctrl+V) — переносит копию ранее скопированного функцией «Копировать (Ctrl+C)» отрезка последовательности в новое место, первый кадр отрезка ставится туда, где стоит курсор.
Переместить (Ctrl+B) — переносит копию ранее скопированного функцией «Копировать (Ctrl+C)» отрезка последовательности в новое место, первый кадр отрезка ставится туда, где стоит курсор. Старое местоположение отрезка — очищается от кадров (т.е. кадры переносятся в новое место).
Удалить (Ctrl+X) — выделенный отрезок последовательности очищается от кадров после подтверждения операции пользователем.
Проиграть (P) — начинает проигрывание последовательности кадров со установленной кнопкой «К/С (F)» скоростью. Если выделен отрезок последовательности — то идет бесконечное зацикленное проигрывание этого отрезка.
Загрузить очередь (L) — запускает диалог открытия файла для выбора редактируемой последовательности. Таким способом можно переключиться на редактирование другой последовательности кадров в другой папке.
Эффекты (E) — вызывает меню выбора эффектов для выделенного отрезка кадров. Доступны следующие эффекты:
- Сдвиг/копия — сдвинуть либо скопировать выделенную последовательность кадров.
- Стоп-кадр — если выделен один кадр, то запрашивает длину стоп-кадра и растягивает этот кадр до выбранной длины (стирая все, что попадется на его пути), а если выделен отрезок последовательности — размазывает первый кадр выделенного отрезка по всей последовательности.
- Мультистоп-кадр — размазывает каждый N-ный кадр по остальным (N-1) кадрам впереди себя, на выходе получается «притормаживающее» видео, в котором кадры редко меняются.
- Реверс — меняет расположение кадров выделенного отрезка на противоположное (первый кадр выделения станет последним).
- Повтор — повторяет выделенный отрезок последовательности выбранное количество раз.
- Случайная смесь — случайно перемешивает кадры в выделенном отрезке последовательности.
- Ускорить/замедлить — растягивает/сжимает выделенный отрезок последовательности до указанной длины (в кадрах).
- Вставить пустой промежуток — вставляет в текущее положение курсора выбранное количество пустых кадров, сдвигая всю находяющуюся впереди часть анимации.
Сделать AVI (R ) — вызывает сборку AVI-видео из последовательности кадров. Для удачной сборки необходимо чтобы был как минимум первый кадр (1.bmp/1.jpg).
Показать AVI (S) — открывает последний собранный AVI в вашем видеоплеере (установленном в системе по умолчанию для проигрывания AVI-файлов).
Выход (ESC) — закрывает окно просмотра очереди кадров. При последующем вызове окна — оно сразу откроется с показом выбранной в предыдущий раз очереди кадров. Чтобы сменить очередь кадров на другую — используйте кнопку Загрузить очередь (L).
Остальные пункты меню «Обработка BMP/JPG кадров» предназначены для дополнительных задач, таких как конвертация GIF кадров в BMP/JPG кадры и наоборот, проведение пакетной обработки кадров эффектами типа Яркость, Контрастность, кратным увеличителем изображений Расширитель (с возможностью применения разных алгоритмов типа advMame2x, advMame3x, простым увеличением и т.п.), Обрезка кадров, Изменение размеров кадров, Переименование сторонних кадров в формат 1.bmp,2.bmp и обратно.
- 1. Цветность, Контраст, Яркость, Цвет, Гамма — параметры выбираются пользователем и применяются ко всем кадрам;
- 2. Расширитель — любой из вариантов этого эффекта увеличения размера изображения по всем кадрам;
- 3. Фрагмент — обрезает все кадры последовательности по текущему выделению. Для применения этой обработки сначала откройте один из кадров и выделите его необходимый фрагмент, а только потом вызывайте обработку;
- 4. Размер растра — масштабирует все кадры по размеру, выбранному пользователем.
Конвертация — превращает BMP/JPG кадры в 256-цветные GIF по выбранному методу (простая и точная UNI-палитра, гипер-палитра), а также наоборот.
Очередь кадров — сдвиг/копирование кадров и стоп-кадр с указанием границ применения в виде чисел (в окне Просмотра очереди — полностью тоже самое, но там границы указываются визуально с помощью выделения и положения курсора).
Сторонние кадры — переименование файлов кадров в паинткадовский формат и обратно:
- «Переименовать в N.xxx» — переименование кадров с именами image001.jpg, image002.jpg или DSC_0053.jpg, DSC_0054.jpg в привычный для паинткада формат имен 1.jpg, 2.jpg. При этом в папке с кадрами создается rename.rnl, в который записываются старые и новые имена файлов.
- «Вернуть имена по RNL-списку» — используя созданный ранее файл rename.rnl, файлы кадров переименовываются обратно в свои старые имена.
Видеомонтаж: Разбор AVI на кадры
Этот же интерфейс видеомонтажа, но с урезанными возможностями (потому что в avi нельзя перемещать кадры также легко, как можно перемещать файлы кадров на винчестере), показывается пользователю если вызвать «Разобрать AVI видео на BMP/JPG кадры»:
Тогда в очереди кадров показываются просто номера кадров (а не файлы), можно также перемещаться по ним, проигрывать их, импортировать в паинткад конкретный кадр, слить на жесткий диск выделенный диапазон кадров. При этом на панели информации показывается общее количество кадров в AVI файле, скорость (FPS) открытого ролика, размер кадра в видео.
В среднем, нормальный полутора-(двух-)часовой фильм при 24 кадрах в секунду это около 130-170 тысяч кадров. Поэтому перемещение по нему (например, удерживая вышеописанную W — по 10 тысяч кадров за шаг) осуществляется достаточно легко.
Таким образом, можно вытащить нужны кадры из AVI, затем с помощью меню «Обработка BMP/JPG кадров» обрезать их, сделать нужного размера, превратить конвертацией в GIFы и сделать,
Редактор мозаики в PaintCAD 4Windows
В меню «Утилиты» есть еще одно интересное меню — «Редактор мозаики»:
Первый пункт в этом меню — это «Просмотр мозаики (Ctrl+Y)», он запрашивает один из файлов элементов мозаики (о них написано ниже) и затем показывает окно редактора:
Мозаика — это набор двумерных квадратных или прямоугольных элементов (тайлов) одинакового размера («tile set»), которые можно соединять друг с другом в единое изображение, рисуя таким способом, например, карту для игры с дорогами, речками и озерами, лесами и морями, песками и лавой. Можно также рисовать красивые границы для таблиц, которые потом использовать на веб-страницах.
Рисовать тайлы как отдельные картинки трудно, потому что надо держать в уме в каком месте соединяются элементы тайлов, чтобы образовывать единую картину. В этом помогает редактор мозаики.
1б. Если уже есть готовые BMP элементы мозаики со страшными именами, то переименуйте их в формат паинткада (1.bmp, 2.bmp, 3.bmp) командой «Утилиты»-«Обработка BMP/JPG кадров»-«Сторонние кадры»-«Переименовать в N.xxx».
1в. Если уже есть готовые BMP элементы мозаики с нормальными именами типа 1.bmp, 2.bmp, 3.bmp, то просто перейдите к пункту 2.
2. Вызовите в главном меню «Утилиты»-«Редактор мозаики»-«Просмотр мозаики» (или нажмите Ctrl+Y). При появлении диалогового окна открытия файла — выберите файл элемента мозаики «1.bmp».
3. На экране появится окно редактора мозаики.
В редакторе мозаики по умолчанию создается матрица размером 3х3 элемента, можно изменить размер матрицы. Пользователь перемещает курсор в пределах матрицы и устанавливает клавишами (Z,X) номера элементов в каждой из ячеек выделенного фрагмента матрицы, или, используя меню Эффекты (E), заливает области матрицы определенным номером элемента, копирует и вставляет фрагменты матрицы в разные места, таким образом, создавая раскладку элементов. После этого можно сохранить раскладку (чтобы завтра снова их не расставлять при продолжении рисования мозаики, а просто подгрузить ее в редактор). Можно править каждый элемент мозаики по отдельности или в окружении других элементов, чтобы качественно прорисовать стыки с ними (а потом отдельно этот элемент сохранить, см. ниже подробнее «Назначение кнопок в окне редактора мозаики»-«Импорт матрицы (CTRL+ENTER)»). После сохранения поправленного элемента — возвращаемся в редактор мозаики и еще раз проверяем что с ним все хорошо. И так далее со всеми элементами.
Выделение (ПРОБЕЛ) — начинает/заканчивает выделять двумерный фрагмент матрицы. Если нажать дважды на одном элементе — то выделение сбрасывается и в дальнейшем следует за курсором. Текущие границы выделения и координаты курсора показываются слева вверху окна.
Предыдущий (Z), Следующий (X) — увеличивает/уменьшает номер элемента мозаики во всех ячейках текущего выделения. Номер элемента соответствует имени файла.
Детали (D) — показать/убрать номера элементов и курсор. Чтобы можно было лучше рассмотреть стыки элементов получившейся мозаики.
Матрица (M) — установить размеры матрицы по горизонтали и вертикали.
Эффекты (E) — вызывает меню выбора эффектов для выделенного двумерного фрагмента матрицы. Доступны следующие эффекты:
- 1. Залить выделение номером — устанавливает выбранный номер элемента во всех ячейках в пределах выделения.
- 2. Копировать выделение — копирует выделенный фрагмент матрицы в память.
- 3. Вставить — вставляет ранее скопированный фрагмент, начиная с текущего положения курсора (там будет левый верхний угол фрагмента).
- 4. Обратить выделение по горизонтали — меняет расположение элементов выделенного двумерного фрагмента на противоположное по горизонтали.
- 5. Обратить выделение по вертикали — меняет расположение элементов выделенного двумерного фрагмента на противоположное по вертикали.
- 6. Залить выделение возрастающими номерами — устанавливает последовательно возрастающие номера элементов в пределах выделенного фрагмента. Таким образом, на большой карте можно с края в линейку или две залить ряд элементов, чтобы легче было их выбирать при создании карты.
Загрузить элементы (L) — позволяет загрузить в редактор мозаики другие элементы из другой папки.
Загрузить раскладку (O) — позволяет загрузить в редактор мозаики файл TLO с ранее сохраненной матрицей с расстановкой элементов.
Сохранить раскладку (S) — позволяет сохранить текущую матрицу с расстановкой элементов в файл TLO. Формат TLO файла: текстовый, построчно: ширина матрицы, высота матрицы, далее последовательно горизонтальными рядами номера элементов в матрице по одному на строку файла. Можно открыть его в блокноте и редактировать вручную.
Правка элемента (ENTER) — открывает в паинткаде элемент, находящийся в ячейке под курсором, через «Открыть ???». Если файл элемента не существует — то паинткад создаст пустой файл размером с элемент 1.bmp, и запомнит по матрице имя элемента для будущего сохранения в BMP.
Импорт матрицы (CTRL+ENTER) — импортирует в паинткад изображение всей матрицы с элементами. При этом элемент, на котором находился курсор, находится в пределах выделения. А имя файла этого элемента уже назначено диалогу сохранения. Поэтому после правки и состыковки краев этого элемента с другими в матрице рекомендуется вызвать функцию «Фрагмент» в меню команд (Ctrl+Вправо), обрубив все вне выделенного элемента и сохранить его обратно в его BMP файл по нажатию Ctrl+S (имя файла уже будет введено в диалог сохранения). После этого можно вернуться в редактор мозаики (Ctrl+Y) и посмотреть как отредактированный элемент лежит среди других в мозаике.
Выход (ESC) — закрывает окно редактора мозаики. При последующем вызове окна — оно сразу откроется с показом установленной в прошлый раз раскладки и загруженных в прошлый раз элементов. Чтобы сменить элементы на другие из другой папки — используйте кнопку Загрузить элементы (L).
Восстановление раскладки мозаики по картинке из игры
В меню «Утилиты»-«Редактор мозаики» есть еще три пункта, которые позволяют извлекать элементы мозаики с одиночной картинки, оптимизировать их порядок и количество и даже восстанавливать исходную раскладку.
Разложить рисунок на мозаику — раскладывает открытую в паинткаде картинку на элементы мозаики. Например, откроем в паинткаде карту из игры Battle City размером 13 на 13 элементов.
Функция «Разложить рисунок на мозаику» раскладывает карту в такую мозаику, где каждый следующий элемент — очередной кусок карты (здесь элементы всего 16х16 пикселей, поэтому отображаемые номера не влезают в ячейки. Слева показывается редактор мозаики с включенными Деталями, справа — с выключенными):
До того, как вызвать эту функцию, рекомендуется выделить один из элементов мозаики на рисунке, и тогда предлагаемые по умолчанию размеры элементов будут сразу равны размеру выделения.
Удалить повторяющиеся элементы — сортирует полученные с помощью предыдущей функции элементы, удаляя те, которые повторяются. В результате получаются всего 11 различных элементов:
Восстановить матрицу по рисунку — когда у нас есть отсортированные с помощью предыдущей функции элементы мозаики, можно считать с карты их расположение, восстановив матрицу (раскладку элементов) для редактора мозаики. Для этого: 1) загрузите в паинткад карту; 2) вызовите эту функцию и укажите один из отсортированных элементов мозаики (можно работать и с неотсортированными элементами, но это будет дольше, т.к. их больше). И в результате по окончанию работы функции открывается редактор мозаики в котором видна распознанная матрица (раскладка элементов):
Полученную раскладку можно сохранить и использовать вместе с самими элементами, например, в собственной игре про танки. Хотя конечно лучше нарисовать свои элементы, плагиатить нехорошо. Да и в игре про танки, на самом деле (скорее всего), карта состоит из гораздо меньших кусочков (8х8 пикселей или четвертая часть от наших полученных 16х16, хотя в редакторе карт в танчиках используются элементы 16х16 — они крошатся патронами танков не целиком, а по кусочкам, кирпичи вообще крошатся на мелкие части). Так что можете попробовать проделать тоже самое с этой картой с упором на элементы 8х8.
Эпилог
Теперь вы знаете, как можно создать в PaintCAD 4Windows свой полупрозрачный PNG рисунок, собрать и провести видеомонтаж своей AVI анимации из BMP/JPG кадров, вытащить из любого AVI файла кадры и даже нарисовать собственную мозаику и создать раскладку карты для своей игры.
Для тех, кто первый раз узнал о графическом редакторе PaintCAD 4Windows: на данный момент он весит 10879 КБайт и лежит по адресу blackstrip.ru/pcw.rar
Автор: blackstrip