提问人:De Loris 提问时间:4/12/2023 最后编辑:Rabbid76De Loris 更新时间:4/12/2023 访问量:18
如何在透视投影剔除计算中剪掉 '-w < x , y , z < w ' 区域?
How to clip off '-w < x , y , z < w ' area in perspective projection culling calculation?
问:
http://www.songho.ca/opengl/gl_projectionmatrix.html在这篇文章中,有人说
通过与 wc 的比较来测试剪辑坐标 xc、yc 和 zc。如果任何裁剪坐标小于 -wc 或大于 wc,则顶点将被丢弃。
但是我看到 glm 中已经提供了
glm::mat4 proj = glm::perspective(glm::radians(45.0f), (float)width/(float)height, 0.1f, 100.0f); //FOV , ratio , close , far
我认为保留的比例可以通过从 FOV 角度、距离和比率推断出远平面的长度和宽度来计算。
那么 w 在这里做什么呢?剪裁可以在没有 w 的情况下完成。
还有另一个问题,如果我们要使用 w 进行剪辑,结果与上述函数格式相反。我不知道我哪里错了.这是我的过程,如果你能帮助我。
w 之外的顶点将被切断。-w < o < w 等于 -1 < o/w < 1 等于 -1 < r < 1 . 当 o = w 时,o = x/d 。则 tan(角度) = o/x = 1/d 。则 r = 1 。
在这种情况下,这个 'tan(angle) = 1/d' 要求近平面与 FOV 一致,而事实是我们可以任意设置近平面值。
关闭平面应独立。我不知道它必须与角度相匹配的结论是怎么得出的.
我认为我的过程没有错,因为 FOV 距离一个人的 tan(angle) = borderlimit / x ,其中 borderlimit = w ,而 tan(angle) = 1/d ,就像上述结果一样。
(我的上一篇文章可能与透视投影计算中的每个顶点的 w 值唯一吗? )
答: 暂无答案
评论