具有相同z值的标准化设备坐标是否位于平面中?

时间:2013-07-19 17:10:58

标签: opengl graphics 3d

我正在开展一个项目,我想在NDC中获取一系列顶点并将它们放回世界空间,但我希望它们都能在一个平面上。由于有无数个顶点可以全部投影到相同的NDC x和y,可以肯定地说z坐标是完全独立的吗?我可以改变z坐标并通过管道中所有矩阵的倒数“反投影”该点并使其出现在屏幕上的相同“位置”中吗?这是我对它应该如何工作的理解,这是正确的吗?

如果是,那么我的直觉是,如果我想将所有点放在同一平面(在世界空间中)作为一个特定点(正常方便地等于摄像机看方向),那么我应该要做的是将NDC z值设置为等于该特定NDC点的z值?那是对的吗?这有意义吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

意思是,许多顶点可能具有相同的X& Y,他们可能有不同的Z和可能不在同一个平面上。

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

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

如果有帮助,这里是如何将点投射到飞机上:
How do I find the orthogonal projection of a point onto a plane

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