我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>3D>3D教育>基础知识

透视投影变换理论推导

文章来源:不详 作者:佚名 发布时间:2011年02月27日 点击数: 字号:

感觉很多书上都没讲清楚透视投影变换的推导过程,自己推导了下,以前一直含糊的关于方形/非方形的视平面和屏幕的宽高比的问题也有了答案.本文组织如下:

1.相机空间到视平面的变换

2.视平面到屏幕的变换

3.综合

4.一般情形

透视投影变换理论推导:

1.相机空间到视平面的变换

                       * p (xc,0, zc)
                     / |
                    / |
                   /   |
           X    |/     |
           ^     *p' |(xp,0,zp)
           |   / |      |
           | / |     |
           | /   |     |
C(cam) |/    |     |
--------*----|----*------------->Z
           0    dx   zc
     (X-Z平面的投影示图)

a.透视投影一般的视景体为棱台,相机空间的物体会投影到视平面z=d,这里考虑左手坐标系,矩阵使用行优先方式。如图所示,由相似三角形知识可知相机空间中的物体投影到视平面上的坐标为:

xp = xc*(dx/zc)
yp = yc*(dy/zc)

其中,xc,yc,zc为相机空间坐标,xp,yp,zp为视平面坐标,dx,dy为x,y轴向的视距view distance,视平面到camera的距离,
故相机空间投影到视平面上的矩阵Tcp为:

|dx 0 0 0 |

|0 dy 0 0 |

|0 0   1 1 |

|0 0   0 0 |

(验证:Tcp右乘点p(xc,yc,zc,1)得点p'(xc*dx, yc*dy, zc, zc),转换为3D坐标为(xc*dx/zc, yc*dy/zc, 1),正确。)

********************************************************************
注:因为转换过程中点使用的是4D齐次坐标,所以最后需转换为3D坐标。4D齐次坐标(x,y,z,w)转换为3D坐标的方法为除以w分量,即对应3D坐标为(x/w,y/w,z/w)。
********************************************************************

考虑dx/zc和dy/zc项,如果dx != dy,则投影后x,y的比例会发生变化(原因:投影前坐标比例为xc/yc,投影后为xp/yp = xc*(dx/zc)/yc*(dy/zc) = xc*dx/yc*dy),从而投影后的图像的x,y比例会发生变形。

---------------------------------------------
结论1:所以,一般都会令d=dx=dy,即x,y向的视距相同。否则,图像失真。
---------------------------------------------

考虑视角(view angle,或视野filed of view)的问题,视角的大小不会影响到物体投影后的坐标,只会影响可视的范围。

在视距一样的情况下,x,y轴的视角可以不一样。如果一样,那么视平面就是一个正方形的。于是有:

tan(theta_x/2) = width_p/d
tan(theta_y/2) = height_p/d

其中,theta_x,theta_y为x,y轴向的视角,width_p,height_p为视平面z=d的宽度(x轴)和高度(y轴)。
----------------------------------------------------------------
结论2:视平面的宽高比rp=width_p/height_p = tan(theta_x/2)/tan(theta_y/2)。
----------------------------------------------------------------

2.视平面到屏幕的变换

下面就是视平面到屏幕的变换了,这是一个2D到2D的变换(视平面的坐标

共3页 您在第1页 首页 上一页 1 2 3 下一页 尾页 跳转到页 本页共有2124个字符
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料