Цветовые модели: RGB, HSV

Что такое цвет и зачем нужны модели?

Представь, что ты художник 🎨. У тебя есть палитра, но вместо красок — числа! Цветовые модели — это и есть такие математические палитры. Они помогают компьютеру и тебе «договориться» о том, какой именно цвет нужно отобразить на экране.

Мы разберем две самые популярные модели: одну, понятную компьютеру (RGB), и другую, более понятную человеку (HSV). Поехали!


RGB — цвет как смесь света

Аббревиатура RGB расшифровывается как Red, Green, Blue (Красный, Зеленый, Синий). Это аддитивная модель, что означает: мы начинаем с черного цвета (отсутствия света) и добавляем к нему лучи разного цвета, чтобы получить нужный оттенок. Именно так работают экраны твоего монитора, телевизора или телефона!

Каждый цвет в этой модели кодируется тремя числами. Чаще всего их диапазон — от 0 до 255. Почему? 🤔 Потому что одно число в байте (8 бит) может принимать 28=256 значений. Так исторически сложилось.

🎯 Запомни: 0 — это полное отсутствие компонента, а 255 — его максимальная яркость.

Давай посмотрим, как смешиваются эти «цифровые краски»:

R (Красный) G (Зеленый) B (Синий) Результат
255 0 0 Ярко-красный
0 255 0 Ярко-зеленый
0 0 255 Ярко-синий
255 255 0 Желтый
2550 255 Пурпурный (Magenta)
0 255 255 Голубой (Cyan)
255 255 255 Белый
0 0 0 Черный

Вот как может выглядеть код цвета в Python-игре:

my_color = (255, 128, 0) # Яркий оранжевый!

💡 Совет: RGB идеально подходит для отрисовки графики компьютером, но человеку часто неудобно думать в терминах «сколько синего добавить в зеленый, чтобы получить морскую волну». Для этого придумали HSV.


HSV — цвет как у художника

Модель HSV куда более интуитивна! Ее название расшифровывается как Hue, Saturation, Value (Оттенок, Насыщенность, Значение). Ее также иногда называют HSB (Hue, Saturation, Brightness).

Давай разберемся с каждым компонентом:

  • Hue (Оттенок) 🎨: Это сам цвет в чистом виде — красный, синий, зеленый, желтый. Он задается углом на цветовом круге от до 360°.
    • или 360° — красный
    • 120° — зеленый
    • 240° — синий
  • Saturation (Насыщенность) 🌈: Это интенсивность, чистота цвета. Измеряется в процентах от 0% до 100%.
    • 100% — максимально сочный, яркий цвет.
    • 0% — полное отсутствие цвета, оттенок серого.
  • Value (Значение) / Brightness (Яркость) 💡: Определяет, насколько цвет светлый или темный. Тоже измеряется в процентах.
    • 100% — максимально светлый вариант выбранного оттенка.
    • 0% — черный, независимо от оттенка и насыщенности.

Представь, что ты выбираешь краску в магазине:

  1. Сначала ты говоришь продавцу основной цвет (Hue): «Мне нужен синий».
  2. Потом уточняешь его интенсивность (Saturation): «Небесно-голубой, а не кислотный».
  3. И напоследок определяешь светлоту (Value): «Достаточно светлый».

Вот как это может выглядеть в коде (значения часто приводят к диапазону 0-1):

# Тот же оранжевый, но в HSV
my_color_hsv = (30, 1.0, 1.0) # Hue=30°, Saturation=100%, Value=100%

🎯 Прелесть HSV в том, что чтобы сделать цвет темнее, ты просто уменьшаешь Value. Чтобы сделать цвет более пастельным — уменьшаешь Saturation. Это гораздо проще, чем гадать, какие каналы R, G и B нужно менять в RGB!


Зачем это всё в геймдеве?

Понимание этих моделей открывает тебе суперсилу! 💪 Ты можешь программно генерировать и менять цвета прямо во время игры.

  • Создание цветовых палитр: Генерация harmonious цветовых схем для уровней, используя сдвиг по Hue.
  • Эффекты: Плавное изменение цвета свечения факела (меняем Hue по времени) или затемнение объекта при получении урона (уменьшаем Value).
  • Настройка графики: Позволить игроку настроить цвет своей машины, используя ползунки Hue, Saturation и Value.
Скрыть рекламу навсегда

🌱 Индвидидулаьные занятия

Индивидуальные онлайн-занятия по программированию для детей и подростков

Личный подход, без воды, с фокусом на понимание и реальные проекты.

🚀 Записаться на занятие