Правильная модель для затенения в трассировке лучей - PullRequest
6 голосов
/ 03 января 2011

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

Учитывая, что Ka - коэффициент отражательной способности поверхности, Ia - интенсивность рассеянного света, Kd - отражательная способность поверхности, Ip1 - интенсивность первой (соответственно) точки. источник света, N - нормаль поверхности, а L1 - направление света (соответственно первого источника).

Согласно моему справочному материалу интенсивность цвета на месте должна быть:

I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2)) где '.' - скалярное произведение.

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

I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2))/2

и если есть 3 источника света, но третий заблокирован и не освещает поверхность напрямую, то:

I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2))/3 (так что если есть место, где все 3 источника света способствуют, это будет ярче, ярче.

Прав ли я в своем предположении?

Ответы [ 3 ]

6 голосов
/ 03 января 2011

Ну нет, свет не должен усредняться. Думаю об этом. Если у вас есть только один мощный источник света, и вы добавляете другой, очень слабый свет, цвет объекта будет уменьшен? Например, скажем, что мощный свет имеет интенсивность 10, цвет (при условии, что направление перпендикулярно нормали, и для простоты нет внешнего освещения) будет равен 10. Затем после добавления второго слабого света, скажем, интенсивностью 0,1, цвет будет (10 + 0,1) / 2, что составляет 5,05. Поэтому добавление большего количества света сделает объект темнее. Это не имеет смысла.

4 голосов
/ 03 января 2011

В реальном мире свет добавляет.Это должно быть и в вашем трассировщике лучей.

1 голос
/ 03 января 2011

Яркость не является линейной функцией интенсивности света. Другими словами, два идентичных источника света, нацеленные на одно пятно, не воспринимаются в два раза «ярче», чем один источник света. (Яркость - это неоднозначный термин - яркость - это лучший термин, который означает сияние, взвешенное человеческим зрением).

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

...