计算机图形学基础——MVP变换

前言

基于GAMES101------闫令琪老师的视频为基础,整理,总结而来。感谢闫老师带来如此好的一份教学,视频链接:https://www.bilibili.com/video/BV1X7411F744

正文

MVP变换不是我们打游戏里面的那个mvp哦,而是model(模型),view(视图),projection(投影)。我们可以类比相机拍照过程:首先,要人站定位置(模型),然后相机摆好位置(视图),最后按下快门键(投影)。下面我们分别介绍视图变换及投影变换。

视图变换

首先规定下列变量:

我们视图变换的目的主要是为了将相机放在默认的位置上------(0,0,0)点,头顶方向为Y轴,面对方向为-Z。

要将一个随意位置的相机放到该位置上,我们的想法是:先移动后旋转。于是可以写出下面的式子:👇

T矩阵

T矩阵就是移动矩阵,这个我们比较好想:当前的位置是e(x,y,z)点,那么我们就先不旋转,只移动-x,-y,-z就可以回到原点。

R矩阵

R矩阵就是Roatation------旋转矩阵,这个矩阵我们要怎么求出呢?

从原本角度旋转到默认角度很难,我们不妨可以想一想从默认角度旋转到原本角度,求得的矩阵R'后,根据正交矩阵的逆就是其转置的性质,来通过求R'的逆便可以求得,这里我们就直接贴出来式子:

矩阵的乘法是从右往左运算的,先将相机移动原点上面去,然后再考虑旋转,然后旋转不好直接推,那么就推从原点旋转到那些角度的矩阵,然后再逆变换就可以了。

我们相机变换了,为了看起来不变,根据相对运动,我们的模型变换也要乘上这个矩阵来相应地作出变换,所以经常有模型视图变换这个说法

相机摆好,人摆好后,我们就需要三维到二维的一个投影。

投影变换

投影分为两种投影:正交投影和透视投影。

正交投影与透视投影的最明显区别为:正交投影没有近大远小现象,透视投影有。

正交投影

正交变换是为了将所有物体都放在-1到1的三次方这个可视立方体(剪切空间)中,让三维物体可以映射到平面中去。这样子移动后,还有一个视口变换,最后形成一个正交投影的图像。

将一个模型的最左、右、下、上、前、后的值都取得,以下图变量命名。

透视投影

上图中有两个面,一个是near------n面,即为靠摄像头较近的那一面,far------f面,距离摄像头较远的那一面,我们的目的就是将f面都投影到n面上。

要做到将f面投影到n面,我们需要经历两件事:1、将四边挤压到和n面一样xy,看作远平面上的四个点,挤成和近平面一个高度 ;2、正交投影到n面上。我们的挤压,要遵循一个规定:近平面永远不变,远平面经过挤压后,中心点不变。

上面的M矩阵,是从透视到正交的一个矩阵,目的是将f面上的点来乘以这个矩阵后,可以投影到n面上。

要做到求出这样子的矩阵,我们先想象:从侧面看上图中左边的台体

根据上图,我们已知的是n值,要求其近平面上的点,可以根据相似三角形的性质,n/z的比例不变,知道求近平面上的值x',y',但由于z的值是变化的,所以在这里我们暂时无法表示z值,下图中先用unknown表示👇

于是我们便可以得到下面的式子👇

可以根据上面,推出M矩阵为下面的形式:

可是目前该矩阵的第三行还是不知道如何表示,但,我们有两个已知的条件:

  1. 在近平面下,任一点乘以M矩阵的值都不变;
  2. 在远平面上,有一个点,中心点(0,0,f)不变

根据在近的平面下,任意点不变的性质:

上面图中的意思是,原本左边是我们之前进度得出来的结论,因为近平面上的任意点都不变,所以我们将z的值代入n,将其变为n面上的点。

由于乘以M矩阵变化后不变,我们可以把M矩阵先去掉,如何将上面的(x,y,n,1)乘以一个n,和等号右边对应:

也就是说,我们由此知道M矩阵的第三行乘以(x,y,n,1)=n的平方

根据上图,得式子①:

根据远平面上,中心点(0,0,f)不变 性质:

最后得式子②:

根据式子①②,我们可以求的A和B的值:

最后得到透视矩阵结果(也就是M矩阵,下图中用P字母代表):

这样便可以通过乘以上面的矩阵来求得经过透视投影后的点位置。

相关推荐
Mark White1 天前
ICCV 2019【从颜色科学到相机】02_颜色从哪里来?从光谱、同色异谱到 CIE XYZ
数码相机
hahaha60162 天前
色彩恒常性概述
人工智能·嵌入式硬件·数码相机·计算机视觉
hahaha60162 天前
白平衡综述
数码相机
shoufeipin90hou2 天前
4K 线扫相机的行频匹配:带速一变,图像为什么会变形
数码相机·计算机视觉
7yewh2 天前
SLAM 相机与图像(4)
人工智能·数码相机·计算机视觉
so~what3 天前
卫星平台和载荷有什么区别
数码相机·ntn
shoufeipin90hou3 天前
分选线上的「标定周期」与漂移排查:精度没变差,只是它悄悄跑偏了
数码相机·计算机视觉
HwJack203 天前
【共创稿事节】HarmonyOS 7空间交互综述:视线、头部、手势的协同
数码相机·交互·harmonyos
Cx330❀3 天前
【Qt 进阶指南】详解 Qt 常用标准对话框与主窗口组件架构
开发语言·qt·ui·性能优化·架构·图形渲染
shoufeipin90hou4 天前
光选机的“除尘与风选“配套边界:分选精度上不去,可能问题不在相机
数码相机·计算机视觉