0

我正在做一个项目,我想收集我在 NDC 中拥有的一组顶点并将它们放回世界空间,但我希望它们都位于一个平面上。既然有无数个顶点都可以投影到同一个 NDC x 和 y 上,那么可以肯定地说 z 坐标是完全独立的吗?我可以通过管道中所有矩阵的逆矩阵更改 z 坐标并“取消投影”该点,并让它出现在屏幕上的同一个“位置”吗?这就是我对它应该如何工作的理解,对吗?

如果是这样,那么我的直觉是,如果我想将所有点放在同一平面(在世界空间中)作为一个特定点(法线方便地等于相机的观察方向),那么我应该做的就是是否将它们的 NDC z 值设置为等于该特定 NDC 点的 z 值?那是对的吗?那有意义吗?

4

2 回答 2

1

是的,具有相同 z 值的点将位于法线平行于视图方向的平面中。尽管从 NDC z 值到深度的转换是一些任意函数,但它仅取决于 z 值(而不是 x 和 y)。

于 2013-07-21T01:47:06.260 回答
0

Z 值不是独立的,即使在 NDC 中,它仍然是场景的深度。

这意味着,许多顶点可能具有相同的 X 和 Y,它们可能具有不同的 Z,并且可能不在同一平面上。

如果要修改 Z 分量,从右视图看,它看起来就像在同一平面上,但实际上它是沿着射线移动的。这是一篇有助于描述该射线的论文。 http://myweb.lmu.edu/dondi/share/cg/unproject-explained.pdf

如果你想从 NDC 进入世界空间,然后在同一个平面上,你需要做的就是将它们全部投射到世界空间中的那个平面上。

如果它可能有帮助,这里是如何将点投影到平面上:
如何找到点在平面上的正交投影

这里提醒一下如何进入 NDC: http:
//www.songho.ca/opengl/gl_transform.html

于 2013-07-19T19:49:34.590 回答