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

news2024/10/6 4:21:39

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

目录

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

硬件设计-利用环路设计优化PLL的输出性能

目录 前言 问题描述 问题分析步骤 杂散源头排查 245.76M 参考相噪: 30.72M VCXO的相噪性能测试如下: 解决方案 前言 LMK04832是TI 新发布的低抖动双环去抖模拟时钟, 其最高输出频率可以到达3250MHz, 输出抖动极低,3200MHz…

MySQL 中的数据库锁和表锁

在 MySQL 数据库中,为了保证数据的一致性和完整性,会使用各种类型的锁。其中,数据库锁和表锁是比较常见的两种锁类型。 一、数据库锁和表锁的概念 (一)数据库锁 数据库锁是对整个数据库进行锁定,限制对数…

尝试从 http://pypi.doubanio.com/simple 这个索引源安装 webdriver 时出现了问题

问题如下: WARNING: The repository located at pypi.doubanio.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS we recommend you use HTTPS instead, otherwise you may silence this warning and allow …

ElasticSearch备考 -- 异步检索

一、题目 通过异步方式查询earthquakes索引下Magnitude大于5的数据 二、思考 正常的查询大家可能会用的多一点,这种异步查询为了可以数据量量比较大的查询在后台执行,不用同步等待结果,待执行完成在获取结果。 三、解题 Step 1、准备基础数…

【深度强化学习基础】(一)基本概念

【深度强化学习基础】(一)基本概念 一、概率论基础知识二、强化学习领域术语三、强化学习中两个随机性的来源:四、rewards以及returns五、Value Functions1.Action-Value Function Q π ( s , a ) Q_\pi(s,a) Qπ​(s,a)1.State-Value Funct…

Yolov8改进WIoU,SIoU,EIoU,α-IoU

1,IOU原理部分 IoU(Intersection over Union)是一种在计算机视觉领域常用的性能评估指标,尤其在目标检测和图像分割任务中。它通过计算预测边界框(预测框)与真实边界框(真实框)之间的交集面积与并集面积之比来衡量预测的准确性。IoU的值越接近1,表示预测框与真实框的重…

Error while loading conda entry point: conda-libmamba-solver

问题 解决方法 conda install --solverclassic conda-forge::conda-libmamba-solver conda-forge::libmamba conda-forge::libmambapy conda-forge::libarchive

C0015.Clion中开发C++时,连接Mysql数据库方法

安装mysql数据库 CMakeLists.txt中配置mysql数据库 # 先指定mysql数据库的安装位置 include_directories("C:/Program Files/MySQL/MySQL Server 8.0/include") link_directories("C:/Program Files/MySQL/MySQL Server 8.0/lib") link_libraries(libmysq…

Python | 使用Seaborn绘制KDE核密度估计曲线

核密度估计(KDE)图,一种可视化技术,提供连续变量概率密度的详细视图。在本文中,我们将使用Iris Dataset和KDE Plot来可视化数据集。 什么是KDE图? KDE图,全称核密度估计图(Kernel Density Est…

智慧农业案例 (二)- 智能化灌溉系统

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案,帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序 文章目录 一、基本原理一、基本原理二、HHO-LSSVM的流程三、优缺点四、应用场景 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 HHO-LSSVM回归预测结…

校园资源共享新方案:基于SpringBoot的实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多学生、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适…

Vue之父尤雨溪成立VoidZero公告,已获得 460 万美元种子轮融资

VoidZero Inc. 创立公告 摘要: 我创立了 VoidZero Inc.,这是一家致力于构建开源、高性能、统一的开发工具链,服务于 JavaScript 生态系统的公司。我们已获得 Accel 领投的 460 万美元种子轮融资。 十五年前,当我开始使用 JavaSc…

哈尔滨自闭症学校寄宿条件与优势解析

自闭症儿童的希望之光:广州星贝育园寄宿制学校深度解析 在当今社会,自闭症儿童作为一群需要特别关注和照顾的群体,其教育与康复问题日益受到社会各界的重视。自闭症儿童不仅需要专业的康复训练,还需要一个稳定、温馨且充满爱的环…

UE5 小地图的基础方法

图片小地图,场景空间映射UI坐标 场景截图,创建UI,添加截图,映射坐标,以第三人称模版为例

银行数字化转型导师坚鹏:2025年银行开门红蓄客方法及案例

2025年银行开门红蓄客方法及案例 课程背景: 面对即将打响的开门红战役,很多银行存在以下问题: 不知道银行开门红蓄客方法? 不知道银行开门红蓄客难题? 不知道银行开门红蓄客案例? 课程特色&#x…

《黑神话:悟空》2D像素版 支持PC+安卓版附下载链接

黑神话:悟空被B站火圣哥哥做成了一款2D像素风格的游戏!是不是光听到这个想法就觉得很酷?接下来,我带你们一起走进他的创作世界,看看他是如何一步步实现这个脑洞大开的创意的。相信你们一定会被他的巧思与坚持所打动。 …

职场中的10个“人情世故”,随处可见

职场上,“现实”是主基调。如果不通#人情世故#,可能举步维坚。很多时候,人情世故并不是什么高深的学问,就是在点点滴滴间,只要稍加注意,就能学通。下面这10条,是职场很常见的人情世故。 1、登门…

计算机的错误计算(一百一十三)

摘要 用错数分析计算机的错误计算(一百一十二)中错误计算的原因。 计算机的错误计算(一百一十二)中的迭代为 对于 , Excel 与 LibreOffice 的输出均是错误结果,均没有1位正确有效数字。另外,其文献[1]中也…

Android高级控件

文章目录 1.下拉列表Spinner1.数组适配器ArrayAdapter2.简单适配器SimpleAdapter3.基本适配器BaseAdapter 2.列表视图ListView3.网格视图GridView4.翻页视图ViewPager5.翻页标签栏pagerTabStrip6.ViewPager实现引导页7.碎片Fragment1.Fragment静态注册2.Fragment生命周期3.Frag…