Unity基础-矩阵-坐标转换结果的个人理解+数学公式说明

想做一些渲染效果做到头大,根本很多空白,完全无法实现,只能先暂停一下,重新学习矩阵

目录

Unity基础-数学矩阵

1.我们利用最简单的“转换矩阵”,

2.然后,视图坐标又是如何

3.最后就是剪裁坐标

3.1 - 其实是分为正交投影和透视投影

4.NDC坐标,

参考:


Unity基础-数学矩阵

“矩阵转换”的数学哦公式居然是最难的?最难理解的?我们直接跳过。。。

首先我们知道 矩阵必须是 x 相乘,(没理由是 + 加法吧,所以只能 x 相乘)一个坐标(Vector3).xyz , 在加上第4个分量.w,则xyzw组成了一维矩阵

矩阵相乘之后得出的结果是什么呢,相乘之后就是 ________ 一个结果

\begin{bmatrix} 1 & 0 & 0 & Tx\\ 0 & 1 & 0 & Ty \\ 0 & 0 & 1 & Tz \\ w & 0 & 0 & Tw\end{bmatrix} \quad * \begin{bmatrix} 3 \\ 1 \\ 0 \\ w \end{bmatrix} \quad

 OpenGl 的矩阵图示 + 应用,可参考:OpenGL之矩阵变换Matrix_opengl matrix 畸变-CSDN博客

1.我们利用最简单的“转换矩阵”,

做到了“本地坐标”到“世界坐标‘的矢量转换

2.然后,视图坐标又是如何

利用视图坐标就是以摄像机为中心原点的坐标这一原理,(视图就是摄像机的视图),所以只要物体 Model 只要先做一个朝向摄像机的 LookAt 转换,然后一个转置反转朝向,就得到了摄像机的视图坐标

3.最后就是剪裁坐标

实际上没有剪裁坐标,我们也不知道剪裁是什么意思,就是投影坐标!!

实际上没有剪裁坐标,我们也不知道剪裁是什么意思,就是投影坐标!!

实际上没有剪裁坐标,我们也不知道剪裁是什么意思,就是投影坐标!!

Projection!

Projection!

Projection!

英文比中文好理解,什么鬼翻译

英文比中文好理解,什么鬼翻译

英文比中文好理解,什么鬼翻译

3.1 - 其实是分为正交投影和透视投影

他们两有什么区别,如何理解,一直不知道怎么应怡红,这就不得不提到我曾经说到的一句名言

正交投影和透视投影非常好理解,其实就是:非透视投影和透视投影,就这么简单

大部分情况下你需要解决的问题都是“透视投影”,而且调整”透视投影“的 Field of view可以无限接近正交投影

现在不是考试,所以”实际上“你几乎不会用到”正交投影“

而这个文章说的,几个坐标应用,例如”视图坐标“判断云朵距离摄像机的厚薄,就很”实际“应用,unity 矩阵运算接口 unity mvp矩阵_mob6454cc70eddf的技术博客_51CTO博客

玩家的感受直观理解就是

”统一机器标准“,”除法透视法“(这是什么神仙理解,前面已经扯到了”透视投影“这里又说透视法,简直让人混乱,中文就是这么混乱)

4.NDC坐标

我觉得大部分入门者即使多次接触后,都会认为这是老任的一个掌机

其实NDC的英文全称,是 Normal Device Corrident,

-NDC,我们知道肯定是坐标,所以剩下ND

-Normal还需要特别说么,所以只剩下D

-最终NDC,就一个D有用, D == Device

传统的,大学里的旧派的教学会把,一个转换分为十万八千个转换,很多都是为了数学而数学,而实际Unity应用中,简化为了MVP这个转换, 提NDC是GPU - api 自动计算的,也几乎被Unity隐藏掉了 == 而 frament Shader(片元着色器) 是在NDC 再之后"屏幕坐标"(Screen Sapce 坐标)处理的

(后面的数学公式,之后有时间再补充吧))

Unity的转换:GL.GetGPUProjectionMatrix 是什么意思

问题的关键来了,问题是:灯光的坐标有什么用,而又如何求出,为什么就用PUProjectionMatrix  就能刚好解决了?

//GL.GetGPUProjectionMatrix
//Shadow Caster实现 -- 世界坐标转灯光坐标的 - 矩阵(光源投影矩阵)
var lightSpaceMatrix = GL.GetGPUProjectionMatrix(collectShadowMapCam.projectionMatrix, false);
lightSpaceMatrix = lightSpaceMatrix * collectShadowMapCam.worldToCameraMatrix;
// 光源投影矩阵
Shader.SetGlobalMatrix(_CustomShadowMapLightSpaceMatrix_hash, lightSpaceMatrix);

GetGPUProjectionMatrix_gl.getgpuprojectionmatrix-CSDN博客

【Unity3D 灵巧小知识点】☀️ | Unity 四元数、欧拉角 与 方向向量 之间转换_呆呆敲代码的小Y的技术博客_51CTO博客

参考:

Unity】贝塞尔曲线关于点、长度、切线计算在 Unity中的C#实现-阿里云开发者社区Latex输入矩阵的几种方式_latex矩阵怎么打-CSDN博客

转载】Unity中矩阵的平移、旋转、缩放 - JeasonBoy - 博客园

个书《Unity实战》手稿——第一章MVP矩阵_unity mvp矩阵-CSDN博客

Unity编写Shader内置各种矩阵和方法介绍_unity shader matrix-CSDN博客

NDC空间(归一化的设备坐标空间)整理记录-CSDN博客

unity 矩阵运算接口 unity mvp矩阵_mob6454cc70eddf的技术博客_51CTO博客

Clip Space和NDC - BimAnt

从模型坐标到屏幕坐标 - 新房客 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值