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

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

https://gostrobrod.dev
Download Telegram
Раньше это была река, но она решила свернуть в бухту пораньше и осталось вот это. Там еще какой-то ручеек вроде есть, но по факту это теперь часть бухты.

Сегодня попозже выкачу про сплайн Катмулл-Рома
6
Catmull-Rom Spline

Очень полезная штука для инетрполяции между точками - плюс он еще и проходит через них.

Математика

Катмулл-Ром это частный случай Эрмита, который задает кубическую интерполяцию между двумя точками с учетом производных в них - смотрим дезмос (так проще, чем тут формулы городить).

Катмулл-Ром автоматизирует этот процесс, рассчитывая производные через соседние точки - смотрим другой дезмос (там равномерный).

Есть по сути два варианта:

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

Для вычисления используется алгоритм Барри-Голдмана (смотрим на картинке) - это позволяет регулировать "расстояние" между точками.

Зачем оно надо

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

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

Дальше буду рассказывать про цветовые модели и пространства
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