Daily Driver: преобразование RGB в 1-битное

dailydriverпреобразованиеrgbв1битное

После успешного разделения темных и светлых элементов спрайтов и рендеринга их в стиле HDR я подумал: зачем на этом останавливаться? Может быть, я смогу втиснуть в рендер другой цвет – какой-то конкретный оттенок серого – который я мог бы обработать по-другому, чтобы добавить размытые области в спрайт. мой Makefile снова становится слишком сложным. Поэтому я решил переосмыслить свой подход.

GIF

Если бы только был способ кодировать информацию о трех разных цветах в одном растровом изображении. Погодите, уже есть: RGB!

Каналы

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

Использование imagemagick один канал легко отделить от изображения:

  magick render.png -channel G -separate green.png  

С этого простого начала все быстро становится более сложным. Я всегда нахожу создание команд imagemagick очень трудоемким процессом. Действительно, мне потребовалось много времени, чтобы прийти к правильному рабочему процессу. Но я считаю, что это время потрачено не зря, поскольку это приведет к гораздо более быстрым и простым итерациям при проектировании транспортных средств.

В целом, я сделал еще несколько трюков:

  • порог преобразования каналов в 1-битный цвет
  • применить шаблон дизеринга к зеленому каналу
  • композитный выбор слоев обратно вместе в качестве окончательного изображения
  • И процесс сработал!

    В результате рабочий процесс выполняется вдвое меньше, чем мой предыдущий рабочий процесс, при этом рендеринг всех транспортных средств занимает ~ 8 минут по сравнению с ~ PNG минут до этого.

    Вот несколько примеров изображений в высоком разрешении, показывающих путь от начального рендеринга до финального компоновщика:

    PNG

    PNG

    PNG

    PNG

    PNG

    PNG

    PNG