Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 [Lecture 4]透视投影中z’不等于z值的解释

Tagged: 

Viewing 0 reply threads
  • Author
    Posts
    • #17144 Score: 0
      刘好念
      Participant

      在讲透视投影变换矩阵Mpersp→ortho时,同学们对矩阵中的z分量是变化的还是不变的有很多争论。基于查阅的资料,我将在本文中谈一下自己对于这个问题的理解,并对投影变换矩阵的计算公式进行解释。同学们如果有不同的看法和理解,欢迎大家在下面讨论。本文是对[GAMES101]透视投影变换矩阵中为什么需要改变z值 的转载。
      投影变换的目标是:根据给出视体参数(fov,aspect_ratio,zNear,zFar等参数)计算得到一个投影变换矩阵M,这个矩阵需要满足三个条件:
      条件(1),这个矩阵是唯一固定的,即这个矩阵中的元素值只跟视体相关,跟视体中点的坐标无关;
      条件(2),经过变换后,必须保证各个点的z值相对关系不变,即假如点a的z值大于点b的z值,那么经过变换点a的z’依旧大于点b变换后的z’。那么z’不能与(x,y,z,w)中的x,y相关,只能由z,w确定;
      条件(3),视体边界面z=zNear平面和z=zFar平面上点的经过变换后依旧在立方体边界面上,不然在经过透视投影后,有可能原来在zFar外面的点,在变换后到了立方体内了!原本视体外需要被裁剪掉的点,变换到了立方体内,这可能导致裁剪错误;
      为了满足条件(1):z’不能等于z(除了z=zNear和z=zFar平面上的点),不然矩阵M中就需要包含各点的坐标值z。
      为了满足条件(2):Mpersp→ortho第三行 (? ,?,A,B)前两个元素需要等于0。
      为了满足条件(3):将z=zNear和z=zFar平面上的点带入z’=M*z可以计算得到,A=n+f,B=−nf。
      至此,我们就得到了Lecture-4中投影变换矩阵Mpersp→ortho。

Viewing 0 reply threads
  • You must be logged in to reply to this topic.