Скины, шаблоны, моды для Ил-2
Статистика
Скинов: 773
Шаблонов: 49
Как вы можете помочь сайту?
Популярные 10
Bf-109E3 of Swiss flieger kompanie 21
Автор: LSA
Скачиваний: 2438
La-5 Kostylev museum vAll
Автор: Бомбер (Bomber)
Скачиваний: 2038
Ил-4
Автор: Wotan
Скачиваний: 1801
Supermarine Spitfire Mk. VIII Shark Attack!
Автор: Asura
Скачиваний: 1689
Bf-109G2 в цифровом камуфляже CADPAT (серая схема)
Автор: LSA
Скачиваний: 1577
IL-2M Early 47 ShAP
Автор: 24SERG
Скачиваний: 1374
P-39D-2
Автор: Wotan
Скачиваний: 1331
И-153 в раскраске Pitts S-2B Special
Автор: LSA
Скачиваний: 1256
И-153 Серебрянка
Автор: Myshlayevsky
Скачиваний: 1172
Вуд
Автор: Сергей Драгунов
Скачиваний: 1115
Глубина цвета и преобразование палитры (перевод LSA)
Глубина цвета и преобразование палитры

Предисловие
В этой статье я попытаюсь объяснить суть преобразований, происходящих с нарисованным скином, при его конвертации из формата графического редактора Photoshop в формат bmp. Для лучшего понимания я начну с основ системы цветности RGB в компьютере и постараюсь изложить это понятным языком.

Теория системы RGB
В основе отображения цветов на компьютерном мониторе лежит система цветности RGB. Аббревиатура RGB образована первыми буквами названий трех базовых цветов (каналов) - Red, Green, Blue (красный, зеленый, синий соответственно), яркость которых изменяется от нулевой до максимальной, как показано на рисунке:



Система RGB позволяет смешивать эти три цвета методом сложения. Например, максимальная яркость каждого из базовых цветов даст в результате белый цвет. Чтобы убедиться в этом, создадим в графическом редакторе три слоя, по одному для каждого из базовых цветов, и нарисуем в них соответственно круги чисто красного (255,0,0), зеленого (0,255,0) и синего (0,0,255) цветов. Установим для двух верхних слоев режим смешивания "lighten" и посмотрим на результат. Обратите внимание - там, где пересекаются все три слоя, вы видите белый цвет, а в местах пересечения двух соседних слоев образуются различные промежуточные оттенки.



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

RGB и компьютеры

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

Бит - это мельчайшая единица информации в компьютере. Он имеет всего два состояния - "включен" (ON) и "выключен" (OFF), которые часто представляют числами 1 и 0 соответственно. Эта форма представления называется двоичной, поскольку в ней используются только две цифры. Но сам по себе одиночный бит может хранить очень мало информации. Поэтому биты объединяют в группы по 8, которые называется байтами.

Байт из 8 отдельных битов может представлять уже 256 комбинаций двух состояний "включен" и "выключен". Если применить это к цвету, мы получим возможность выражения в цифровом виде 256 изменений его интенсивности от самого темного уровня к самому яркому. Поскольку один байт может отображать цвет только одного канала цветности в нашей системе RGB, добавим еще два байта. В итоге, чтобы отобразить одну точку RGB, нам потребуются 3 байта, каждый из которых задает интенсивность соответствующего цвета. С помощью этих 3 байтов мы сможем отобразить уже 16 777 216 различных цветов:

(256 оттенков красного) x (256 оттенков зеленого) x (256 оттенков синего) = 16 777 216 цветов

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

(1024 пикселей в высоту) x (1024 пикселей в ширину) x (3 байта на пиксель) = 3 145 728 байтов или 3 мегабайта.

Глубина цвета
Мы можем уменьшить количество байтов, нужных для представления одного пикселя, и тем самым уменьшить размер памяти, занимаемой изображением (например, на диске или в ОЗУ). Это особенно важно для компьютерных симуляторров, в которых многочисленные скины загружаются одновременно.

Предположим, разработчик симулятора за один раз загружает в память 10 скинов, каждый из которых имеет размер 1024x1024 (для приемлемой детализации). При 3 байтах на пиксель один скин имеет размер 3Мб, значит 10 скинов займут уже 30Мб. Теперь, если разработчик хочет уменьшить потребность в памяти (с целью ускорения процесса загрузки скинов или использования ее для других процессов), у него есть два пути. Поскольку потребность в памяти для скина определяется его размером, умноженным на количество байтов на пиксель, можно уменьшить один из них. Для начала предположим, что разработчик уменьшил размер до 512 x 512.

512 x 512 x 3 = 786432 байтов или около 768кб

Экономия целых 75%! Но... скин сильно потерял в деталях.

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

24-битный цвет
В предыдущем примере мы использовали 3 байта на пиксель. В битах это будет (3 байта) x (8 битов) = 24 бита. Это одна из самых распространенных компьютерных палитр, имеющая 16 777 216 цветов, что более чем достаточно для большинства графических задач.

32-битный цвет

Следует упомянуть 32-битный цвет. В нем так же, как в 24-битном изображении, используются 8 битов для базовых цветов. Другие 8 битов либо не используются, либо заняты под альфа-канал. Альфа-канал - это монохромный "слой", который при просмотре изображения не виден. Информация из этого канала используется в основном в играх и симуляторах, когда определенная часть скина должна быть отражающей или невидимой. Рисуя в этом канале, художник с помощью 256 оттенков задает отражение или прозрачность, которые используются в игре или симуляторе, например в FS2004.

Помните, что в терминах цветопередачи, или качества изображения, 32-битное изображение ничем не отличается от 24-битного. Большинство графических редакторов хранят слои изображения в 32-битном формате, на случай, если будет использован альфа-канал.

8-битный цвет
В большинстве компьютерных игр и симуляторов проблема уменьшения объема памяти, требуемой для хранения скинов, решается с помощью 8-битного цвета - вместо того, чтобы делить каждый из RGB каналов на 256 частей (как в случае с 24-битным цветом), единая палитра для всех объединенных каналов представляется с помощью всего лишь 8 битов на пиксель. Но тут скрывается весьма существенная проблема, которую мы сейчас и изучим.

Применение к 8-битной палитре 24-битного метода по разделению канала на 256 сегментов не дает хорошего результата. Поскольку у нас есть всего 8 битов на пиксель, давайте представим, что мы поделили их на три группы по 2 бита для каждого цвета. Это означает, что для каждого канала теперь будет лишь по 4 комбинации цвета, а общая палитра уменьшится до 64 цветов! Смотрите, как резко теперь выглядят переходы между цветами...



Решение проблемы состоит в использовании предопределенной палитры. Поскольку 8 битов в сумме дают 256 различных вариантов (а при разделении на каналы и того меньше), мы можем создать некую палитру из 256 цветов, в которой каждому цвету будет соответствовать конкретный номер (число). Теперь каждый пиксель скина будет представлен не 8 битами данных о цвете, а 8-битным номером цвета в этой палитре.

Часто палитру встраивают в файл изображения, и тогда она может быть как одним из вариантов из набора стандартных палитр, так и оптимизирована для наилучшего представления конкретного изображения. Вот пример градиента RGB, представленного 256 цветами...



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

Преобразование глубины цвета

Когда ваш скин готов к преобразованию из 32-битного многослойного формата в 8-битный, качество получаемого результата будет зависеть от нескольких факторов, и прежде всего от типа палитры и способа сглаживания (dithering).

Во-первых, выбирайте палитру оптимизированного типа (optimized), чтобы получить цвета, максимально близкие к оригинальным. Применение палитр типа 'web' или 'system' дает заведомо худшие результаты, поскольку они созданы для усредненного дипазона цветов, тогда как в скинах обычно цвета имеют более тонкие оттенки. Иногда, даже когда проведена наилучшая оптимизация палитры, все равно может не хватать цветов для точного воспроизведения исходного изображения. Возникают "полосы", когда вместо плавного перехода видна четкая граница между цветами. Вот пример градиента с полосами.



Для решения этой проблемы применяется сглаживание. Суть его в том, что одни цвета постепенно заменяются другими, что дает более плавный градиент. Для сглаживания применяются различные шаблоны. В шаблоне "узор" (pattern) сглаживание применяется равномерно по принципу шахматной доски. "Диффузия" или рассеивание (diffusion) переставляет цвета случайным образом. "Шум" (noise) тоже переставляет цвета случайным образом, но более равномерно. Поэтому лучше выбирать или "диффузию" или "шум". Вот тот же самый градиент, но с применением сглаживания.



Программа BRIGHT
Эта программа производит преобразование глубины цвета. Она существует как в виде отдельной программы, так и в виде подключаемого модуля (plugin). BRIGHT производит наилучшее преобразование в 8-битную палитру, хотя на изображениях с большим диапазоном цветов все же заметна некоторая "ступенчатость". BRIGHT также очень хорошо выполняет сглаживание. Вы можете сами провести сравнение и решить, использовать BRIGHT или нет.

Вот для сравнения результаты различных способов преобразования одного и того же фрагмента скина (эти изображения записаны в 24-битном формате png, чтобы сохранить детали).





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

-adlabs6

Оригинал статьи: http://www.simmerspaintshop.com/forums/general/453-color-depth-palette-conversion-texture-artists.html


adlabs6, 16.04.2007
Вернуться в Статьи
Настройки
English

Хочешь всегда быть в курсе новых скинов?
Подпишись на новостную ленту!
Последние 10
И-185М-82
Автор: -OSF-Joe
Дата: 28.09.2023 18:10:43
Fw-190 Тунис
Автор: sgtwingspan
Дата: 21.07.2023 2:40:43
ЛаГГ-3_серия4_трёхцветный
Автор: -OSF-Joe
Дата: 19.05.2023 14:11:27
МиГ-3_MOD
Автор: samson
Дата: 01.03.2023 16:17:25
Ли-2 Аэрофлот
Автор: botanik
Дата: 10.02.2023 19:37:47
УТИ-4
Автор: -OSF-Joe
Дата: 03.02.2023 16:42:35
MXY7-11
Автор: botanik
Дата: 07.10.2021 21:29:21
Пе-3 и Пе-3бис
Автор: -OSF-Joe
Дата: 05.08.2021 13:35:26
Ла-5
Автор: -OSF-Joe
Дата: 30.07.2021 11:57:39
У-2 гидро
Автор: -OSF-Joe
Дата: 03.07.2021 14:00:22
Условия использования 2007-2009, =BR=Sexton, engine version 1.1 Обратная связь
Rambler's Top100 Рейтинг@Mail.ru