Войти
ПрограммированиеФорумГрафика

Освещение точечным источником (Omni) (2 стр)

Страницы: 1 2 3 Следующая »
#15
18:19, 16 апр. 2018

eDmk
> Могу и так считать (specular+defuse)*max(dot(n,l), 0.0), но тогда направленный
> источник получается.
Ты неправильно понимаешь формулу.
Смотри на схему:
Изображение
Свет, который приходит в пиксел камеры - это отражённый свет [cht]I_r[/cht].
Свет, который падает на поверхность - это падающий свет [cht]I_i[/cht].
В общем случае, соотношение между ними [cht]f=\frac{I_r}{I_i}[/cht] зависит от свойств самой поверхности, от угла падения света [cht]\omega_i[/cht] и от угла, с которого на эту поверхность смотрят [/cht]\omega_r[/cht].
В "свойства самой поверхности" входит как цвет поверхности - свойство по-разному отражать разные длины волн, так и структура - например, у глянцевых поверхностей [cht]f[/cht] будет высоким, когда [cht]\omega_r[/cht] будет близко к зеркальному отражению [cht]\omega_i[/cht], тогда как матовые выглядят практически одинаково со всех углов обзора.
Самая простая модель поверхности - ламбертовая:
[cht]f=D \max (n \cdot \omega_i, \;\;\; 0)[/cht]
В ней [cht]n \cdot \omega_i[/cht] отвечает за то, чтобы наклонённые к источнику поверхности казались менее освещёнными, чем смотрящие прямо на него, [cht]\max[/cht] не позволяет формуле дать отрицательную интенсивность при освещении с обратной стороны, а [cht]D[/cht] придаёт поверхности цвет.
Отдельная формула - это зависимость интенсивности падающего света [cht]I_i[/cht] от положения относительно источника [cht]r[/cht]. Для ненаправленного источника, интенсивность зависит только от расстояния до источника и выражается как [cht]I_i = \frac{K}{|r|^2}[/cht], где [cht]K[/cht] - мощность источника.

#16
18:58, 16 апр. 2018

Delfigamer
Это получается Ламберт с полусферой:
https://yadi.sk/i/SuAMPCcp3UTp7E

А у меня сфера без Ламберта:
https://yadi.sk/i/vBLh76k63UTpDL

Вот и думаю как затенить треугольник, если Omni-источник находится внутри объекта.

#17
19:15, 16 апр. 2018

eDmk
> Вот и думаю как затенить треугольник, если Omni-источник находится внутри
> объекта.
Вам выше уже ответили на этот вопрос)))

#18
19:20, 16 апр. 2018

eDmk
> А у меня сфера без Ламберта:
eDmk
> Вот и думаю как затенить треугольник, если Omni-источник находится внутри объекта.
то есть ты выдумал волшебную модель освещения и теперь спрашиваешь, как её сделать неволшебной что ли?

#19
(Правка: 19:39) 19:36, 16 апр. 2018

Suslik
>то есть ты выдумал волшебную модель освещения и теперь спрашиваешь, как её сделать неволшебной что ли?
Вы похожи на вирус WIN.CIH95. Вас очень много и все разновидности опасны.
Очевидно, что ответить или подсказать желания нет, но вы все равно тут.
Ваши «волшебные» работы видел. Не впечатляют. Поделки мелкого пакостника.
А за свои мне не стыдно. Я начинающий.

И о да! Формулу я придумал сам.

#20
19:40, 16 апр. 2018

Suslik
С тем что Луна - волшебная даже спорить как-то не хочется.
А вообще, хоть бы и
[cht]I \cdot \max(\operatorname{sgn}(\vec{n} \cdot \vec{\omega}_i),0)[/cht]
вместо
[cht]I \cdot \max(\vec{n} \cdot \vec{\omega}_i,0)[/cht]

#21
(Правка: 19:45) 19:43, 16 апр. 2018

FordPerfect
какбе в уравнении рендеринга [cht]\omega \cdot \vec n[/cht] вообще by design есть всегда, потому что если на поверхность свет падает под углом, то плотность входящего светового потока получается меньше, так как он распределяется по большей площади, и коэффициент этот, разумеется — косинус угла падения:
Изображение

или ты хочешь сказать, что луна ему не подчиняется?

#22
19:48, 16 апр. 2018

eDmk
> Я начинающий.
Так и начните с азов, что проверка триангла на освещеность это если dot(normal, lightVec) больше нуля.
Где лайтВек это LightPos - vertexPos (потом не забываем это нормализировать). Вам же написали выше это.

#23
19:50, 16 апр. 2018

>Вам же написали выше это.
Так это полусфера, а мне сфера нужна. Видимо в 2-х направлениях надо проверять.

#24
19:53, 16 апр. 2018

eDmk
> а мне сфера нужна
Зачем? Практическое применение?

#25
19:56, 16 апр. 2018

eDmk
Ты поехавший? Что по твоему значит освещение по полусфере?

#26
20:04, 16 апр. 2018

eDmk
> Это OMNI, а не направленный свет. Вы забываете.
> Он направлен во все стороны СРАЗУ.
> С направленным у меня нет проблем.
Нужно направление не источника света, а НА источник света, его можно брать от любой вершины треугольника, знак будет один.

#27
20:11, 16 апр. 2018

Suslik
> потому что если на поверхность свет падает под углом, то плотность входящего светового потока получается меньше, так как он распределяется по большей площади
С этим я не спорю.
Но the Moon is a non-lambertian scatterer.
> или ты хочешь сказать, что луна ему не подчиняется?
Можно воспринимать в том смысле, что внутри fr есть нечто, что Ламберта примерно компенсирует. И визуально яркость почти не зависит от угла падения. Вплоть до терминатора.
Вообще BRDF Луны - особая интересная тема.
http://graphics.stanford.edu/~henrik/papers/nightsky/

#28
(Правка: 21:03) 21:02, 16 апр. 2018

eDmk
> Это получается Ламберт с полусферой:
> https://yadi.sk/i/SuAMPCcp3UTp7E
> А у меня сфера без Ламберта:
> https://yadi.sk/i/vBLh76k63UTpDL

+ Показать
#29
23:43, 16 апр. 2018

Dampire
> Ну-ка покажи мне как можно быть направленным во все стороны по отношению к
> треугольнику. Схему в паинте плес. Как придумаешь - нобелевку делим пополам.
nobel | Освещение точечным источником (Omni)
Можно мне нобелевку?

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика