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

斜投影矩阵的性质_锥体体积怎么推导参考网址: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’

在这里插入图片描述

在这里插入图片描述

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件测试-因果图与判定表「建议收藏」

    软件测试-因果图与判定表「建议收藏」因果图简介等价类划分法和边界值法都是着重考虑到了输入条件,但是没有考虑到输入条件的组合与输入条件的相互制约关系。这样有可能忽视了很多错误如果测试时考虑到了各种组合,测试所有组合将是一个天文数字,因此需要考虑采用一种适用与多种条件组合相应产生多种动作的形式来进行测试用例的设计,这就需要因果图(逻辑模型)因果图思想一些程序的功能可以用判定表的形式来表示,根据输入条件的组合情况来规定相应的操作…

    2022年8月14日
    6
  • WebStorm 7.0 注冊码

    WebStorm 7.0 注冊码

    2021年12月4日
    42
  • 建立内网Windows补丁服务器「建议收藏」

    建立内网Windows补丁服务器建立内网Windows补丁服务器实施方案一、完成内网WSUS服务器的架设。二、对客户端计算机进行设置。三、进行外网WSUS服务器的架设。建立内网Windows补丁服务器众所周知,Windows系统有着种种安全漏洞和不足,这些都要依靠微软发布的一个个补丁来弥补,但公司内网无法访问Internet,,不能及时地下载更新。补丁的分发是微软应尽的责任,所以他们开发了WindowsServerUpdateServices(简称WSUS)这一软件,可以实现通过一台服务器下载更新

    2022年4月16日
    50
  • source insight3.5激活码_sourceinsight激活成功教程版安装教程

    source insight3.5激活码_sourceinsight激活成功教程版安装教程注册码是SI3US-361500-17409

    2022年10月3日
    1
  • PLSQL Developer简单使用教程[通俗易懂]

    PLSQL Developer简单使用教程[通俗易懂]PLSQLDeveloper是Oracle数据库开发工具,很牛也很好用,PLSQLDeveloper功能很强大,可以做为集成调试器,有SQL窗口,命令窗口,对象浏览器和性能优化等功能,下面简单的介绍一下如何使用PLSQLDeveloper工具,新手教程。  首先确保有oracle数据库或者有oracle服务器,然后才能使用PLSQLDeveloper连接数据库。启动P

    2022年6月7日
    409
  • AD域资料介绍

    AD域资料介绍一、什么是AD?活动目录(ActiveDirectory)是面向WindowsStandardServer、WindowsEnterpriseServer以及WindowsDatacenterServer的目录服务。(ActiveDirectory不能运行在WindowsWebServer上,但是可以通过它对运行WindowsWebServer的计…

    2022年5月15日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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