首页 > 其他分享 >计算机图形学入门05:投影变换

计算机图形学入门05:投影变换

时间:2024-05-31 17:28:32浏览次数:22  
标签:相机 正交投影 05 投影 裁剪 矩阵 图形学 投影变换 透视

1.投影变换

        上一章已经介绍了投影变换,就是将三维图像投影到二维平面上,而投影变换又分为正交投影(Orthographic Projection)透视投影(Perspective Projection)。如下图:

正交投影

        没有近大远小的现象,无论图形与视点距离是远是近,图形多大画出来的图形就是多大。假设相机距离拉到无限远,远近物体的大小无限接近,所以显示不同距离的物体画面显示一样大小。正交投影会通过远近裁剪面、前后裁剪面、上下裁剪面六个面确定一个可视空间,在可视空间中的物体才能被看到,被映射在近裁剪面(Near clip plane)上。

透视投影

        有近大远小的现象,更接近肉眼看到的画面,应用更加常见。假设相机放在某一个点投射出一个视锥空间,在视锥空间中通过近裁剪面和远裁剪面(Far clip plane)可以裁出一个椎体空间,这个空间称为透视投影的可视空间,在可视空间里的物体被映射到近裁剪面上。

2.正交投影

2.1简单的理解

        1.相机在原点,方向是-z方向,上方向是Y轴。(上一章提到的相机标准位置)

        2.扔掉z轴。如下图所示,物体映射到平面上跟Z轴坐标无关(这样无法判断物体前后)。

        3.可以看出只要将物体平移和缩放到[-1,1]²矩阵里。到这个矩阵为了之后方便计算。

2.2正式推导正交投影矩阵

        我们想要将一个长方体[l,r]×[b,t]×[f,n]映射到标准立方体(canonical cube)([-1, 1]³)中,表示对空间的某一块进行正交投影。这个变换过程就是先平移再缩放。如下图所示:

        

        上图中的立方,l,r表示左边界和右边界,b,t表示下边界和上边界,f,n表示远裁剪面和近裁剪面。由于相机向-z方向看去,所以离相机越近意味着z值越大,离相机越远z值越小,所以这里z值越大距离相机越近,z值越小距离相机越远。

正交投影矩阵

        先平移到原点(两点相加除以2等于中心点),然后缩放(长、宽、高变为2)。原本长方体长宽高覆盖范围分别为r-l,t-b,n-f,缩放到2,因为标准立方体-1到1直接范围是2。

        合并后最终正交投影矩阵为:

3.透视投影

        在推导之前先回忆下齐次坐标的性质。坐标(x,y,z,1),(xk,yk,zk,k!=0),(xz,yz,zz,z!=0)在3D中都表示同一个点(x,y,z)。例如(1,0,0,1),(2,0,0,2)都表示(1,0,0)这个点。

3.1推导透视投影矩阵思路

        推导思路是将透视投影的视锥体“压扁”长方体,做正交投影。如下图所示:

        在挤压过程中,要保证近裁剪面不变,z值不发生变化,远裁剪面的中心点也不发生变化。挤压完成后就变成正交投影矩阵,所以要求透视投影矩阵就变成了先求透视投影到正交投影的变换矩阵,再进行正交投影矩阵。

3.2推导透视投影矩阵

        下图是透视投影的侧视图:

        如上图所示要将点(x,y,z)移到与点(x’,y’,z’)一样的高度和水平宽度,需要将y移到y’x移到x’。根据图中的相似三角形性质,可得出两者的关系:

        根据齐次坐标性质,给每个分量都乘以z,得到远裁剪面上的点与近裁剪面的点映射关系:

        那么得到的这个挤压后远裁剪面的点,肯定是由远裁剪面乘以某个变换矩阵得到,也就是透视投影到正交投影的变换矩阵。

        然后根据矩阵相乘的性质,反推算出这个变换矩阵,只有第三行还不知道。

        第三行势必跟z有关系,而在挤压过程中近裁剪面上任何的点z值都不发生变化的。而近裁剪面的z值就是n,近裁剪面矩阵乘以这个M(4x4)矩阵一定等于它自己(点坐标一样)。所以可以代入做如下处理。

       根据矩阵乘法反推,因此M(4x4)矩阵第三行必须是(0,0,A,B)AB为自己命名。推导:x*0+y*0+A*n+B*1 = n²

        所以得到An+B = n²

        又因为在挤压过程中远裁剪面上任何的点z值也都不发生变化的。拿到远裁剪面上的中心点(0,0,f),这个中心点在挤压前和挤压后x,y的值也不变。

        所以与近裁剪面同理,将远裁剪面中心点代入处理可得。

        将上面得到的关系表达式,整理计算得到AB的值。

        至此,矩阵第三行得到(0,0,n+f,-nf),代入可得透视投影到正交投影的变换矩阵。

        挤压完成变成正交投影之后,就交给正交投影矩阵完成了。

3.3透视投影矩阵

        上述已经求得了透视投影到正交投影的变换矩阵,再进行正交投影矩阵,即是透视投影矩阵。(矩阵相乘从右到左应用)

标签:相机,正交投影,05,投影,裁剪,矩阵,图形学,投影变换,透视
From: https://blog.csdn.net/qq_26540577/article/details/139331099

相关文章

  • 前端学习-Dart官方文档学习-005-控制流
    官方文档链接Loops循环forloopswhileanddowhileloopsbreakandcontinueBranching,likeifandswitchExceptions,liketry,catch,andthrowfor、for-in、forEachvarcallbacks=[];for(vari=0;i<2;i++){callbacks.add(()=>print(i));}//Th......
  • P10550 [THUPC2024] 贸易
    MyBlogsP10550[THUPC2024]贸易首先可以观察到,对于每种颜色,括号匹配(把\(0\)看成左括号,\(1\)看成右括号)一定是最优的。所以可以先找出所有匹配\([x,y]\),然后问题变成给定\([l,r]\),求有多少个\([x,y]\subseteq[l,r]\),离线做一遍扫描线,树状数组维护即可。 intn,m,a[50001......
  • P10542 [THUPC2024] RPG
    MyBlogsP10542[THUPC2024]RPG一个有配合的“状态加攻击”一定是一个连续段,段内都在摸鱼。所以设\(f_i\)表示考虑了前\(i\)个人的最大收益:\[f_i=\begin{cases}f_{i-1}+d_{b_i}\\\max_{(x,y,z)\in\mathbb{E},y=b_i}g_x+z+d_{b_i}\end{cases}\]其中\(g_i\)表示满足......
  • P10541 [THUPC2024] 研发计划
    MyBlogsP10541[THUPC2024]研发计划首先看上去就比较像流,直接考虑怎么建模。如果没有\(h\)就是裸的最大权闭合子图:\(S\)向每个技术连边,每个收益向\(T\)连边,然后技术指向收益的边连inf,做最小割(割掉的表示支付的代价),答案就是收益之和减去最小割。现在有了\(h\),要做的大......
  • P10543 [THUPC2024] 黑白
    MyBlogsP10543[THUPC2024]黑白签到题。首先要判联通性。判完之后,统计全局的白格子个数\(s\)。因为删到最后,一定会留下一条白色路径,然后路径的长度在\(\bmod\;2\)意义下和\(n+m-1\)同余。而我们只关心能操作次数的奇偶性,所以只需要判断\(s-n-m\)的奇偶性即可。 int......
  • 打卡信奥刷题(32)用Scratch图形化工具信奥P1055 [NOIP2008 普及组] ISBN 号码
    [NOIP2008普及组]ISBN号码题目描述每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括999位数字、1......
  • CentOS 7基础操作05_Linux查看及切换目录
    1、pwd命令——查看当前的工作目录(PrintWorkingDirectory)        pwd命令用于显示用户当前所在的工作目录位置,工作目录是用户操作文件或其他子目录的默认位置起点。使用pwd命令可以不添加任何选项或参数。例如,root用户在/root目录中执行pwd命令时若输出信息为/roo......
  • Leetcode 力扣105. 从前序与中序遍历序列构造二叉树 (抖音号:708231408)
    给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。示例1:输入:preorder=[3,9,20,15,7],inorder=[9,3,15,20,7]输出:[3,9,20,null,null,15,7]示例2:输入:preorder......
  • html5,h5是什么?h5常用标签和标签的分类(2024-05-31)
    起源HTML(HypertextMarkupLanguage,超文本标记语言)诞生于20世纪90年代初,用于指定构建网页的元素,这些元素中的大多数都用于描述网页内容,如标题、段落、列表、指向其他网页的链接等。HTML5是HTML的最新版本,它的大部分内容都可以兼容新旧浏览器,并新增了大量新的功能。HTML5还引......
  • 使用HC—05实现单片机HAL库双蓝牙通信
     一.蓝牙HC-05简介(主要为AT模式介绍)1.接线要点:(六个引脚中左右两侧的两个不用连接)    TX-RX     RX-TX        GND -GND    VCC -VCC(5V)2.AT模式:  进入方法:使用CH340串口工具链接HC-05及电脑USB端(提前下好CH340驱动)按......