齐次坐标变换+Unity矩阵变换

矩阵变换

        变换(transform):指的是我们把一些数据,如点,方向向量甚至是颜色,通过某种方式(矩阵运算),进行转换的过程。

        变换类型

                线性变换:保留矢量加和标量乘的计算

                        f(x)+f(y)=f(x+y)

                        kf(x)=f(kx)

                        包含:旋转,缩放,镜像,投影

                        可以使用3x3矩阵,表示

                非线性变换

                        包含:平移

                        可以使用4x4矩阵,表示

                仿射变换:仿射变换就是合并线性变换与平移变换的变换类型,仿射变换可以

                使用一个4x4的矩阵表示,所以需要将矢量扩展到四维空间下,这就是齐次坐标

                空间,变换矩阵称为齐次矩阵

               齐次坐标:\begin{bmatrix} x\\ y\\ z\\ w \end{bmatrix}

                        点的列矩阵w分量:补1,因为点受到平移变化的影响

                        方向矢量列矩阵的w分量:补0,因为平移不会影响到方向向量的方向

               齐次矩阵构成

                         \begin{bmatrix} M_{3*3} &T_{3*1} \\ 0_{1*3}& 1 \end{bmatrix}

                        M_{3*3}:表示线性变换矩阵

                        T_{3*1}:表示平移变换矩阵

                平移矩阵

                        \begin{bmatrix} 1 & 0 & 0 &x \\ 0& 1& 0 & y\\ 0& 0& 1&z \\ 0& 0& 0 & 1 \end{bmatrix}        ( x,y,z分别代表x平移量,y平移量,z平移量)

                缩放矩阵(缩放是线性变换,所以可以用M_{33}表示这个变换的过程)

                        \begin{bmatrix} X_{s} & 0 &0 &0 \\ 0& Y_{s} & 0 &0 \\ 0& 0 & Z_{s} &0 \\ 0 & 0 & 0& 1 \end{bmatrix}

                旋转矩阵

                        绕X轴,旋转\theta角度

                                \begin{bmatrix} 1 & 0& 0 &0 \\ 0& cos\theta &-sin\theta &0 \\ 0 & sin\theta & cos\theta &0 \\ 0 & 0 & 0& 1 \end{bmatrix}

                        绕Y轴,旋转\theta角度

                                \begin{bmatrix} cos\theta & 0& sin\theta &0 \\ 0& 1 &0 &0 \\ -sin\theta & 0 & cos\theta &0 \\ 0 & 0 & 0& 1 \end{bmatrix}

                        绕Z轴,旋转\theta角度

                                \begin{bmatrix} cos\theta & -sin\theta& 0 &0 \\ sin\theta& cos\theta &0 &0 \\ 0 & 0 & 1 &0 \\ 0 & 0 & 0& 1 \end{bmatrix}

      复合变换

             一个点P(1,1,1),需要做绕z轴旋转30度,平移(5,4,2),

             缩放(3,2,1)复合变换,是存在顺序的,因为矩阵乘运算,不满足乘法交换律

                        \begin{bmatrix} 3 & 0 & 0&0 \\ 0& 2&0 & 0\\ 0& 0& 1 &0 \\ 0& 0 & 0 & 1 \end{bmatrix} x \begin{bmatrix} 1 & 0 &0 &5 \\ 0& 1&0 & 4\\ 0& 0& 1& 2\\ 0 &0 & 0 & 1 \end{bmatrix} x \begin{bmatrix} cos30 &-sin30 &0 &0 \\ sin30& cos30 & 0 &0 \\ 0& 0 &1 &0 \\ 0& 0 &0 & 1 \end{bmatrix} x \begin{bmatrix} 1\\ 1\\ 1\\ 1 \end{bmatrix} = \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}

            复合变换的顺序,决定了变换矩阵相乘的顺序,根据需求        

                        M_{s} x M_{m} x M_{r} x P

            因为矩阵满足结合律,所以可以得出变换矩阵为(M_{s} x M_{m} x M_{r}

            最后的结果是:(M_{s} x M_{m} x M_{r})x P

坐标空间

        模型空间:模型内部点的位置都存储在模型文件内,所以点都是相对于模型空间的

        世界空间:模型在游戏运行时,需要加载到场景中,所以点存储在世界空间中

        观察(摄像机)空间:物体是否被投射到屏幕中,是由相机控制的,相机相对于物体

                的位置,决定了显示效果。

        裁剪空间:需要判定点,是否存在于摄像机裁剪视锥体下,如果存在于视锥体内,则

                点可以进行显示。

        屏幕空间:最终显示的设备为显示器,所以需要将点投影到显示器上,算出屏幕坐标

                点,由显示器显示

Unity着色器中常见矩阵

        UNITY_MATRIX_MVP:将点从模型空间下,转换到裁剪空间下

        UNITY_MATRIX_M:将点从模型空间下,转换到世界空间下

        UNITY_MATRIX_V:将点从世界空间下,转换到观察空间下

        UNITY_MATRIX_P:将点从观察空间下,转换到裁剪空间下

        UNITY_MATRIX_MV:将点从模型空间下,转换到观察空间下

        UNITY_MATRIX_VP:将点从世界空间下,转换到裁剪空间下

        

        _Object2World:将点从模型到世界空间转换(互为逆矩阵)

        _World2Object:将点从世界空间到模型转换(互为逆矩阵)

                        

                        

           该系列专栏为网课课程笔记,仅用于学习参考。                  

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

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

相关文章

闲来无事,用HTML+CSS+JS打造一个84键机械键盘模拟器

今天闲来无聊,突发奇想要用前端技术模拟一个机械键盘。说干就干,花了点时间搞出来了这么一个有模有样的84键机械键盘模拟器。来看看效果吧! 升级版的模拟器 屏幕录制 2025-04-18 155308 是不是挺像那么回事的?哈哈! 它…

智慧城市:如同为城市装上智能大脑,开启智慧生活

智慧城市的概念随着信息技术的飞速发展而逐渐兴起,它通过集成物联网、大数据、人工智能和数字孪生等先进技术,为城市管理和居民生活带来了前所未有的智能化变革。本文将深入探讨这些核心技术及其在智慧城市的典型应用场景,展示智慧城市如何提…

科技快讯 | 智谱开源最新GLM模型系列;“AI 洗头店”现身广州;ChatGPT上线图库功能

智谱开源最新GLM模型系列,启用全球域名“Z.ai” 4月15日,智谱开源最新GLM模型系列,包括32B和9B尺寸,涵盖基座、推理、沉思三类模型,全部遵循MIT开源许可协议。推理模型GLM-Z1-32B-0414实测推理速度达200 tokens/秒&…

第32讲:卫星遥感与深度学习融合 —— 让地球“读懂”算法的语言

目录 🔍 一、讲讲“遥感+深度学习”到底是干啥的? ✅ 能解决什么问题? 🧠 二、基础原理串讲:深度学习如何“看懂”遥感图? 🛰 遥感图像数据类型: 🧠 CNN的基本思路: 🧪 三、实战案例:用CNN对遥感图像做地类分类 📦 所需R包: 🗂️ 步骤一:构建训…

【多线程5】面试常考锁知识点

文章目录 悲观/乐观锁挂起等待锁/自旋锁偏向锁轻量级/重量级锁锁升级CASCAS引发的ABA问题解决方案 原子类 公平/不公平锁可重入锁ReentrantLock读写锁 Callable接口 这里的“悲观”“乐观”“挂起等待”“自旋”“轻量级”“重量级”“公平”“非公平”“可重入”仅代表某个锁的…

第三届世界科学智能大赛新能源赛道:新能源发电功率预测-数据处理心得体会1

看懂数据 比赛数据说明: 文档(报名之后可以下载)大小操作初赛测试集.zip94MB下载初赛训练集.zip632MB下载output.zip145KB下载 任务和主题 AI新能源功率预报:根据历史发电功率数据和对应时段多类别气象预测数据,实…

【云馨AI-大模型】2025年4月第三周AI领域全景观察:硬件革命、生态博弈与国产化突围

一、硬件算力突破点燃多智能体时代 谷歌在4月12日Cloud Next大会发布第七代TPU Ironwood,单芯片算力达4614 TFLOPs,较前代内存提升6倍,专为AI推理场景优化。配合发布的Gemini 2.5 Flash模型通过"思考"功能实现成本优化&#xff0c…

第3章 垃圾收集器与内存分配策略《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》

第3章 垃圾收集器与内存分配策略 3.2 对象已死 Java世界中的所有对象实例,垃圾收集器进行回收前就是确定对象哪些是活着的,哪些已经死去。 3.2.1 引用计数算法 常见的回答是:给对象中添加一个引用计数器,有地方引用&#xff0…

超详细VMware虚拟机扩容磁盘容量-无坑版

1.环境: 虚拟机:VMware Workstation 17 Pro-17.5.2 Linux系统:Ubuntu 22.04 LTS 2.硬盘容量 虚拟机当前硬盘容量180G -> 扩展至 300G 3.操作步骤 (1)在虚拟机关机的状态下,虚拟机硬盘扩容之前必…

HarmonyOS:1.4 - HarmonyOS应用程序框架基础

判断题 1.在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。 正确(True) 2.一个应用只可以包含一个UIAbility组件。 错误(False) 3.Background状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释…

HTTP HTTPS RSA

推荐阅读 小林coding HTTP篇 文章目录 HTTP 80HTTP 响应码1xx:信息性状态码(Informational)2xx:成功状态码(Success)3xx:重定向状态码(Redirection)4xx:客户端…

ORACLE数据库转国产阿里OceanBase数据库

1.BLOB类型修改 将接口内oracle.sql.BLOB改为java.sql.Blob 2.REGEXP_LIKE 判断函数正则表达式中字符转义问题 OB的正则表达式使用的是标准的Linux模式,oracle是黑盒子,在处理部分转义符([])的时候, Oracle无需使用转义符,OB务必使用转义符,加/转义处理,例如在regexp_like(t…

STM32的三种启动方式

目录 一、从主闪存存储器启动(Main Flash Memory) 二、从系统存储器启动(System Memory) 三、从内置SRAM启动(Embedded SRAM) 一、从主闪存存储器启动(Main Flash Memory) >&g…

Flutter使用flutter_driver进行自动化测试

Flutter自动化测试实践指南 作为一名iOS开发者,我最近对Flutter的自动化测试产生了浓厚兴趣。在开发过程中,我发现自动化测试对于保证应用质量至关重要,特别是像我们这样的创业团队,测试资源有限的情况下。 搭建Flutter自动化测…

Halcon应用:九点标定-手眼标定

提示:若没有查找的算子,可以评论区留言,会尽快更新 Halcon应用:九点标定-手眼标定 前言一、Halcon应用?二、应用实战1、图形理解[eye-to-hand]:1.1、开始应用2、 图形理解[eye-in-hand]2.1、 开始应用 前言…

【C++11】列表初始化、右值引用、完美转发、lambda表达式

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🌐 C 语言 上篇文章:unordered_map、unordered_set底层编写 下篇文章:C11:新的类功能、模板的可…

Pandas取代Excel?

有人在知乎上提问:为什么大公司不用pandas取代excel? 而且列出了几个理由:Pandas功能比Excel强大,运行速度更快,Excel除了简单和可视化界面外,没有其他更多的优势。 有个可怕的现实是,对比Exce…

Vue 3 中将 ref 创建的响应式对象数据转换为普通(非响应式)的数据

Vue 3 中使用 ref 创建的响应式对象数据转换为普通(非响应式)的数据,有以下几种方法: 1. 访问 .value 属性: 这是最直接、最常见的方法。 由于 ref 对象的值存储在其 .value 属性中,直接访问该属性即可获得普通数据。…

四月下旬系列

CUHKSZ 校赛 期中考试 DAY -1。 省流&#xff1a;前 1h 切 6 题&#xff0c;后 3h 过 1 题&#xff0c;读错一个本来很【】的题&#xff0c;被大模拟构造创【】了。 本地除了 VSCode 没有 Extensions&#xff0c;别的和省选差不多。使用 DEVC。 前 6 题难度 < 绿&#x…

下采样(Downsampling)

目录 1. 下采样的定义与作用​​ ​​2. 常见下采样方法​​ ​​(1) 池化&#xff08;Pooling&#xff09;​​ ​​(2) 跨步卷积&#xff08;Strided Convolution&#xff09;​​ ​​(3) 空间金字塔池化&#xff08;SPP&#xff09;​​ ​​3. PyTorch 实现示例​​ …