我在我的光线追踪器中遇到了阴影光线的问题。
请看以下两张图片:
3D sMax:
alt text http://neo.cycovery.com/shadow_problem.gif
我的光线追踪器:
alt text http://neo.cycovery.com/shadow_problem2.jpg
场景由一个非常明亮的光源照亮,从后方照射。它非常亮,以至于阴影没有渐变,只有黑色或白色(由于过度曝光)。
这两张图片都是使用3DStudioMax渲染的,并且都使用相同的几何形状,只是在一个版本中法线沿三角形进行了插值。
现在考虑表面上的红点。在未平滑版本中,它位于一个黑暗区域。这意味着光源从这个三角形面朝背面,因此不可见。
然而,在平滑版本中,它位于照亮的区域,因为插值法线会表明光线在该点可见(尽管三角形的实际几何形状面向光源的方向)。
我的问题是当光线跟踪阴影出现时。如果从红点向场景射出一个阴影光线,以测试光源是否可见(以确定阴影),则阴影光线将返回一个交点,无论是否插值法线(因为交点只取决于几何形状)。因此像素会被着暗色。3dsamx正确处理了这种情况——渲染图像是使用启用光线跟踪阴影生成的。但是,当我在我的光线追踪器中开启光线跟踪阴影时,它也遇到了这个问题(在我的光线追踪器中,两种情况下该点都很暗,因为光线跟踪阴影确定了处于阴影中的点),我不知道如何解决它。
我希望有人知道这个问题以及如何处理它。
谢谢!