#3174 Score: 0
HighSun
Participant
5 pts

您好,谢谢耐心解答。

我之前也看到助教对于三角形“向下”的解答的几篇帖子了,当时也去尝试修改了两个参数为负数,编译运行后得到的三角形仍然是“向下”的。

刚才我发现我是基于将 zNearzFar 理解为 “n面和f面到相机的距离” 来实现透视投影函数的,在这种理解下,nf 两个参数一定是正数。所以当输入参数改变符号时,函数后半部分 “根据fov计算top” 以及 “计算正交投影中的缩放矩阵” 时对应的参数符号也发生了改变,而在之前我修改完输入参数的符号后并没有继续对应修改函数内部对应部分。这才是我修改输入参数而三角形仍然向下的原因。

我想我是由于看到 ppt4 page30 中对坐标的“n”的标注没有加绝对值号(像 ppt5 page6 中同样图片中的那样)才产生了歧义,然后根据自己对函数中参数的理解得到了另一种推导方式而产生了上面的疑惑。现在经过修改,我已经能够用之前的变换矩阵、修改输入参数两种方式分别实现使三角形“向上”,至此我的疑惑已经解决,再次谢谢解答。

最后,如果有别的同学和我有类似的疑惑并且仅修改输入参数符号也不能使三角形“向上”:注意一下当函数输入改变后,在函数后半部分计算的 top 的符号和正交投影的缩放矩阵中的 Z 分量符号是否也发生了改变即可。