2.4 渲染黑点和面片颜色不均匀

image

在通过 trace 方法计算阴影并渲染物体时,我的渲染结果中有大量的黑点,像上图所示,于是我将下图代码中的注释部分换为 0.5*LD,渲染图如下
image


不知道这个方法是否可取

更换光照源后渲染图的阴影效果好像是正确的,如下图

但上面的渲染图都是,每一块三角片的颜色都不均匀,这和我看到其他同学未插值法线的结果也不相同,想问下这个可能是什么问题 :face_with_spiral_eyes:

你这个变化方式意思是直接在光线的方向偏移了 0.5 倍的光线向量吗?这个偏移量属实有点大了。你的这个效果有点奇怪,如果是没有插值法线的结果,照理说每个面片的颜色应该是一样的,你不妨检查一下你的法线是否在哪一步不小心进行了改变,或者加载出现了问题

image
学长我这法线是按上面这样计算的,没有插值,然后在其他函数并未对法线做任何处理;
最开始法线的计算是下面这张图一样,其中 nor[i] 是从 mesh 中提取的,这种做法渲染得到的颜色计算也不正确,并且也存在上面的问题,同时时间要比前一种要慢 1 分钟左右,然后我测试的助教发布的搭建好的软件渲染时间是要我渲染的时间两倍还要多,不知道是哪里多出了这些时间
image

然后那个偏移那个是将渲染的面片重心向光线方向偏移 0.5 个单位向量,而后我给它改道 0.3 左右才刚好避免那个 trace 导致的黑点产生,但看起来偏移还是很大

问题解决了,是我默认将重心当作着色的位置导致的着色不均匀,进而偏移的解决也只需按 EPSILON 修正就可以了