Games101 透视投影矩阵推导

news2024/11/18 15:29:34

目录

齐次坐标

透视投影

透视投影的四棱锥体挤压为正交投影的长方体 

变换规定

转换过程

观察1

 观察2 

关于任意一点挤压后向哪里移动的问题,简单推导了一下 


齐次坐标

如下,(x, y, z, 1) 表示空间中的xyz点,让它每个分量乘以k,k!=0,得到的齐次坐标也是表示空间中的这个点,同样,乘以z,得到的也是xyz这个点

透视投影

从一个点往外延伸出来一个四棱锥,这个点就是相机,定义 远平面f 和 近平面n,透视投影视椎体的区别就在于它的远平面要比近平面更大,那么如何计算这个不规则的视体矩阵呢?

  1. 将透视相机的Frustum挤压为正交相机的Cuboid
  2. 再用正交投影矩阵相乘与上方变换矩阵相乘,即可得到最终的透视投影矩阵

 

透视投影的四棱锥体挤压为正交投影的长方体 

变换规定

  1. 近平面上的点,挤压后也不会变化
  2. 远平面上的点的z值是f,挤压后的z值仍然是f,它的z值不会发生变化,只是整体在向里面收缩
  3. 箭头指向的远平面中心点,挤压后仍然是中心点(0,0,f)

         

转换过程

 如下,从侧面看向Frustum,蓝色箭头指向的是相机摆放的位置,上方向是Y,朝向-Z方向看,往右边看到的区域是近,远平面的一半

已知n,z,远平面上的xyz点,要把y挤压为 y',根据相似三角形可得 y'/y = n/z

满足如下规律 

 

当然,对于x,同样满足相似三角形规律

 

可得出结论,给定任何一点xyz,它被挤压后的点坐标一定是 (nx/z, ny/z, unkown, 1)T, 挤压的变换的矩阵左乘xyz点即可得到这个点

根据齐次坐标性质,另如下中间的齐次坐标点同乘z,得到的坐标依然不变,那么经过挤压变换后的点,依然可以用右边齐次坐标表示

现在,已知挤压变换后的 x y w 三个分量, 已经可以写出变换矩阵的 1 2 4 行的值

那么,第三行的行向量又是多少呢? 

 

观察

  • 任何一个点在近的平面上经过挤压后不会发生任何变化,也就是,对于近平面上的点(x, y, n, 1) 经过矩阵变换后得到的点仍然是 (x, y, n, 1) (近平面的z值为n)
  • 任何一个点在远的平面上经过挤压后它的xy值会朝里挤,但z值不会发生变化

观察1

挤压后的近平面上的点依然是(x, y, n, 1),另每个分量乘以 n,得到(nx,ny,n^2, n),依然表示这个点,那么我们就探讨什么样的挤压矩阵左乘(x, y, n, 1) 会 得到 (nx,ny,n^2, n)

上面已经推导出挤压变换矩阵的第 1 2 4 行向量,思考: 第三行的向量 *(x, y, n, 1)= n^2

由于点乘的结果是n^2,则必定跟xy没关系,讨论 A和B的取值即可

这里A和B的值并不能确定,因为 A=n, B=0 成立,  A=0, B=n^2 也成立

 观察2 

远平面的中心点经过挤压后它的坐标仍不会变化,依然是(0,0,f)由于w分量需要存储z值,另分量同乘以f,得到下图最右侧齐次坐标,从上 近平面,我们依然讨论挤压矩阵的第三行向量, 向量 * (0, 0, f, 1) = f^2

综观察1,观察2,可以得出如下两个等式

 

n, y已知,两个式子,两个未知数, 很容易得出 A,B的值

至此可解出 Mpersp -> ortho 透视投影的Frustum挤压为正交相机的Cuboid 的变换矩阵

接下来,将 挤压变换矩阵 乘以 正交投影的投影矩阵 即可求出最终的透视投影矩阵

正交投影矩阵推导:Games101 正交投影矩阵推导-CSDN博客

 

关于任意一点挤压后向哪里移动的问题,简单推导了一下 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1863769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 基础概念

MySQL逻辑架构 MySQL 服务器逻辑架构图 最上层的服务并不是MySQL所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构,比如连接管理、授权认证、安全等等。 大多数MySQL的核心服务都在第二层,包括查询解析、分析、优化、…

空间的维度

空间的维度----中科院科学智慧火花 当今世界科学前沿,最具有挑战性和最激动人心的理论,莫过于弦理论,他不仅仅融合了相对论和量子理论,甚至被认为是终极理论。弦理论最核心的内容就是多维空间。由于时间和空间概念必然要写进物理…

Echarts 图表添加点击事件跳转页面,但只有图表部分点击才会跳转页面,坐标轴,区域缩放等点击不跳转。

默认的点击事件是这样的: myChart.on(click, function (param) {console.log(param) }) 这个事件需要点击具体图形才会触发,例如我上面的图,想选择a柱子,就需要明确点击到柱体才行,明显不符合正常的预期,正…

FullCalendar日历组件集成实战(16)

背景 有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件&#xff0…

【Linux】Wmware Esxi磁盘扩容

目录 一、概述 1.1 磁盘分区概念 1.2 LVM概念 二、扩容步骤 二、报错 一、概述 1.1 磁盘分区概念 在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux把各种 IDE 设备分配了一个由 hd 前缀组成的文…

使用VBA隐藏图表中的系列

Excel中很多图表相关的操作,并不能通过录制宏得到代码,这个场景中,如下希望开发代码实现自动化,就会无从下手,其实只要找到相关的属性和方法,代码可能并不复杂。 Excel的线图如下所示,其中有三…

每日一学(面试考题)

1、ConCurrentHashMap为什么不允许key为null? 底层 putVal方法 中 如果key || value为空 抛出空指针异常 其实是为了避免在多线程并发场景下的歧义问题 在获取key 返回结果为null 无法判断是 put(k,v)的时候 value本身是n…

Python+Pytest+Allure+Yaml接口自动化测试框架详解

PythonPytestAllureYaml接口自动化测试框架详解 编撰人:CesareCheung 更新时间:2024.06.20 一、技术栈 PythonPytestAllureYaml 版本要求:Python3.7.0,Pytest7.4.4,Allure2.18.1,PyYaml6.0 二、环境配置 1、安装python3.7,并配置…

探索ONLYOFFICE桌面编辑器8.1:更强大的办公软件(新功能全新详解)

引入 时间到达2024年,办公软件已经成为不可或缺的的一部分。想到办公软件不知道大家首先想到那些产品 office 亦或是 WPS,但一个前者需要购买才能使用完整服务,一个漫天的弹广告不充会员什么都用不了。那难道世面上就没有一块正在好用无广告的…

一天跌20%,近500只下跌,低价可转债为何不香了?

6月以来,Wind可转债低价指数累计下跌7.3%,大幅跑输中价、高价转债。分析认为,市场调整的底层逻辑在于投资者对风险的重新评估和流动性的紧缩,宏观经济的波动和政策环境的不确定性、市场结构性的变化均对低价可转债市场产生了冲击。…

【 IM 服务】IM 翻译服务介绍

融云控制台 IM 翻译功能入口:IM 翻译 融云即时通讯业务提供 IM 翻译 插件,可为 IMLib 与 IMKit SDK 快速接入外部翻译服务,由融云服务端负责对接外部翻译服务供应商的鉴权、API 调用、账号管理、计费等流程。 提示: 1、该插件仅支…

COMSOL - 一个点光源是否总能照亮整个房间?

20 世纪 50 年代,数学家恩斯特施特劳斯(Ernst Straus)提出了一个有趣的问题:在一个侧壁由理想反射镜构成的任意形状的空房间里,一个点光源是否总能照亮整个房间?诺贝尔奖获得者罗杰彭罗斯(Roger…

背包模型——AcWing 423. 采药

背包模型 定义 背包模型是一种常见的算法问题模型,它主要涉及将一些物品放入一个容量有限的背包中,以达到某种最优目标,如最大化价值或最小化重量等。 运用情况 常用于资源分配、项目选择、货物装载等实际问题中。例如,在选择…

一次性掌握openlayers和cesium两个地图开发框架

又到一年毕业季,选择就业的同学,如果还没拿到offer,就要开始准备秋招了。 如果想找webgis相关的岗位,可以通过招聘信息,了解到企业的具体要求。其中,openlayers和cesium有多重要就不用我多说了。 掌握这两…

AI对职场的整顿

普通人离AI还有几年缓冲区,但早点做准备总是好的 AI淘汰的始终是跟不上时代的人。 现在很多公司都有AI培训,不仅GPT,还有Midjourney、Stable DIffusion等一系列AI工具。 像我们公司虽然今年招的少,但也会对新招的应届生统一进行…

VSCode运行前端项目-页面404

背景: 通过VSCode运行前端本地项目,运行成功后打开本地链接:http://1x.xxx.x.xxx:9803/ ,发现打开的页面重定向到404:http//1xx.xxx.x.xxx:9803/404; 并且控制台出现:Failed to load resource: …

邮件自动推送技术如何实现?有哪些优劣势?

邮件自动推送怎么设置?如何评估邮件自动推送的效果? 邮件自动推送是一种高效的电子邮件营销和通信技术,它能够根据预设条件自动发送邮件给特定的收件人。AokSend将深入探讨邮件自动推送技术的实现原理和注意事项。 邮件自动推送&#xff1a…

Java露营基地预约小程序预约下单系统源码

轻松开启户外探险之旅 🌟 露营热潮来袭,你准备好了吗? 随着人们对户外生活的热爱日益增加,露营已成为许多人周末和假期的首选活动。但你是否曾因找不到合适的露营基地而烦恼?或是因为繁琐的预约流程而错失心仪的营地…

手持小风扇品牌有哪些?分享口碑最好的五款手持小风扇

手持小风扇在炎热的夏季成为了许多人解暑的好帮手。它们不仅轻便便携,随时随地都能为我们带来清凉和舒适。然而,市场上手持小风扇的品牌繁多,让人眼花缭乱。为了帮助大家做出更明智的选择,接下来我们将分享口碑最好的五款手持小风…

Inventory Plus - Customizable Inventory System

InventoryPlus是一个直观而强大的工具,可以简化自定义库存、箱子和拾取的创建。该资产主要针对鼠标和键盘设计,但也支持游戏手柄。InventoryPlus可以处理您能想到的所有库存操作(如使用、装备、排序、丢弃等) 它通过调整TriggerAreas、PickUp和Chests的碰撞器类型,适用于3…