透视投影变换之CVV

本文介绍了规则观察体CVV(Canonical View Volume)在图形学中的作用,解释了为什么需要从三维的视锥体进行变换,以及如何通过投影和平移将三维物体转换到二维屏幕中。内容包括三个步骤:投影+平移、裁剪x、y轴以及裁剪z轴,以限定范围并实现近大远小的效果。
摘要由CSDN通过智能技术生成

规则观察体CVV(Canonical View Volume)

为什么

渲染,目的是将三维世界中的场景转换到二维屏幕中,也就是连续物体离散化的过程,从三维坐标至二维坐标的降维过程。看到降维我们首先想到可以通过投影舍弃某一个坐标轴来实现。在现实生活中,我们用照相机拍照时,自然而然的舍弃了从照相机往前看的那个Z轴。
在这里插入图片描述
所以在unity我们也是这么做的,将三维物体从自己的坐标系转到世界坐标,再从世界坐标转到视坐标(即相机空间),现在从相机的视角往z轴方向看就能得到一副画面。
但是现在出现一个问题,我们真实可见的范围是有限的,而往z轴方向看得到的画面是无限的,所以还需引入其他规则来裁剪空间使得有限物体是可见的,这就是所谓的视锥体。视锥体是由六个面组成,限定了相机的可见范围,在视锥体中的物体才能被渲染到屏幕上。
在这里插入图片描述
简单来说把视锥体中的点投影到与z轴垂直的平面上就得到了一幅画面。我之前一直想不明白,明明可以对投影得到的二维画面进行操作,为什么还需要对三维的视锥体进行变换、为什么需要引入规则观察体CVV(Canonical View Volume)这些复杂的概念呢?
原来,投影的确是得出结果的步骤,但在投影之前有一个重要的步骤被忽略了,也就是判断一个物体是否在相机的视锥体之中,即裁剪。我们能够判断任意物体是否在视锥体之中,但是这是复杂的。相机的视锥体是一个六面体,由相机的近平面、远平面和FOV决定形状,所以具有不确定性,我们无法为不同相机构建一个通用的投影矩阵。为了降低复杂性,为了能够找到统一的解决方案,我们选择了CVV,而CVV作为一个齐次裁剪空间,是对视锥体裁剪空间的标准化。

是什么

(下面的讨论采用OpenGl的标准,左手坐标系,z的范围在[-1,1])
规则观察体CVV(Canonical View Volume),也叫做齐次裁剪空间,是一个 ∀ x 、 y 、 z ∈ [ − 1 , 1 ] \forall x、y、z\in\mathbb [-1,1] xyz[1,1] 的正方体。
在这里插入图片描述
在视空间中对物体进行裁剪比较复杂,所以我们希望把视锥体转为CVV。这又分为三步:第一步是将近平面与远平面之间的物体投影到近平面上(即z’=-n),再沿着Z轴平移到z’=z;第二步是将

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值