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

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

https://gostrobrod.dev
Download Telegram
А. Забыл один бесполезные для практики, но все равно интересный факт.

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

Как это делали: человеку светили светом определенной длины волны и давали крутить RGB ручки, чтобы он намешал такой же. Так вот на участке между λb и λg человек выкручивал ручку для красного ниже базового значения (условного нуля).
😁3👍21
Так, я планирую начать довольно большую серию про глитчи в видео

Если коротко, план такой:
запись -> носитель -> воспроизведение

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

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

Плюс постараюсь примеры на шейдерах сделать.

Возможно, и видосов поназаписываю на эту тему для тех, кому читать лень (ну и часто в видео можно больше нюансов рассказать/показать).
👍10
Там вышел гпт5, но мы все еще в безопасности
🤣6😁4🗿2
Крабэ недоволен
😱32
Прежде чем начать пердолить видео, в идеале, нужно понимать, что именно, в каком случае и в какой последовательности нужно это делать.

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

Тем не менее эта схема дает (надеюсь) понятие, что мы получаем видеосигнал, переводим в какую-то форму для хранения, передаем, читаем обратно в форму для воспроизведения и, наконец, воспроизводим. На каждом этапе видео может быть искажено, а искажения могут наложиться. То есть итоговый глитч может быть не просто "пленочным"/"цифровым"/"VHS" и тд, хотя это и удобно для продакт-дизайнеров, а комбинацией отдельных поломок сигнала на разных этапах.
🔥51
Если вас пугают некоторые слова - не пугайтесь, я распишу каждый этап с объяснением общих принципов, физики, математики и примерами алгоритмов (по возможности)
👍42
Прежде чем перейти к описанию каждого элемента, мне надо подготовить песочницу, чтобы в ней все это дело реализовывать, так что будет пауза.

А пока вот вам утки на дереве
👍61
Media is too big
VIEW IN TELEGRAM
Песочница готова, можно наполнять. Начну с оптики, но уже не сегодня.

ChatGPT сильно помог в набрасывании песочницы. Хотя он все еще сильно тупит в создании чего-то цельного, но хорошо справляется с реализацией мелких деталей и вспомогательных функций (правда иногда все равно творит лютую дичь)
Прогаем с кенгурой
Песочница готова, можно наполнять. Начну с оптики, но уже не сегодня. ChatGPT сильно помог в набрасывании песочницы. Хотя он все еще сильно тупит в создании чего-то цельного, но хорошо справляется с реализацией мелких деталей и вспомогательных функций (правда…
Сейчас будет мат, простите))

Готовлю материал для видео про цвета. Решил сделать демку интерактивную на three.js - что-нибудь новое попробовать. Так как я его в первый раз в жизни вижу, решил сходить к жепете. И вот оно! Гпт5 ведет себя наконец как настоящий разраб!

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

Обещаю: в следующий раз вместо «ещё один уточняющий вопрос» будет файл или честное “не могу”.

Если хочешь — можем сейчас реально продолжить и сделать минимальный рабочий прототип (без профилей, просто объёмы), просто скажи «давай по-быстрому».

В любом случае — спасибо, это было смешно и по делу 🙂
🤣10
color-models.zip
13.3 KB
Если кому интересно - демка для покрутить
Media is too big
VIEW IN TELEGRAM
Так, я сделал демку для объяснения искажения оптикой - завтра начну постить про глитчи/искажения посты
🔥12
Итак, начнем с самого начала: захвата оптического сигнала и передачи его на сенсор. То есть с объектива.

Наверное, большая часть эффектов для фото и видео связаны именно с оатикой. Для начала, посмотрим на устройство объектива.

Ну и вспомним пару важных терминов (упрощенно - нам хватит):

Дифракция — свет «огибает» кромки и отверстия, размывая мелкие детали.
Дисперсия — стекло по-разному преломляет цвета; из-за этого у краёв могут появляться цветные каймы.

Почти все эффекты строятся на этих двух явлениях и геометрической оптике (хотя напрямую мы ее использовать не будем)
👍3
Итак, пойдем вместе с лучом и посмотрим, что может пойти не так (потом каждый пункт отдельно рассмотрим):

1. Грязь/пыль/царапины на линзах
- размытые пятна
- четкие пятна
- лучи по царапинам
- падение контраста
2. Искажения линз
- абберации (сферическая, поперечная и продольная)
- дисторсии (подушка, бочка)
- кома
- астигматизм
- полевая кривизна
3. Поломки и искажения групп линз
- Блики и засветки
- Смещение линз
4. Диафрагма
- глубина резкости
- боке
5. Система фокусировки
- дыхание фокуса
- расфокус
6. Виньетирование
- механическое
- cos^4

Как видите, набор эффектов довольно большой (возможно что-то пропустил), поэтому хватит на долго.
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Итак, первый эффект (по ходу применения к картинке, чтобы было физически верно) - дыхание фокуса (focus breathing)

Это вот эти вот этот вот расфокус с зумом, как на видео
🔥2
Дыхание фокуса (focus breathing)

Принцип:
По время катания туда-сюда фокусирующей группы меняется фокусное расстояние объектива, что приводит к небольшим зумам (1-10% в зависимости от качества). Если еще и механизм поломан, то будет не плавно ездить, а рывками

Алгоритм:
1. Считаем силу эффекта от времени (я использую вот такую функцию, начиная от момента старта эффекта)
2. По модулю от (1) считаем блюр (я использую MPSImageGaussianBlur)
3. Блюренную картинку рисуем в квад экрана, но скейлим текстурные координаты относительно центра (0.5) для эффекта зума

Вот так просто
🔥4
Замечание:
Хотя я объединил расфокус и дыхание (потому что так нагляднее и красивее), в реальной жизни они должны идти отдельно и доволно далеко друг от друга (потому что фокус это по сути один из последних эффектов). То есть, чтобы было физически верно, тут должно остаться только масштабирование кадра.

Ну и возникает сложность синхронизации кривых между далеко отстоящими эффектами, поэтому пока оставляем как есть
🔥2🤔2