我想知道计算几种不同光源和环境光产生的阴影的最准确方法。 环境光是存在于整个“世界”中的光,具有相同的强度而没有特定的方向,漫射光是由点光源直接照射而发生的光照。
鉴于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个灯都有贡献的地方,它会变得更亮。
我的假设是对的吗?
答案 0 :(得分:6)
嗯,不,光不应该是平均的。想一想。如果你只有一个强大的光源,并且你添加另一个非常微弱的光线,那么物体的颜色会减少吗?例如,强光有强度10,颜色(假设方向垂直于法线,没有环境光,为简单起见)将为10.然后在你添加第二个微弱的光后,用强度为0.1的颜色将是(10 + 0.1)/ 2,即5.05。因此,添加更多光线会使物体看起来更暗。这没有意义。
答案 1 :(得分:4)
在现实世界中,光增添了色彩。它也应该在你的光线追踪器中。
答案 2 :(得分:1)
亮度不是光强度的线性函数。换句话说,两个相同的光源瞄准一个光点并不像一个光那样被视为“亮”的两倍。 (亮度是一个模糊的术语 - 亮度是一个更好的术语,意味着人类视觉加权的辐射)。
当你知道各种像素的强度时,你可以做些什么作为校正要在显示器上观看的图像的近似值,gamma correction。