图形学渲染实验 2.6 文档提问


以上两幅图来源于文档中和 whitted-style-ray-tracing 有关的部分。

我不理解的是,如果说交点计算是有误差的,为什么反射光线向外偏移 epsilon 就解决了这个问题?难道说反射光线的误差正负是固定的?而所谓的“解决”是否指的是让最终采用的坐标更接近实际交点?


gpt 给出的回答如下:

  • 向外偏移

    • 如果光线是向外发射的(即 D⋅N>0D \cdot N > 0D⋅N>0),那么交点需要向外偏移,以确保交点不与三角形表面重合。这样做是为了避免后续计算(例如反射或阴影)时出现误差。

    偏移交点=交点+N×ϵ\text{偏移交点} = \text{交点} + N \times \epsilon 偏移交点=交点+N×ϵ

    其中 ϵ\epsilonϵ 是一个小的偏移量。

  • 向内偏移

    • 如果光线是向内发射的(即 D⋅N<0D \cdot N < 0D⋅N<0),则交点需要向内偏移。这样做是为了防止光线在物体内部的计算误差,使得交点确实在物体内部而不与表面重合。

    偏移交点=交点−N×ϵ\text{偏移交点} = \text{交点} - N \times \epsilon 偏移交点=交点−N×ϵ