webgl学习之路(三)——透视投影矩阵的推导过程

关于透视投影矩阵的讲解,网上有不少教程,但是有一点大家基本上都没有讲清楚:就是z轴坐标(这里的Z轴相当于景深)的推导过程,基本上是一笔带过。

下面先从头开始讲推导过程,再慢慢说Z轴的推导过程。

透视投影如下图:

透视投影的过程如下:所观察的物体在一个半截面的方锥形中,设坐标为P,将P投影到近截面上,坐标为P’;如下图:

推导P'很简单,就是几何概念相似三角形,推导过程如下图:

大家注意,P’处的Z'坐标就是从视点O到近截面的距离。

但是大家可以考虑这样一个问题:那所有的物体在近截面的投影Z坐标都一样,那这样Z坐标就会失去它的作用:确定物体的远近距离。所以此时Z’先保留Z的原本值,不取OQ’这个值。

在视点O处,就是摄影机的位置,有一个长度为1的正方体(概念上叫视锥体),P'再次归一化(归一化的概念大家请看齐次坐标学习!)到这个正方体中(有点像咱们在电脑上处理图片的时候,把图片缩小到一个长和宽都为1的相框里),如下图:

推导P'’的过程如下:

首先先明确一个概念:近截面的长为W,宽为H,那么近截面的X轴正方向坐标的最大坐标(H/2, 0),归一化到正方体上的坐标是(1,0),同理负坐标(-H/2, 0)对应到(-1,0),同理Y轴正方向(0, W/2)归一化到(0,1),Y轴负方向(0, -W/2)归一化到(0,-1)。

又因为P''和P'的坐标关系是线性关系

同时

所以可以推导出

所以

同理可以推导出X''坐标

至此我们推导出了P''处X''和Y‘’,我们还没有推导出Z'',先看P‘’处坐标

此时,我们就需要齐次坐标了,将P''改为齐次坐标

同时我们设透视投影矩阵为

可得

大家如果看网上的资料,上面的推导过程大家可能都说的一样,但下面这一点我是基本上没看见有人说的,那就是因为在齐次坐标中,如下图

即:P‘’*W = P

然后我们另W=-Z,可得

代入透视投影矩阵:

所以可得Z‘’和Z关系:

再有

可得

所以透视投影矩阵为:

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值