Open utterances-bot opened 3 years ago
闫老师在上课时明确强调,不希望大家在博客贴作业代码。你上面都已经推导出了fov和aspect求l,r,b,t了,代码已经显而易见,后面就没必要再把代码贴出来。
正交投影矩阵将N=2,F=4带进去,计算出来的结果不是2映射到-1, 4映射到1
@Tcyily 上面的公式有个前置条件的,那就是 摄像机朝向-Z,也就是 N > F。 所以你的 N 应该是 -2,F 应该是 -4。 于是算出来的正交矩阵是
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 3 |
| 0 0 0 1 |
这个矩阵就是往 Z 平移 3 个单位而已,刚好就是 -2 + 3 = 1,-4 + 3 = -1。
N = -3, F = -9; | 1 0 0 0 | | 0 1 0 0 | | 0 0 1/3 6 | | 0 0 0 1 | 难道我算错了嘛(我记得矩阵相乘的结果是【0, 0, 2/(n-f), -(n+f)/(n-f)】 这个矩阵作用于 z的话是先缩放,所以平移的量理应也受到缩放量影响
@Tcyily 理解这个的关键应该是这个矩阵是通过先平移再缩放得到的。
M_ortho = S_ortho x T_ortho
第三行确实是
| 0 0 1/3 6 |
于是有
N = -3
F = -9
N' = (N + 6) * 1/3 = 3 * 1/3 = 1
F' = (F + 6) * 1/3 = -3 * 1/3 = -1
@Tcyily 理解这个的关键应该是这个矩阵是通过先平移再缩放得到的。
M_ortho = S_ortho x T_ortho
第三行确实是
| 0 0 1/3 6 |
于是有
N = -3 F = -9 N' = (N + 6) * 1/3 = 3 * 1/3 = 1 F' = (F + 6) * 1/3 = -3 * 1/3 = -1
如果按照之前文中给出的矩阵,按照矩阵乘法来的话,得到的结果会是
N' = (N 1/3 ) + 6 = -1 + 6= 5 F' = (F 1/3) + 6 = -3 + 6 = 3 而不是 N' = (N + 6) 1/3 = 3 1/3 = 1 F' = (F + 6) 1/3 = -3 1/3 = -1
@Tcyily
如果按照之前文中给出的矩阵,按照矩阵乘法来的话,得到的结果会是 N' = (N 1/3 ) + 6 = -1 + 5= 5 F' = (F 1/3) + 6 = -3 + 6 = 3
这是因为按照正常的算法的话,矩阵变换点都是先缩放再平移的(最后做加法),而 games101 里面强调的是先做平移再缩放。
@Tcyily
如果按照之前文中给出的矩阵,按照矩阵乘法来的话,得到的结果会是 N' = (N 1/3 ) + 6 = -1 + 5= 5 F' = (F 1/3) + 6 = -3 + 6 = 3
这是因为按照正常的算法的话,矩阵变换点都是先缩放再平移的(最后做加法),而 games101 里面强调的是先做平移再缩放。
我的意思是先做平移再缩放。然而他们两个的矩阵结合的结果不是这样子的,你用这样的矩阵去作用于点就会是先缩放1/3,在平移6这样的效果。
可以用这个链接测试下你这个矩阵作用在点 上的结果。
https://matrix.reshish.com/zh/multiplication.php
@Tcyily 噢,刚刚我又算了一遍,是我文中算错了。正确结果应该是
@Tcyily 我更新了,感谢指出错误 :smile:
Games101 笔记 —— 变换 - scarletsky
简介 本文《GAMES101-现代计算机图形学入门》系列教程的课程笔记,仅用于个人学习使用。 二维变换 二维变换是指二维在平面中进行的变换,一个二
https://scarletsky.github.io/2020/06/09/games101-notes-transformation/