当前位置: 首页 > news >正文

齐次坐标变换+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:将点从世界空间到模型转换(互为逆矩阵)

                        

                        

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

相关文章:

  • 树莓派超全系列教程文档--(34)树莓派配置GPIO
  • springboot定义统一的响应数据格式
  • 【技术派后端篇】技术派中的白名单机制:基于Redis的Set实现
  • 2025年4月19日 记录大模型出现的计算问题
  • Linux Privilege Escalation: LD_PRELOAD
  • 5G 毫米波滤波器的最优选择是什么?
  • MySQL进阶-存储过程-变量语法结构
  • 【嵌入式】——Linux系统远程操作和程序编译
  • 浅析vue2和vue3的区别
  • Amlogic S905L3 系列对比:L3A、L3B 与 L3AB 深度解析
  • Linux | I.MX6ULL 使用 Yocto 文件系统开发 QT
  • 【Easylive】Gateway 路由分配与接口调用机制
  • 电商平台计算订单成交额是不是要去除退款退货的
  • 2024年国考
  • 数字电子技术基础(五十)——硬件描述语言简介
  • 【笔记】网络安全管理
  • JVM原理与实战
  • 【问题笔记】解决python虚拟环境运行脚本无法激活问题
  • 240419 leetcode exercises
  • 2025年最新版 Git和Github的绑定方法,以及通过Git提交文件至Github的具体流程(详细版)
  • 多元布局、抱团取暖……上海这个区和外向型企业坐到一起聊了什么
  • 影子调查丨义门陈遗址建筑被“没收”风波
  • 梅德韦杰夫:如果欧盟和美国 “撒手不管”,俄罗斯会更快解决俄乌冲突
  • 长三角铁路五一假期预计发送旅客2880万人次,同比增6%
  • 三一重工去年净利增逾三成至59.75亿,拟分红超30亿元
  • 2025扬州“烟花三月”国际经贸旅游节开幕,37个重大项目现场签约