【问题标题】:Planes in ray tracing appearing too dark光线追踪中的平面显得太暗
【发布时间】:2020-02-01 16:38:11
【问题描述】:

我的光线追踪器有问题。我正在尝试使用内部不同的对象渲染Cornell Box,当我创建带有球体的盒子时,结果很好,但是当我创建带有平面的盒子时,结果太暗,并且似乎有很多噪音。

平面结果:

球体结果:

我的平面射线相交似乎还不错:

virtual bool hits(ray r, vec& h){
    double den=dot(normal_,r.direction());
    if (abs(den) > 0.0001f) // your favorite epsilon
    {
        double t=dot((point_-r.origin()),normal_)/den;
        if (t >= 0){
            h=vec(t,0.0,0.0);
            return true; // you might want to allow an epsilon here too
        }
    }
    return false;

}

有人知道会发生什么吗?提前致谢

【问题讨论】:

  • 您能详细说明planesspheres 的区别吗?上图和下图似乎显示了相同的场景。你如何创建一个带有球体的盒子?使用无限半径的球体?
  • 是的,使用无限半径的球体,但我意识到问题出在哪里。我通过设置一个新条件来改变遮挡,以避免飞机撞到自己。这样,在光线来自它所击中的同一对象的情况下,可以避免遮挡。此外,通过对沿法线的击球点使用一些偏差有助于摆脱这个问题

标签: c++ graphics raytracing


【解决方案1】:

我意识到问题所在。我通过设置一个新条件来改变遮挡,以避免飞机撞到自己。这样,在光线来自它所击中的同一对象的情况下,可以避免遮挡。此外,通过对沿法线的击球点使用一些偏差有助于摆脱这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多