-
第一个问题就是渲染出来为什么颜色是成块状的?我感觉像是每个面片内像素着色上下左右颠倒了导致颜色过渡不均匀。
-
第二个问题就是渲染出来大小为什么总是一样的,改变 camera.position 也不会改变渲染出来的大小,比如 (2,2,2) 与 (5,5,5) 大小都是一样的。我已经尝试过修改一些 generate_ray() 中涉及比例的内容,但是没有成功。已经确认过如下返回值应该没啥问题。
return {camera.position, (world_pos - camera.position).normalized()};
light(2,2,2) camera.position(2,2,2) 渲染如下图所示。
roland
(李昌洲)
2
对于第一个问题,颜色成块状是因为在求解光线与平面相交时,每个像素点返回的法线是三角形面片的法线。这点和 phong shading 用到的法线插值情况是不一样的。phong shading 里面有插值,而这里只要求返回面片法线,所以过渡不均匀,是正常现象。
对于第二个问题,相机位置是一定会改变最后的渲染结果的,同学可以检查一下,是否是不小心做了归一化或者其他什么操作,导致最后结果一样了
谢谢老师的解答。现在问题已经解决了,发现大小不变是因为depth没改。
麻烦问下你在实验 2.4 中对三角形顶点处理的时候使用 model 矩阵进行坐标变换了吗?以及在从 mesh 中取点的时候是否是先调用 face() 函数获取三个点的编号再用该编号调用 vertex() 函数获取点呢?
KON
5
请问 generate_ray()
函数是像文档里那样写吗,我在渲染时会出现进度条暂停然后自动退出的情况。即使渲染完成,图片里也没有模型出现。