Прогаем с кенгурой
229 subscribers
193 photos
191 videos
17 files
157 links
Сидим с кенгурой под горой, запекаем текстуры...

{ программирование, процедурная генерация, графика, аудио, образование и немного про специфичные игры }

https://gostrobrod.dev
Download Telegram
Как это выглядит (для наглядности)

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

Дальше буду рассказывать про цветовые модели и пространства
1
Попался мне в аппсторе BBC Basic - вот его официальный сайт. Максимально всратая гуя, но при этом он много что умеет (по крайней мере некоторые примеры впечатляют).

Хз зачем вам это, но мне порой нравится потыкать подобную ностальгическую всратость
🔥1
А вот вариант оптимизации сэмплинга кубической Безье, когда нужно брать рандомные точки на всем диапазоне t при фиксированных точках - схлопнуто до кубического многочлена с предпосчитанными коэффициентами.

https://www.desmos.com/calculator/hu2htilxlr
Кости каракатиц (внутренняя раковина). Они (каракатицы) при росте наслаивают ее как моллюски (каракатицы тоже моллюски) раковины (это тоже своего рода раковина).

Сверху мелкая совсем, снизу - большая. Вообще они тут могут быть пол метра длинной (без щупалец), но я пока таких не находил на берегу
😱6
Корень коралла.

Я думал, что переезд это отправить вещи и переместиться самому. А оказалось, что разобрать барахло посложнее, чем закидать его в коробки.

А еще внезапно надо сарай перебрать, сад расчистить, тонну щебня заказать и перекидать и прочее🤠

Сейчас доразгребу все это и вернусь к нормальному ритму и темам постов
🗿4👀32
Вот такое вот есть в 15 минутах езды
🔥106
Так, как и обещал, после сплайнов расскажу про цвета.

Начнем с терминологии, чтобы не было путаницы потом (да и вообще):
1. Цветовая модель - это способ представления пространства цвета, то есть система координат и что эти самые координаты означают. Например: RGB, CMYK, HSL, YUV и т.д.
2. Цветовое пространство - это конкретная реализация цветовой модели, то есть как именно цвета из гамута мапятся на наши координаты (например точка черного цвета, белого цвета, пределы каналов и тд). Например: sRGB, Adobe RGB, ProPhoto RGB, рекомендации/стандраты для цветоразностных и т.д.
3. Гамут - это множество всех возможных цветов, которые может воспроизвести устройство, например, монитор или принтер.
4. Цветовой профиль - структура, описыващая переход между цветовыми пространствами через стандартизированное и независимое от устройства, например XYZ или Lab.

Все это описано в спецификациях CIE (International Commission on Illumination), но кто это читать будет - там скучно.
5
Кратко по цветовым моделям. Их можно разделить на несколько категорий:

1. Аддитивные модели - образуют цвет, складывая свет (каналы) разных длин волн; используются в излучающих устройствах (мониторы и проекторы):
- RGB (Red, Green, Blue) - декартовая система, складывет цвет из разных интенсивностей базовых цветов (светов).
- HSL (Hue, Saturation, Lightness) - цилиндрическая система, лайтнес от черного до белого.
- HSV (Hue, Saturation, Value) - тоже цилиндрическая система, но лайтнес от черного до максимального значения среди каналов.
- Okhsv and Okhsl - новые модели, позволяют более естественно работать с цветами.

2. Субтрактивные модели - образуют цвет, смешивая краски (пигменты, как известно поглощают, поэтому если намешаем всего, будет черный); используются в печатающих устройствах (принтеры):
- CMYK (Cyan, Magenta, Yellow, Key/Black) - четыре основных цвета, которые комбинируются для создания других цветов. Эта модель используется в печати.

3. Цветоразностные модели - образуют цвет из значения яркости и цветоразностных значений; используются в видео и телевидении:
- YUV - яркость и цвет, часто используется в видео и телевидении.
- YPbPr - еще одна цветоразностная модель, которая используется в аналоговых системах.
- YCbCr - используется в цифровом видео.

4. Специальные модели - используются для специфических задач (как базовая модель, представление гамута, представление человеческого восприятия и тд):
- Lab (CIELAB) - описывает цвет в терминах человеческого восприятия.
- Oklab - современная альтернатива Lab, основанная на более интуитивном восприятии цвета.
- XYZ - линейная базовая модель, тоже основана на человеческом восприятии, не зависит от устройства.

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

Это совершенно не значит, что мы ограничены конкретной моделью в коде. Почти между всеми переход осуществляются с помощью перемножения матриц (но есть и удручающие исключения). А это значит, что можно использовать их особенности в обработке цвета, эффектах и прочем.
3
С цветовыми профилями все печальнее - там почти всегда нужен LUT (look up table), то есть аналитически смапить цвета возможно не только лишь всегда
2
This media is not supported in your browser
VIEW IN TELEGRAM
Сделал неведомую херобору в тик80, вдохновившись кривыми Безье
🔥6👍1
Я кратенько расскажу про интересные модели, а потом - про их практическое применение вне исходного предназначения - матрицы и переводы и так спокойно гуглятся (знать только, что гуглить).

Начну с цветоразностных, потому что они интересны исторически. Расскажу в общих чертах, потому что там разница в осях, а не в принципе.

Пришли они к нам из телевидения (+ активно используются в видео). Там изначально изображение было ЧБ (яркостная компнонента), к которому добавляется либо поднесущая, либо отдельный частотный канал (в зависимости от стандарта). Это позволяет чб телекам принимать и правильно показывать тот же канал, что и для цветных телеков. Но можно их и отдельно передавать (как на фотке моего древнего телека).
🔥1
На тему видео вы, возможно, видели что-то типа 4:2:2 или 4:2:0. Это цветовая субдискретизация и показывает сколько сэмплов (пикселей простым языком) цветоразностных каналов на яркостный.

Первая 4 - частота яркостного канала,
Вторая 2 - сколько на эти 4 будет цветоразностных
Третья 2 - сколько цветоразностных во второй строке (если ноль, то вторая строка будет идентична первой

Почему это важно: если вы работаете с сырыми буферами yuv (YCbCr и пр), то часто каналы там лежат в планарном (planar) виде, то есть лежит либо буфер yyy… uuu… vvv…, либо yyy… uvuvuv… (полупланарный/semiplanar). Да, привычный yuv yuv yuv… называется уплотненный/черезпиксельный или interleaved по русски.

Так вот, когда у вас планарно лежат каналы, важно помнить, что размеры их могут не совпадать, если все числа в 4:4:4 не равны. Так, на пример, при 4:2:2 цветоразностные будет иметь в два раза меньшую ширину, а при 4:2:0 - и высоту тоже.

Картинку спер из вики
🔥51
Ого) аж 6 человек отписалось после начала серии постов про цветовые модели - эта тема такая страшная, такая скучная или и так всем очевидная?

Так вроде это базовая база и всем полезна будет. Хм. Не ясно
👍10😢1🙏1🗿1
Еще одна оооочень интересная группа моделей - с приставкой Ok за авторством Бьерна Оттоссона. Несколько (5) лет назад в твиттерах были горячие дискуссии на тему градиентов, смешений цветов и прочего. Среди этого прочего Бьерн предложил несколько моделей с «естественным» смешением цветов и правильной ориентацией яркости.

После (не)продолжительного обсуждения и тэганья всех, кого это должно было бы заинтересовать, его модели включили в стандарт и добавили поддержку как минимум в продуктах Adobe (причем очень быстро, несмотря на казалось бы громоздкость корпорации). Я пытался пропихнуть это и в Procreate, но меня послали.

Вообще рекомендую к прочтению все четыре его статьи с сайта:
- про проблемы смешения цвтов в существующих моделях
- про Oklab
- как наболтать насыщенность и не выжечь глаза
- про Okhsv и Okhsl
👍3🔥1
Примерно в то же время (в 2019) я пилил прократам модель для симуляции акварели. Вот чтоб было как на бумаге. К сожалению, модель вышла хоть и качественной, но довольно тяжелой и на больших картинках работала медленно. Плюс требовала кучу памяти на несколько флотовых 4 канальных слоев для разных параметров. Плюс там очень много нюансов с undo/redo. Кароч осталось оно на репе про RnD и в прод не пошло.

Но сейчас речь о цветовых моделей. Так вот. Для акварельки нужно, чтобы цвета смешивались как будто это краски. Проблема в том, у RGB плохо с осью яркости (ее нет), а срез YUV выглядит как на первой картинке, в то время как круг Иттена (для смешения красок) - как на второй.

Чтобы решить эту проблему, я делал так (третья картинка):
1 - переводил RGB->YUV,
2 - там переводил UV в полярную систему координат
3 - ремапил углы так, чтобы между красным, желтым и синим был угол 120º
4 - переводил обратно в декартову систему координат
5 - смешивал цвета в этой модели
6 - для отображения делал обратное преобразование
🔥4