热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

OpenGL3.3透视投影二

正射投影我们只需要把物体移到坐标系中心然后再将整个坐标缩放在[-1,1]之间就行了最终正交矩阵透视投影计算机图形网课老师的办法我们可以把透视投影的计算分两步1.计算一个可以把

正射投影

在这里插入图片描述

我们只需要把物体移到坐标系中心 然后再将整个坐标缩放在[-1,1]之间就行了
在这里插入图片描述

在这里插入图片描述
最终正交矩阵
在这里插入图片描述


透视投影


计算机图形网课老师的办法

我们可以把透视投影的计算分两步
1.计算一个可以把透视投影转换成正射投影的矩阵a
2.将矩阵a和正射投影矩阵相乘得出最终的透视投影矩阵
有通俗的话来说 就是先将透视投影的远平面压成和近平面一样大 这样其内部的点的坐标都发生了改变 这样就可以按照正射投影来算了

首先我们知道 透视投影有几个特点
1.在近平面上的坐标不会发生任何改变
2.在远平面上的坐标z值不会发生改变
3.在中心点的坐标在近远平面上都不会发生改变

先求视景体内坐标经过压缩之后x和y值得变化
在这里插入图片描述
在这里插入图片描述

坐标转换就是通过相似三角形
n是近平面的深度值
在这里插入图片描述

上图就是任意眼坐标为(x,y,z,1)通过了透视投影矩阵 变成了(nx/z,ny/z,unk,1)的坐标 我们让该坐标×一个z也是同一个坐标(nx,ny,unk,z)
在这里插入图片描述
那我们通过(x,y,z,1)和(nx,ny,unk,z)之间的关系 除了矩阵p第三行 其他都能确定了
此时我们再利用上面说的 在近平面上的点坐标是不变的 (x,y,n,1)
因为所有视景体内坐标点×矩阵p都一定是(nx,ny,unk,z)
所以 (x,y,n,1)×矩阵p = (nx,ny,unk,z)
那么让 (x,y,n,1)×n 还是同一个点(nx,ny,n2,n) 所以将(x,y,n,1)带去矩阵p
矩阵p第三行×(x,y,n,1)一定是n2
由此可以知道第三行一定没用x和y 所以确定了第三行前两个数(0,0,?,?)
再通过远平面中心点也是不会改变坐标的这一性质(0,0,f,1)(f是远平面深度值)(0,0,f,1)×矩阵p一定也是( (nx,ny,unk,z))
将(0,0,f,1)×f = 0,0,f2,f) 再同上 带入矩阵
在这里插入图片描述


计算机图形网课最终得出将透视投影变成正射投影的矩阵结果

n 0 0 0
0 n 0 0
0 0 (n+f) (-nf)
0 0 1 0


网上正常的推导办法

首先我们先知道 Xe是眼空间的坐标 眼坐标(应该是以摄像机为坐标系的空间)
Xp是视锥体内点Xe投射到近平面上的坐标点
Xc是裁剪空间的坐标 Xc和Xp的区别是Xc是真正的在裁剪空间里的点的坐标
Xn是Xc映射到标准化设备坐标的点 也就是Xc/Wc = Xn

在这里插入图片描述


通过相似三角形获得Xp和Xe的关系

Yp一样
在这里插入图片描述
和上面图形学老师的方法一样算出最后一行0,0,-1,0 并且此时Wc换成了Ze


通过简单计算获得Xp和Xn的关系

y和z一样
在这里插入图片描述
在这里插入图片描述


获取了Xe和Xn的关系 同时获取到Xc和Xe关系

将Xp和Yp代入上述方程式
在这里插入图片描述
他能确定那一部分是Xc是因为 Wc当时换成了-Ze
在这里插入图片描述


然后通过这个Xc和Xe的关系可以知道矩阵的前两行

在这里插入图片描述
他说由于我们知道z不依赖于x或y值(我也不知道为什么知道不依赖) 所以能写成下面这样
在这里插入图片描述
在这里插入图片描述
然后通过两个近平面和远平面Zn和Ze的关系 近平面Ze一定是-n 远平面一定是-f 而Zn因为是标准化的坐标 所以近远平面z值一定是1和-1 所以就是将
(-n,-1)和(-f,1)代入就行了 最终得出答案


透视投影矩阵

如果是对称的 则r = -l t = -b
在这里插入图片描述
最后一行可以是1也可也是-1 主要在于是左手坐标系还是右手坐标系


推荐阅读
  • 自编码器(Autoencoder,AE)基本意思就是一个隐藏层的神经网络,输入输出都是x,并且输入维度一定要比 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • “新建安卓工程时,src与res目录下没有自动生成的.java和.xml文件“的解决
    在自学编程的过程中,由于没有老司机带路,环境搭建是一个非常容易出小错误而且很难找错的过程。此次JAVA环境搭建好,并进行JAVA基础的学习之后,搭建安卓环境。我默认下了目前较高版本 ... [详细]
  • 深度强化学习Policy Gradient基本实现
    全文共2543个字,2张图,预计阅读时间15分钟。基于值的强化学习算法的基本思想是根据当前的状态,计算采取每个动作的价值,然 ... [详细]
  • 《时代》杂志特稿:Vitalik正在担忧加密行业的未来 |链捕手 ... [详细]
  • 开发笔记:Java多线程深度探索
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java多线程深度探索相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 大家好,我们是慢雾安全团队。 ... [详细]
  • Github上73个超棒且可提高生产力的 NPM 包,高赞!
    来自:掘金,作者:火狼1https:juejin.impost6854573212890562573前言JS是前端的核心,但 ... [详细]
  • One Stage目标检测
    在计算机视觉中,目标检测是一个难题。在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析。如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框 ... [详细]
  • 一站式全屋家具定制(一站式海外婚礼定制)
    而且业务系统数据存储量大,有的企业选择迁移升级数据库,有的企业根据企业的需求选择进行深度定制。公司上线OA系统以后,也不会出现业务与系统相冲突的情况。与此同时,他们不得不不断地测试 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 用友深耕烟草行业25年,提出数字化转型建议
    本文介绍了用友在烟草行业深耕25年的经验,提出了数字化转型的建议,包括总体要求、主要任务、发展阶段和六位一体推进举措。通过数字化转型,烟草行业将注入新动能,实现高质量发展。 ... [详细]
  • 显卡驱动对游戏的影响及其提升效果的研究
    本文研究了显卡驱动对游戏体验的提升效果,通过比较新旧驱动加持下的RTX 2080Ti显卡在游戏体验上的差异。测试平台选择了i9-9900K处理器和索泰RTX 2080Ti玩家力量至尊显卡,以保证数据的准确性。研究结果表明,显卡驱动的更新确实能够带来近乎50%的性能提升,对于提升游戏体验具有重要意义。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
author-avatar
土人甜层_233
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有