1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 透视投影变换矩阵推导学习笔记

透视投影变换矩阵推导学习笔记

时间:2022-11-07 17:40:08

相关推荐

透视投影变换矩阵推导学习笔记

最近在研究透视投影,Twinsen大神的神贴有非常详细的推导过程(传送门),这里做一下学习笔记。

首先是两点基础的原理:

1.P经过矩阵M变换后得到P’点,如果知道P(x,y,z)和变换后的P’(x’,y’,z’),只要P’点的各个分量x’,y’,z’可以表示成原分量x,y,z的线性表示,那么就可以反推出变换矩阵M。如P(x,y,z),变换后的P’(2x+3y,7z,x+2y+3z),则可以推导出变换矩阵为:

2.为了方便裁剪,顶点最终会被变换到一个叫做规则观察体(CVV)中,它是一个x,y,z均为[-1,1]的立方体,由于透视投影的视景体是锥形,所以要将视景体与CVV进行映射,就需要一个线性插值的过程,将[left,right]变换到[-1,1],将[bottom,top]变换到[-1,1],将[near,far]变换到[-1,1],如图:

下面简单的写下推导的主要步骤。

图中P(x,y,z),投影平面为近平面,投影点P’(x’,y’,z’),那么根据相似三角形有x/z=x’/z’,其中z’=-N,所以可以求得x’=-Nx/z,同理得y’=-Ny/z,所以P’(-Nx/z,-Ny/z,-N)。

这里得到的P’点的z坐标为常量,它不是x,y,z的线性组合,无法构建变换矩阵。通过观察-Nx/z,-Ny/z,都与1/z成线性相关,所以如果z’也与1/z线性相关,则可以得到P’(-Nx/z,-Ny/z,-(az+b)/z),然后转换成齐次坐标P’(Nx,Ny,az+b,-z),这样就可以构建出变换矩阵了。

所以在我们作为矩阵的变换后,记得将齐次坐标转换成普通坐标才是最终结果,也就是透视除法。

当然上面得到的矩阵并不是最终的矩阵,还需要构建CVV。

Z方向上:

X和Y方向上:

所以最终的投影点为

同理P’各个分量乘以-z,得到

使得各个分量均为x,y,z的线性表达式,这样就可以推导出变换矩阵

=>

同样要记得:顶点通过该矩阵变换后,还要经过透视除法才能得到最终投影的点。之前看书时说投影矩阵变换得到的顶点坐标各个分量的值域是[-w,w],原来是从这里反推的,也就明了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。