Навигация
Поддержать материально
Steam Greenlight

Логотипы
Медальки
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Темы форума
164 - Battle city II
Сегодня, 16:33
 ZblCoder
Халявные игры (The H…
Сегодня, 09:15
 StormT
Indomethacin Online…
Вчера, 02:05
 Lesguby
Разрешите представит…
14.09.2019
 ChocolateCake
Конкурс по программи…
14.09.2019
 Victor
[Roguelike] Last Imp…
29.08.2019
 KregHek
164 - ?
29.08.2019
 StormT
163 - Arcade
27.08.2019
 pelmenka
[RPG/arcade] Герои п…
25.08.2019
 Teedeush
163 - ?
28.07.2019
 Victor
Сейчас на сайте
Гостей: 5
На сайте нет зарегистрированных пользователей

Пользователей: 1,735
новичок: MarioZoort
Обсуждение «Расчёт цветов при освещении.»
Shirson
Avatar пользователя

Опубликовано 03.09.2014 14:30 (5 лет назад)    #
Коллеги, есть пара вопросов .
Имеется точка, определённого цвета RGB.
Имеется источник света, определённого цвета RGB.
1. Источник освещает точку. Как вычислить её конечный цвет RGB?
2. Несколько источников светят на точку. Как вычислить суммарный RGB цвет истоников (и, далее, п1)?

Не нужно заморачиваться дистанциями, углами, материалами, и прочим. Всё предельно просто - есть цвет источника света, есть цвет точки, как посчитать результат.

Первое, что приходит в голову, источники света складывать по OR, а точку освещать по AND.

редакция от Shirson, 03.09.2014 14:45

Battle City II:Не участвую.
Darthman
Древний организм
Avatar пользователя

Опубликовано 03.09.2014 14:49 (5 лет назад)    #
Первое, что приходит в голову, источники света складывать по OR, а точку освещать по AND.

Ну в целом примерно так и есть.
Battle City II:Не участвую.
Shirson
Avatar пользователя

Опубликовано 03.09.2014 15:05 (5 лет назад)    #
Ошень карашо :)

Продолжаем откровенный разговор (Карлсон)
Как, так же быстро и просто, организовать пересветы (засветки)? Т.е. когда источник света настолько адский, что пересвечивает точку, в пределе, к белому? Ввести доп.параметр "пересветка" и его OR с цветом (каждым компонентом) точки?
Battle City II:Не участвую.
Dan
Avatar пользователя

Опубликовано 03.09.2014 17:21 (5 лет назад)    #
для этого уже и существуют материалы и hdr освещение.
хотя идея тоже не плохая брать перебор в освещении и добавлять его к конечному цвету.

редакция от Dan, 03.09.2014 17:24

Battle City II:Не участвую.
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 03.09.2014 19:07 (5 лет назад)    #
Ну товарищи, как же так, свет без дистанций, рассеивания и углов? Самые точные модели ведь из этого и складываются, все остальные идеи - лишь все менее и менее точные модели, дающие все более и более приблизительный результат.

Что касается пересветки - можно в принципе считать RGB компоненты цвета больше единицы во всех промежуточных расчетах(смешивание источников света и последующее их сложение с цветом поверхности) , а потом, в зависимости от максимального значения пересвета смещать диапазон, чтобы и цвет нормальный получить и пересветы подходящие в рамках обычного 32 битного цвета.
Battle City II:Не участвую.
Shirson
Avatar пользователя

Опубликовано 03.09.2014 21:00 (5 лет назад)    #
Mefistofel написал:
Ну товарищи, как же так, свет без дистанций, рассеивания и углов?
Лехко :)

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

bsivko на подводные камни указал, при простом OR смешивании. (например 128 OR 127 даёт 255, шописец). Пока рассматривается модель взятия наибольшего при смешении источников света и наименьшего при освещении.
Battle City II:Не участвую.
Doj
Avatar пользователя

Опубликовано 04.09.2014 08:32 (5 лет назад)    #
Имеется точка, определённого цвета RGB.

Можно задать простой уточняющий вопрос: что такое цвет точки? :) Без этого невозможно ответить на вопрос номер 1.

1. Источник освещает точку. Как вычислить её конечный цвет RGB?

Но я пофантазирую на тему. Допустим, что под цветом точки имеется в виду цвет, который будет у точки при полном освещении, т.е. когда мы светим на неё цветом $ffffff.

Тогда если мы светим 1/2 полного цвета, то и у точки будет 1/2 цвета, а если у света есть только, скажем, синяя компонента, то и точка будет иметь оттенок синего, т.е. формула — покомпонентное умножение:
Result := RGB(Color.R * Light.R / 255, Color.G * Light.G / 255, Color.B * Light.B / 255);

2. Несколько источников светят на точку. Как вычислить суммарный RGB цвет истоников (и, далее, п1)?

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

OR — это нечто совершенно неадекватное, мне непонятно что оно тут выражает.

редакция от Doj, 04.09.2014 08:33

Battle City II:Не участвую.
Zer0
Avatar пользователя

Опубликовано 04.09.2014 14:30 (5 лет назад)    #
В 8-битном режиме были таблицы и карты освещения по которым рассчитывались индексы цветов в палитре в зависимости от яркости.

Cейчас используют HDR. Однако если есть специфика, можно использовать или YCrCb или HSL, они хоть и нелинейные но помогают адекватно решать ситуации с "переосвещением". http://en.wikipedia.org/wiki/HSL_and_HSV
Battle City II:Не участвую.
Shirson
Avatar пользователя

Опубликовано 04.09.2014 15:45 (5 лет назад)    #
Doj написал:
Можно задать простой уточняющий вопрос: что такое цвет точки? :)
Это цвет R G B, который в полной темноте должен быть 0 0 0, в на свету (FF FF FF) должен быть R G B.

Но я пофантазирую на тему. Допустим, что под цветом точки имеется в виду цвет, который будет у точки при полном освещении, т.е. когда мы светим на неё цветом $ffffff.
Верно.

Тогда если мы светим 1/2 полного цвета, то и у точки будет 1/2 цвета, а если у света есть только, скажем, синяя компонента, то и точка будет иметь оттенок синего, т.е. формула — покомпонентное умножение:
Result := RGB(Color.R * Light.R / 255, Color.G * Light.G / 255, Color.B * Light.B / 255);

Прэлэсно! Спасибо!

Нужно просуммировать цвета от всех источников. (Можно представить себе, что стоят рядом два уличных фонаря, и тогда в области пересечения освещаемой ими зоны цвет будет ярче в два раза.)
Два фонаря FFFFFF что тогда дадут? :)

OR — это нечто совершенно неадекватное, мне непонятно что оно тут выражает.
Оно тут выражает догадку :) bsivko её уже убил.
Battle City II:Не участвую.
Sanches
Avatar пользователя

Опубликовано 04.09.2014 19:11 (5 лет назад)    #
Два фонаря FFFFFF дадут тот же FFFFFF, думаю.
Просто суммируя RGB всех источников получишь как раз аdditive смешивание.
Тут можно убрать верхний предел в 255, тогда по формуле Doj ты получишь ещё и пересвечивания до белого. И два белых фонаря дадут тоже белый, но более сильный свет.
Battle City II:Не участвую.
Shirson
Avatar пользователя

Опубликовано 04.09.2014 20:14 (5 лет назад)    #
Просветили, что по классике свет складывается и его можно резать по верхней границе. Т.е. ЕЕЕЕЕЕ + ЕЕЕЕЕЕ даст FFFFFF.
Можно не резать, а ужимать динамически или обрабатывать пересвет. Но это пока отложим.
Всем спасибо :)
Battle City II:Не участвую.
Перейти на форум:
Конкурсы
Открытые конкурсы:
Battle City II
Подведение результатов...

Старт: 31 августа 2019г.
Финиш: 16 сентября 2019г.

Участники: 3
Недавние конкурсы:
 163 - Arcade
 162 - Programming
 161 - Demake
 160 - Arena Shooter IV
 159 - RPG VII
 Все конкурсы
Случайная игра
Мини-чат
Вам необходимо залогиниться.

Архив чата

17,131,736 уникальных посетителей

Создано на базе русской версии PHP-Fusion copyright © 2003-2006 by Nick Jones.
Released as free software under the terms of the GNU/GPL license.