当前位置: 首页 > ds >正文

Games 101 第四讲 Transformation Cont(视图变换和投影变换)

三维变换

三种变换

下面分别是放缩,旋转,平移
在这里插入图片描述
在这里插入图片描述
在旋转当中,绕着y轴旋转矩阵的顺序不一样,因为绕着y轴转在右手坐标系中
,z是第一轴,x是第二轴,而负号会加在第一轴上,因此负号在下面。

罗德里格斯公式

旋转能够分解成绕三轴旋转的组合,如图:
在这里插入图片描述
而罗德里格斯公式给出的是绕任意轴旋转的公式:
在这里插入图片描述
另外,旋转矩阵并不方便做插值:15°的旋转矩阵与25°的旋转矩阵相加除二并不是20°,因此引入了四元数。

相机原理

此部分原Games101没有,为更好展示变换场景引入:

相机成像

在这里插入图片描述
由上图所示,相机模型可以看成小孔成像模型,而为了方便研究,一般将成像面对称放到光心的前面,也就有了下图:
在这里插入图片描述

四大坐标系

在这里插入图片描述
在这里插入图片描述
四大坐标系与图中的编号一次对应

刚体变换(世界坐标->相机坐标)

刚体变换在图形学中也称观测变换:
我们一般用三个向量描述摄像机的方向:
在这里插入图片描述

已知在世界坐标系下的位置和方向,将相机坐标坐标系原点即可完成观测变换。
在这里插入图片描述
在这里插入图片描述

首先完成位置变换:先平移
在这里插入图片描述
然后完成旋转:再旋转
在这里插入图片描述
为方便先求旋转矩阵的逆变换,在逆变换中x,y,-z三条轴均会变成摄像机方向的三个向量。又由于是正交矩阵(因为是刚体变换),矩阵的逆就是矩阵的转置,由此求出。

透视变换与正交变换

由于摄像机其实是小孔成像(跟人眼一样),因此会有近大远小。
在这里插入图片描述
上图中两球大小相等,但在透视投影下大小由差异,而在正交投影下相同。
这是由于透视投影不同位置的光线进入光心的方向不同,不是平行的。

正交变换

在说明透视变换前先需要说明正交变换
在这里插入图片描述
如图所示,正交变换要做的事情其实是将要投影的空间压缩成一个以原点为中心,边长为2的立方体。
由此,定义空间的前后,左右,上下三组数据如图所示,可得到如下的矩阵:
在这里插入图片描述
注意,由于z轴是负的,前后的顺序是颠倒的。

投影变换

我们采用改良正交投影的方法实现透视投影。
在这里插入图片描述
如图所示,我们将原来是视锥的透视投影压成一个长方体,也就是正交投影。
但是压缩的方式不唯一,也就是不确定能压成哪一个长方体。
因此在压缩前需要确定几个参数:
在这里插入图片描述
首先要确定两个平面,近平面和远平面,知道这两个平面与原点的距离,分别为n和f。
然后确定这两个平面的性质,近平面变换前后位置不变大小不变,原平面位置不变。
由此,我们列出以下式子:
在这里插入图片描述
这里的z其实是n到f的任意一值
在这里插入图片描述
这样就确定了这个矩阵的三行。
这一步利用的条件是变换后远离近处的平面会变得和近处的平面一样大(x,y方向上)。
然后,再利用近处的平面不变:将n带入z
在这里插入图片描述
在这里插入图片描述

推断出在近处,unknow是n2n^2n2,由此:
在这里插入图片描述
再由远平面中心不变得:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
得:
在这里插入图片描述
然后再进行正交投影。

http://www.xdnf.cn/news/18725.html

相关文章:

  • 深入剖析结构体内存对齐
  • 边缘计算服务器EMI滤波器 故障分析与解决思路
  • 【LeetCode 热题 100】300. 最长递增子序列——(解法一)记忆化搜索
  • C++ 20: Concepts 与Requires
  • 链表-23.合并K个升序链表-力扣(LeetCode)
  • Qt从qmake迁移到cmake的记录
  • Spring Boot 整合网易163邮箱发送邮件实现找回密码功能
  • PHP - 线程安全 - 疑问与答案
  • PyQt6 进阶篇:构建现代化、功能强大的桌面应用
  • uniApp对接实人认证
  • Clustering Enabled Wireless Channel Modeling Using Big Data Algorithms
  • 【前端debug调试】
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘arviz’问题
  • 网站速度慢?安全防护弱?EdgeOne免费套餐一次性解决两大痛点
  • chapter05_从spring.xml读取Bean
  • 完整实验命令解析:从集群搭建到负载均衡配置
  • Java:类及方法常见规约
  • Unity中删除不及时的问题
  • 牛客面经2 京东社招-002
  • PyTorch框架之图像识别模型与训练策略
  • 25.深入对象
  • 寻找AI——高保真还原设计图生成App页面
  • 华为/思科/H3C/锐捷操作系统操作指南
  • 鸿蒙应用网络开发实战:HTTP、WebSocket、文件下载与网络检测全攻略
  • 微信小程序和uni-app面试问题总结
  • 网络模型深度解析:CNI、Pod通信与NetworkPolicy
  • Spring Boot 实时广播消息
  • Java集合(Collection、Map、转换)
  • git实战(7)git常用命令速查表
  • GitHub发布革命性工具:GitHub Spark,用自然语言打造全栈智能应用