Unity 矩阵简介

简介: Unity 矩阵简介

前言:与向量一样,矩阵也是3D数学的基础。要正确进行物体的位移、旋转和缩放变换,就必须要用到矩阵。

3D游戏中的向量一般只有3个维度,但矩阵要使用4×4矩阵,主要原因你是要用矩阵实现平移,3×3矩阵是不够的。4×4矩阵是能够进行所有常用变换的最小矩阵


常用矩阵介绍

由于矩阵算法的问题涉及面很广,本文只展示单独的平移、旋转和缩放矩阵,让小伙伴们对矩阵有一个直观的认识,消除陌生感

1.平移矩阵

向量v乘以上述向量 ,相当于让向量v的x、y、z分量分别变化为最后一行的xyz

2.旋转矩阵

此矩阵可以让向量沿着x轴旋转α角

3.缩放矩阵

缩放矩阵可以对向量的各个分量进行缩放,向量v与上述矩阵相乘后,其三个分量分别缩放上图中的x、y、z倍


矩阵变换的最强大的地方在于,它可以通过矩阵乘法进行组合,组合以后通过一个矩阵就可以表示一组连续的变换操作。假设有3个矩阵S、R、T分别进行缩放、旋转、位移操作,三者相乘得到了M矩阵。那么有:vSRT=vM

虽然矩阵功能强大,但由于其使用有一定门槛,因此Unity封装了一些矩阵和变换矩阵,用户可以直接使用。旋转相关的问题还可以用四元数(Quaternion)来解决,进一步降低了直接操作矩阵的必要性

齐次坐标

在3D数学中,齐次坐标就是将原本的三维向量(x,y,z)用四维向量(x,y,z,w)来表示

引入齐次坐标有以下目的:

  • 更好地区分坐标点和向量。在三维空间中,(x,y,z)既可以表示一个点,也可以表示一个向量。如果采用齐次坐标,则可以使用(x,y,z,1)代表坐标点,而用(x,y,z,0)代表向量。
  • 统一用矩阵乘法表示平移、旋转和缩放变换。3×3矩阵可以用于表示旋转和缩放矩阵,但无法表示平移。用4×4矩阵就可以表示所有的常常用变换
  • 齐次坐标是计算机图形学中的一个非常重要的概念,但在游戏逻辑开发中很少考虑齐次坐标的问题,只在处理渲染问题或编写着色器时会用到


相关文章
|
7月前
|
开发框架 数据可视化 前端开发
【Unity 3D】GameFramework、QFramework框架简介及应用实战(超详细 附源码)
【Unity 3D】GameFramework、QFramework框架简介及应用实战(超详细 附源码)
820 0
|
7月前
|
C# 图形学
【Unity 3D】游戏对象、添加删除获取组件、预制体Prefabs简介
【Unity 3D】游戏对象、添加删除获取组件、预制体Prefabs简介
214 0
|
算法 图形学
Unity——DOTween插件使用方法简介
Unity——DOTween插件使用方法简介
814 0
|
弹性计算 图形学
unity ECS简介
unity ECS简介
914 0
|
数据可视化 图形学
Unity Mecanim 动画系统简介
Unity Mecanim 动画系统简介
131 0
Unity Mecanim 动画系统简介
|
图形学 Windows 容器
Unity学习系列一简介
一、简介 Unity的目标是为了提升"依赖注入"的思想,去建立更加松耦合的系统.patterns & practices 小组在那个时候实现DI的方式和我们现在认为的DI有所不同,DI不是单一的可重复使用的容器,而是应该专门用于正在使用它的系统.
1615 0
|
Web App开发 图形学
《Unity3D 实战核心技术详解》书中关于矩阵的错误
最近一直在学习实时渲染,不免要接触线性代数。而渲染中,一定会用到矩阵,当我再次去复习我之前看的书时,发现《Unity3D 实战核心技术详解》关于矩阵就有几处错误 ,特标注出来。   书的第一章《3D数学与Unity》,1.3.2讲矩阵缩放、1.3.3讲矩阵的旋转。
1483 0
|
数据可视化 C# 图形学