【问题标题】:The right model for shading in Ray tracing光线追踪中的正确着色模型
【发布时间】:2011-06-02 22:19:26
【问题描述】:

我想知道计算由几种不同光源和环境光产生的阴影的最准确方法。 环境光是存在于整个“世界”中的光,强度相同且没有特定方向,而漫射光是由于点光源的直接照明而产生的光。

鉴于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 盏灯都有贡献,它会更亮。

我的假设是对的吗?

【问题讨论】:

    标签: graphics shader raytracing


    【解决方案1】:

    嗯,不,光不应该被平均化。想想看。如果你只有一个强大的光源,而你添加另一个非常微弱的光,物体的颜色会减弱吗?例如,强光的强度为 10,颜色(假设方向垂直于法线,为了简单起见,没有环境光)将为 10。然后在添加第二个微弱光后,强度为 0.1,颜色将是 (10 + 0.1) / 2,即 5.05。所以增加更多的光会使物体看起来更暗。那没有意义。

    【讨论】:

    • 极端地说,如果你有无限数量的灯,如果你平均它,你会得到零净光。灯光相互独立。
    【解决方案2】:

    在现实世界中,光会增加。它也应该在你的光线追踪器中。

    【讨论】:

      【解决方案3】:

      亮度不是光强度的线性函数。换句话说,瞄准一个点的两个相同光源不会被感知为一个光的两倍“亮度”。 (亮度是一个模棱两可的术语——亮度是一个更好的术语,表示由人类视觉加权的辐射度)​​。

      您可以在知道各种像素的强度的情况下对要在显示器上查看的图像进行近似校正,称为gamma correction。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-19
        • 2012-01-18
        • 1970-01-01
        • 2019-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多