斜投影矩阵的性质_锥体体积怎么推导

斜投影矩阵的性质_锥体体积怎么推导参考网址:https://gameinstitute.qq.com/community/detail/106203翻译http://www.terathon.com/lengyel/Lengyel-Oblique.pdf原文http://www.lsngo.net/2018/01/07/graphics_mirrorcamera_2/参考书籍:Mathematics.for.3D…

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

Jetbrains全系列IDE稳定放心使用

参考网址:
https://gameinstitute.qq.com/community/detail/106203 翻译
http://www.terathon.com/lengyel/Lengyel-Oblique.pdf 原文
http://www.lsngo.net/2018/01/07/graphics_mirrorcamera_2/
参考书籍:
Mathematics.for.3D.Game.Programming.and.Computer.Graphics,.Lengyel,.3ed,.Course,.2012

在这里插入图片描述
上图在:Mathematics.for.3D.Game.Programming.and.Computer.Graphics
P119中。
在这里插入图片描述
上图是裁剪空间中左右、远近裁剪平面的法线,上下的屏幕在表格中。

讨论下平面变换方程:
我们知道法线变换矩阵是不能用M矩阵直接变化的,而是通过M的逆矩阵的转置矩阵进行变换。
证明如下:
https://blog.csdn.net/wodownload2/article/details/88823649

也就是说,如果使用M矩阵代表的时候透视矩阵。
而同样我们知道了,NDC的空间中的六个面的方程了,那么则存在如下的关系:
M矩阵的逆矩阵的转置矩阵,变换透视空间的平面,就等于了NDC空间的平面方程了。
等式如下:
M逆再转置*透视空间平面=NDC空间的平面
所以透视空间的平面等于如下:
透视空间平面=(M逆再转置再逆)NDC空间的平面
也就是:
透视空间平面=M转置
NDC空间的平面

所以:
透视空间的近平面=M转置*(0,0,1,1)=M4+M3
透视空间的远平面=M转置*(0,0,-1,1)=M4-M3
其他类似推导。

其他参考网址:
https://blog.csdn.net/yinhun2012/article/details/84236202 //矩阵逆与矩阵转置的证明
https://blog.csdn.net/softwarekid/article/details/45055253 //为什么不是在透视除法后做裁剪
https://gameinstitute.qq.com/community/detail/113246 //冯乐乐裁剪矩阵
http://www.devacg.com/?post=522 //关于裁剪空间写的比较好的文章

unity里面的摄像机透视投影矩阵输出:
在这里插入图片描述

由之前的博客可以知道unity使用的是opengl的投射投影矩阵,将其z映射到-1到1,所以投影矩阵为:
在这里插入图片描述

下面,介绍如何求的l,r,t,b。因为n和f已经知道了,n=1,f=4.
在这里插入图片描述

在这里插入图片描述
我现在想求左边的视锥体的平面方程,为了简单起见,我们把摄像机移动到原点位置。
求平面的时候,至少需要三个点的位置信息。不妨求ABC三个点的坐标。

在这里插入图片描述

添加几条辅助线如下所示:
在这里插入图片描述
可以知道C点坐标为(0,4tan(22.5),4)
AC的长度为4
tan(22.5)
而屏幕的宽高比为4:3
在这里插入图片描述
所以EA/AC=4/3
所以EA=4tan(22.5)4/3=16tan(22.5)/3
所以E点的坐标为(-16
tan(22.5)/3,0,4)
所以D点的坐标为(-16tan(22.5)/3,4tan(22.5),4)
所以现在可以求出平面的方程了:
向量BD=(-16tan(22.5)/3,4tan(22.5),4)
向量BE=(-16*tan(22.5)/3,0,4)

在这里插入图片描述

而我们知道裁剪空间的左平面为(1,0,0,1)
投影矩阵P为:
在这里插入图片描述
对于摄像机空间的点Q通过乘以投影矩阵P,就得到了裁剪空间的点Q’。
而摄像机空间的平面C,需要通过乘以P的逆转矩阵才能得到裁剪空间的平面。
所以我们有如下的公式:
P逆转*C=C’

在这里插入图片描述

在这里插入图片描述

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

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

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

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

(0)


相关推荐

  • spring cloud熔断器原理_a股熔断机制是什么时候

    spring cloud熔断器原理_a股熔断机制是什么时候1.熔断机制介绍在介绍熔断机制之前,我们需要了解微服务的雪崩效应。在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可以独立演进。但是,一个应用可能会有多个微服务组成,微服务之间的数据交互通过远程过程调用完成。这就带来一个问题,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时…

    2022年10月31日
  • openEuler操作系统安装在vmware上[通俗易懂]

    openEuler操作系统安装在vmware上[通俗易懂]openEuler安装说明:本次安装是基于宿主机AMD的x86_64架构的cpu,win10操作系统下安装客户机(虚拟机)openEuler操作系统,准备:基本环境:VMWareWorkstation14pro,openEuler操作系统镜像。首先,下载openEuler操作系统镜像https://repo.openeuler.org/openEuler…

  • datagrip的激活码【中文破解版】

    (datagrip的激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • 2020手机的像素密度ppi排行_5g手机排行榜最新2020年11月5g手机性价比排行榜

    2020手机的像素密度ppi排行_5g手机排行榜最新2020年11月5g手机性价比排行榜注:本文转载自网络,不代表本平台立场,仅供读者参考,著作权属归原创者所有。我们分享此文出于传播更多资讯之目的。如有侵权,请在后台留言联系我们进行删除,谢谢!相信对很多朋友们来说,一款好用的5G智能手机是非常值得入手的,小编为大家带来最新的20年11月值得购买的性价比5G手机榜单,相信会给您更好的手机选购指导,为你带来更好的智能生活体验,有喜欢的朋友们一起来看看吧。1、一加8Pro性能一…

  • 免费申请国外免费域名超详细教程

    免费申请国外免费域名超详细教程1.首先申请免费域名网站:https://my.freenom.com/domains.php2.填入域名,这里我们以xcflag为列(尽量选择复杂一点的或者五个字母以上的域名,因为简单的有些域名是需要收费的),点击检查可用性。3.可以看到很多免费的域名(用的谷歌翻译插件,翻译有时候不是很准确,free翻译过来应该是免费而不是自由,之后会写一些关于谷歌插件的笔记,详细讲解)4.我们选择xcflag.tk点击立即获取,稍等一会点击购物车查看绿色按钮5.默认三个月试用,这里下拉框我们选择十二个月

  • centos7执行ip addr命令ens33没有ip地址「建议收藏」

    centos7执行ip addr命令ens33没有ip地址「建议收藏」之前使用正常的虚拟机,突然的就连接不上了。执行ipaddr命令ens33没有ip地址查了几篇相关文章解决方法,主要有四种:mac地址问题 ONBOOT问题 uuid问题 NetworkManager问题目录mac地址问题ONBOOT问题uuid问题NetworkManager问题mac地址问题(我用的VMwareWorkstationP…

发表回复

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

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