投影矩阵的推导_分块矩阵的行列式公式

投影矩阵的推导_分块矩阵的行列式公式看了好几篇关于投影矩阵的文章,在z坐标的推导上,没有提到为什么z’和1/z成线性关系,而是通过结论中的投影矩阵,即已知z’=(zA+B)/w,并且x和x’,y和y’关系式中分母都有-z,所以w为-z,然后(-n,-f)映射到(-1,1),求出A、B,得到z’和z的关系。这是用结论去反推过程,过程再得到结论,这样的逻辑我觉得不对,我认为,应该是先得到x,y,z各自的关系式,才去构造出投影矩…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

看了好几篇关于投影矩阵的文章,在z坐标的推导上,没有提到为什么z’和1/z成线性关系,而是通过结论中的投影矩阵,即已知z’= (zA + B)/w,并且x和x’,y和y’关系式中分母都有-z,所以w为-z,然后(-n,-f)映射到(-1,1),求出A、B,得到z’和z的关系。

这是用结论去反推过程,过程再得到结论,这样的逻辑我觉得不对,我认为,应该是先得到x,y,z各自的关系式,才去构造出投影矩阵。

 

推导x,y坐标

向量投影到近平面,然后映射到NDC,就可以得到,在此不赘述。

(下文Ze同Z,都是投影前向量坐标(观察空间坐标))

Image_Projection_1.1

式1.1

Image_Projection_1.2

式1.2

 

重点讨论如何推导z坐标

z坐标的转换关系,并不是投影得到的,而是根据我们的需要:

1、表示物体原有的前后关系。

2、映射到标准设备坐标,从(-n,-f)映射到(-1,1)(使用右手坐标系)。

3、近处精度更大;因为精度有限,当场景中有许多物体时,按照重要程度来说,首先保证近处物体前后关系是正确;所以要让近处物体的z坐标有更大的表示范围。

 

关键在于3,在这篇文章(https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/01%20Depth%20testing/#_3)中的深度精度部分有提到,如何让近处有更大表示范围,文章中是映射到(0,1),映射到(-1, 1)也是一样的道理。

这里我认为,不只是z’ = A*1/z + B可以达到我们的需求,z’ = A*1/z² + B也可以,还可以构造很多关系式都可以达到我们的需求,但是我们的最终目标是构造一个投影矩阵,投影矩阵*向量/齐次坐标=映射后的向量。

 

整理式1.1,式1.2

Image_Projection_2.1

式2.1

Image_Projection_2.2

式2.2

 

整理后,式2.1、式2.2分母都有Ze,因此选择z'(NDC) = A*1/z(观察空间) + B,即可以和x,y的关系式对应起来,又满足我们的需求

(2019.08.15补充:使用1/z还有一个重要的原因在于,光栅化时,需要进行透视校正插值,因为z'(NDC)与1/z(观察空间)是线性关系(证明:https://www.cnblogs.com/cys12345/archive/2009/03/16/1413821.html或《3D游戏与计算机图形学中的数学方法》 第3版,第5.4章节),所以z'(NDC) = A*1/z(观察空间) + B,另外,如果z'(NDC)直接保存为z(观察空间) ,等到进行透视校正插值,再进行转换,这样做是不好的,因为透视校正插值是逐片元操作,就要重复非常多次的运算,直接保存为A*1/z(观察空间) + B,是逐顶点操作,运算次数就少很多)

z'(NDC) = A*1/z + B,(-n, -f)映射到(-1,1)

Image_Projection_2.3

式2.3

 

式2.1,式2.2,式2.3就可以整理出投影矩阵(负号提取到分母)

Image_Projection_3

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185886.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • keil_lic.exe注册机使用

    keil_lic.exe注册机使用第一步:以管理员身份运行keil5第二步:打开File中的LicenseManagement第三步:复制CID第四步:选择对应的Target为ARM,粘贴CID,复制生成的注册码第五步:将注册码粘贴到这,就ok了百度云网盘:链接:https://pan.baidu.com/s/1OqQmbpIQvqtHv2TFAp7a_Q提取码:l3v6希望能帮到各位朋友…

  • 华为交换机链路聚合trunk_华为删除链路聚合命令

    华为交换机链路聚合trunk_华为删除链路聚合命令文章目录一、为什么要用到聚合二、链路聚合三、拓扑四、基本配置五、部署LinkAggregation-链路聚合一、为什么要用到聚合1、二层环境为什么要用到聚合(1)接入层的流量剧增;(2)现行存储数据剧增;(3)监控网络运行大数据流量;

    2022年10月25日
  • 安防摄像头已分别接入乐橙云、萤石云,如何实现私有云平台的统一管理与向上级联?

    安防摄像头已分别接入乐橙云、萤石云,如何实现私有云平台的统一管理与向上级联?一、背景分析科技创新对社会发展的重要性不言而喻。对于安防行业来说,人工智能和5G等新技术的应用,已经成为推动智能安防发展的一块关键踏板。从技术维度来看,人工智能、云计算、大数据、物联网等技术在安防视频监控领域产生了较多的交汇与融合。新技术打破了传统安防产业以硬件为主的局面,带来了软件定义的摄像机、云平台等概念。芯片技术不断进步,AI算力成本有所降低;深度学习算法及相关框架、开源软件的成熟使得AI算法普惠化;GB/T28181、ONVIF等行业标准的成熟,降低了视频图像数据互联互通的难度;H.265/

  • 5g 云游戏_5G切片认证

    5g 云游戏_5G切片认证随着5G网络的快速部署和商用,5G与垂直行业应用的结合也日益紧密。因此,具备5G特性的网络能力将打造持续升级的业务体验,不断提升客户服务质量。2020年,5G即将进入SA(独立组网)规模商用部署期。作为一项5GSA的专属技术,网络切片所提供的面向差异化应用的网络定制化和专属保障能力,将使5G网络最大程度地提升用户体验方面的价值潜力。在互联网应用领域,业界普遍认为5G技术的成熟和商用将带来云游戏、在线视频直播等互联网价值应用的爆发。5G端到端切片技术能够有效支撑OTT多业务应用场景的需求并提供定制化的体验保

  • python激活码(破解版激活)

    python激活码(破解版激活),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Model、ModelMap和ModelAndView的使用详解

    Model、ModelMap和ModelAndView的使用详解1.前言最近SSM框架开发web项目,用得比较火热。spring-MVC肯定用过,在请求处理方法可出现和返回的参数类型中,最重要就是Model和ModelAndView了,对于MVC框架,控制器Controller执行业务逻辑,用于产生模型数据Model,而视图View用于渲染模型数据。使用Model和ModelAndView这两个类在spring的视图解析时作用以及区别。这两者之间…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号