精华内容
下载资源
问答
  • Unity之Matrix4x4 矩阵

    千次阅读 2019-05-15 14:07:14
    Matrix4x4 矩阵 Struct A standard 4x4 transformation matrix. 一个标准的4x4变换矩阵。 A transformation matrix can perform arbitrary linear 3D transformations (i.e. translation, rotation, scale, ...

    Matrix4x4 矩阵

    Struct

    A standard 4x4 transformation matrix.

    一个标准的4x4变换矩阵。

    A transformation matrix can perform arbitrary linear 3D transformations (i.e. translation, rotation, scale, shear etc.) and perspective transformations using homogenous coordinates. You rarely use matrices in scripts; most often using Vector3s, Quaternions and functionality of Transform class is more straightforward. Plain matrices are used in special cases like setting up nonstandard camera projection.

    一个变换矩阵可以执行任意的线形3D变换(例如,平移,旋转,缩放,切边等等)并且透视变换使用齐次坐标。脚本中很少使用矩阵:最常用Vector3,Quaternion,而且Transform类的功能更简单。单纯的矩阵用于特殊情况,如设置非标准相机投影。

    Consult any graphics textbook for in depth explanation of transformation matrices.

    参考任何图形学教程获取关于变换矩阵的深入讲解。

    In Unity, Matrix4x4 is used by several TransformCameraMaterial and GL functions.

    在Unity中,Matrix4x4被Transform,Camera,Material和GL几个函数使用。

    Variables变量

    • this [int row, int column]

      Access element at [row, column].
      访问在[row, column]处的元素。

    • this [int index]

      Access element at sequential index (0..15 inclusive).
      按顺序索引访问元素(包含0..15)。

    • inverse

      The inverse of this matrix (Read Only).
      矩阵的反向(只读)。

    • transpose

      Returns the transpose of this matrix (Read Only).
      返回这个矩阵的转置(只读)。

    • isIdentity

      Is this the identity matrix?
      这是单位矩阵么?

    Functions函数

    • GetColumn

      Get a column of the matrix.
      获取矩阵的一列。

    • GetRow

      Returns a row of the matrix.
      返回矩阵的一行。

    • SetColumn

      Sets a column of the matrix.
      设置矩阵的一列。

    • SetRow

      Sets a row of the matrix.
      设置矩阵的一行。

    • MultiplyPoint

      Transforms a position by this matrix (generic).
      通过这个矩阵变换位置。

    • MultiplyPoint3x4

      Transforms a position by this matrix (fast).
      通过这个矩阵变换位置(快)。

    • MultiplyVector

      Transforms a direction by this matrix.
      通过这个矩阵变换方向。

    • SetTRS

      Sets this matrix to a translation, rotation and scaling matrix.
      设置这个矩阵为一个平移、旋转和缩放矩阵。

    • ToString

      Returns a nicely formatted string for this matrix.
      返回这个矩阵格式化好的字符串。

    Class Variables类变量

    • zero

      Returns a matrix with all elements set to zero (Read Only).
      返回所有元素都设置为0的一个矩阵(只读)。

    • identity

      Returns the identity matrix (Read Only).
      返回单位矩阵(只读)。

    Class Functions类函数

    • operator *

      Multiplies two matrices.
      两个矩阵相乘。

    • Scale

      Creates a scaling matrix.
      创建一个缩放矩阵。

    • TRS

      Creates a translation, rotation and scaling matrix.
      创建一个平移、旋转和缩放矩阵。

    • Ortho

      Creates an orthogonal projection matrix.
      创建一个正交投影矩阵。

    • Perspective

      Creates a perspective projection matrix.
      创建一个透视投影矩阵。

    参考网站地址:http://www.ceeger.com/Script/Matrix4x4/Matrix4x4.html

    展开全文
  • 标题 ##博主最近研究矩阵的成果,简单的封装了一下,可直接当成工具类调用: MatrixUtils工具类 ... public static void Matrix4x4(this Transform transfrom,Matrix4x4 matrix4X4) { transfrom.loca...

    标题 ##博主最近研究矩阵的成果,简单的封装了一下,可直接当成工具类调用:

    MatrixUtils工具类

    internal  static class MatrixUtils 
    {
        public static void Matrix4x4(this Transform transfrom,Matrix4x4 matrix4X4)
        {
            transfrom.localScale = matrix4X4.GetScale();
            transfrom.rotation = matrix4X4.GetRotation();
            transfrom.position = matrix4X4.GetPostion();
        }
    
        public static Quaternion GetRotation(this Matrix4x4 matrix4X4)
        {
            float qw = Mathf.Sqrt(1f + matrix4X4.m00 + matrix4X4.m11 + matrix4X4.m22)/2;
            float w = 4*qw;
            float qx = (matrix4X4.m21 - matrix4X4.m12)/w;
            float qy = (matrix4X4.m02 - matrix4X4.m20)/w;
            float qz = (matrix4X4.m10 - matrix4X4.m01)/w;
            return new Quaternion(qx, qy, qz, qw);
        }
    
        public static Vector3 GetPostion(this Matrix4x4 matrix4X4)
        {
            var x = matrix4X4.m03;
            var y = matrix4X4.m13;
            var z = matrix4X4.m23;
            return new Vector3(x,y,z);
        }
    
        public static Vector3 GetScale(this Matrix4x4 m)
        {
            var x = Mathf.Sqrt(m.m00*m.m00 + m.m01*m.m01 + m.m02*m.m02);
            var y = Mathf.Sqrt(m.m10*m.m10 + m.m11*m.m11 + m.m12*m.m12);
            var z = Mathf.Sqrt(m.m20*m.m20 + m.m21*m.m21 + m.m22*m.m22);
            return new Vector3(x,y,z);
        }
    }

    Matrix封装类

    internal static class Matrix
    {
        private static Matrix4x4 matrix;
        public static void Matrix4x4_Transfrom(this Transform transform, Vector3 targetPos)
        {
            matrix = Matrix4x4.identity;
            Vector4 v = new Vector4(transform.position.x, transform.position.y, transform.position.z, 1);
    
            matrix.m03 = targetPos.x;
            matrix.m13 = targetPos.y;
            matrix.m23 = targetPos.z;
    
            v = matrix * v;
    
            transform.Matrix4x4(matrix);
        }
    
        public static void Matrix4x4_Rotation(this Transform transform, EnemyManager.Axle axle, float angle)
        {
            matrix = Matrix4x4.identity;
    
            if (axle == EnemyManager.Axle.X)
            {
                matrix.m11 = Mathf.Cos(angle * Mathf.Deg2Rad);
                matrix.m12 = -Mathf.Sin(angle * Mathf.Deg2Rad);
                matrix.m21 = Mathf.Sin(angle * Mathf.Deg2Rad);
                matrix.m22 = Mathf.Cos(angle * Mathf.Deg2Rad);
    
            }
            else if (axle == EnemyManager.Axle.Y)
            {
                matrix.m00 = Mathf.Cos(angle * Mathf.Deg2Rad);
                matrix.m02 = Mathf.Sin(angle * Mathf.Deg2Rad);
                matrix.m20 = -Mathf.Sin(angle * Mathf.Deg2Rad);
                matrix.m22 = Mathf.Cos(angle * Mathf.Deg2Rad);
            }
            else
            {
                matrix.m00 = Mathf.Cos(angle * Mathf.Deg2Rad);
                matrix.m01 = -Mathf.Sin(angle * Mathf.Deg2Rad);
                matrix.m10 = Mathf.Sin(angle * Mathf.Deg2Rad);
                matrix.m11 = Mathf.Cos(angle * Mathf.Deg2Rad);
            }
    
            transform.Matrix4x4(matrix);
        }
    
        public static void Matrix4x4_Scale(this Transform transform, Vector3 targetScale)
        {
            matrix = Matrix4x4.identity;
            Vector4 v = new Vector4(transform.localScale.x, transform.localScale.y, transform.localScale.z, 1);
    
            matrix.m00 = targetScale.x;
            matrix.m11 = targetScale.y;
            matrix.m22 = targetScale.z;
            v = matrix * v;
            transform.Matrix4x4(matrix);
        }
    }

    测试调用(直接挂载对象):

    public  class Test :MonoBehaviour
    {
        void Start()
        {
            transform.Matrix4x4_Rotation(EnemyManager.Axle.X, 90f);//旋转
            transform.Matrix4x4_Scale(new Vector3(2,2,2));//缩放
            transform.Matrix4x4_Transfrom(new Vector3(6,6,6));//位移
        }
    
    }

    打印数据如下:
    缩放矩阵
    位移矩阵
    旋转矩阵
    参考:
    这里写图片描述

    展开全文
  • Matrix4x4 矩阵api介绍

    2019-08-30 17:22:39
    Namespace: UnityEngine Description 描述 A standard 4×4 ...一个标准的4×4变换矩阵。 A transformation matrix can perform arbitrary linear 3D transformations (i.e. translation, rotation, scale...

    Namespace: UnityEngine

    Description 描述

    A standard 4×4 transformation matrix.

    一个标准的4×4变换矩阵。

    A transformation matrix can perform arbitrary linear 3D transformations (i.e. translation, rotation, scale, shear etc.) and perspective transformations using homogenous coordinates. You rarely use matrices in scripts; most often using Vector3s, Quaternions and functionality of Transform class is more straightforward. Plain matrices are used in special cases like setting up nonstandard camera projection.

    一个变换矩阵可以表达任意的线性3D变换(例如平移,旋转,缩放,切变等)并且使用齐次坐标系进行投影变换。我们基本上不会在脚本中使用矩阵;通常都直接使用三维向量、四元数以及Transform对象的函数。在特殊的场合例如设置一个非标准化的摄像机投影时才使用纯粹的矩阵。

    Consult any graphics textbook for in depth explanation of transformation matrices.

    参考任意一本图形学对于变换矩阵的深入解释。

    In Unity, Matrix4x4 is used by several Transform, Camera, Material and GL functions.

    在Unity中,Matrix4x4对象被很多Transform,Camera,Matierial和Gl中的函数使用。

    Matrices in unity are column major. Data is accessed as: row + (column*4). Matrices can be indexed like 2D arrays but in an expression like mat[a, b], a refers to the row index, while b refers to the column index (note that this is the opposite way round to Cartesian coordinates).

    Unity中的矩阵使用的是列优先。数据通过行+(列*4)的方式获取。矩阵可以被索引为类似二维数组的形式,但是要以mat[a,b]这样的表达式。其中a代表行号,b代表列号(注意这正好与笛卡尔坐标系相反)。

    Static Variables 静态变量

    identityReturns the identity matrix (Read Only).
    返回单位矩阵(只读)。
    zeroReturns a matrix with all elements set to zero (Read Only).
    返回所有元素设置为零的矩阵(只读)。

    Variables 变量

    determinantThe determinant of the matrix.
    矩阵的决定因素。
    inverseThe inverse of this matrix (Read Only).
    这个矩阵的逆矩阵(只读)。
    isIdentityIs this the identity matrix?
    这个矩阵是单位矩阵吗?
    this[int,int]Access element at [row, column].
    获取[行,列]所对应的元素。
    transposeReturns the transpose of this matrix (Read Only).
    返回这个矩阵的转置矩阵(只读)。

    Functions 方法

    GetColumnGet a column of the matrix.
    获取这个矩阵的一列。
    GetRowReturns a row of the matrix.
    返回这个矩阵的一行。
    MultiplyPointTransforms a position by this matrix (generic)
    使用该矩阵对一个坐标(点)进行变换(普通)
    MultiplyPoint3x4Transforms a position by this matrix (fast).
    使用该矩阵对一个坐标(点)进行变换(快速)
    MultiplyVectorTransforms a direction by this matrix.
    使用该矩阵对一个方向(按方法名理解应该是向量吧,向量包含方向和大小,译者注)进行变换
    SetColumnSets a column of the matrix.
    给这个矩阵的一列赋值。
    SetRowSets a row of the matrix.
    给这个矩阵的以行赋值。
    SetTRSSets this matrix to a translation, rotation and scaling matrix.
    把这个矩阵变为平移、旋转和缩放矩阵。
    ToStringReturns a nicely formatted string for this matrix.
    返回一个该矩阵的漂亮的格式化字符串。

    Static Functions 静态方法

    OrthoCreates an orthogonal projection matrix.
    创建一个正交投影矩阵。
    PerspectiveCreates a perspective projection matrix.
    创建一个透视投影矩阵。
    ScaleCreates a scaling matrix.
    创建一个缩放矩阵。
    TRSCreates a translation, rotation and scaling matrix.
    创建一个平移、旋转和缩放矩阵。

    Operators 运算符重载

    operator *Multiplies two matrices.
    两个矩阵相乘。
    展开全文
  • Matrix4x4矩阵 api

    2017-10-26 11:45:00
    Matrix4x4 矩阵api介绍 Namespace: UnityEngine Description 描述 A standard 4×4 transformation matrix. 一个标准的4×4变换矩阵。 A transformation matrix can perform arbitrary linear 3D ...

    Matrix4x4 矩阵api介绍

    Namespace: UnityEngine

    Description 描述

    A standard 4×4 transformation matrix.

    一个标准的4×4变换矩阵。

    A transformation matrix can perform arbitrary linear 3D transformations (i.e. translation, rotation, scale, shear etc.) and perspective transformations using homogenous coordinates. You rarely use matrices in scripts; most often using Vector3s, Quaternions and functionality of Transform class is more straightforward. Plain matrices are used in special cases like setting up nonstandard camera projection.

    一个变换矩阵可以表达任意的线性3D变换(例如平移,旋转,缩放,切变等)并且使用齐次坐标系进行投影变换。我们基本上不会在脚本中使用矩阵;通常都直接使用三维向量、四元数以及Transform对象的函数。在特殊的场合例如设置一个非标准化的摄像机投影时才使用纯粹的矩阵。

    Consult any graphics textbook for in depth explanation of transformation matrices.

    参考任意一本图形学对于变换矩阵的深入解释。

    In Unity, Matrix4x4 is used by several Transform, Camera, Material and GL functions.

    在Unity中,Matrix4x4对象被很多Transform,Camera,Matierial和Gl中的函数使用。

    Matrices in unity are column major. Data is accessed as: row + (column*4). Matrices can be indexed like 2D arrays but in an expression like mat[a, b], a refers to the row index, while b refers to the column index (note that this is the opposite way round to Cartesian coordinates).

    Unity中的矩阵使用的是列优先。数据通过行+(列*4)的方式获取。矩阵可以被索引为类似二维数组的形式,但是要以mat[a,b]这样的表达式。其中a代表行号,b代表列号(注意这正好与笛卡尔坐标系相反)。

    Static Variables 静态变量

    identityReturns the identity matrix (Read Only).
    返回单位矩阵(只读)。
    zeroReturns a matrix with all elements set to zero (Read Only).
    返回所有元素设置为零的矩阵(只读)。

    Variables 变量

    determinantThe determinant of the matrix.
    矩阵的决定因素。
    inverseThe inverse of this matrix (Read Only).
    这个矩阵的逆矩阵(只读)。
    isIdentityIs this the identity matrix?
    这个矩阵是单位矩阵吗?
    this[int,int]Access element at [row, column].
    获取[行,列]所对应的元素。
    transposeReturns the transpose of this matrix (Read Only).
    返回这个矩阵的转置矩阵(只读)。

    Functions 方法

    GetColumnGet a column of the matrix.
    获取这个矩阵的一列。
    GetRowReturns a row of the matrix.
    返回这个矩阵的一行。
    MultiplyPointTransforms a position by this matrix (generic)
    使用该矩阵对一个坐标(点)进行变换(普通)
    MultiplyPoint3x4Transforms a position by this matrix (fast).
    使用该矩阵对一个坐标(点)进行变换(快速)
    MultiplyVectorTransforms a direction by this matrix.
    使用该矩阵对一个方向(按方法名理解应该是向量吧,向量包含方向和大小,译者注)进行变换
    SetColumnSets a column of the matrix.
    给这个矩阵的一列赋值。
    SetRowSets a row of the matrix.
    给这个矩阵的以行赋值。
    SetTRSSets this matrix to a translation, rotation and scaling matrix.
    把这个矩阵变为平移、旋转和缩放矩阵。
    ToStringReturns a nicely formatted string for this matrix.
    返回一个该矩阵的漂亮的格式化字符串。

    Static Functions 静态方法

    OrthoCreates an orthogonal projection matrix.
    创建一个正交投影矩阵。
    PerspectiveCreates a perspective projection matrix.
    创建一个透视投影矩阵。
    ScaleCreates a scaling matrix.
    创建一个缩放矩阵。
    TRSCreates a translation, rotation and scaling matrix.
    创建一个平移、旋转和缩放矩阵。

    Operators 运算符重载

    operator *Multiplies two matrices.
    两个矩阵相乘。

     

     

    转http://wiki.ceeger.com/script/unityengine/classes/matrix4x4/matrix4x4

    转载于:https://www.cnblogs.com/luxishi/p/7736024.html

    展开全文
  • Unity3D开发之Matrix4x4矩阵变换

    千次阅读 2015-05-20 17:41:33
    转自:http://sygame.lofter.com/post/117105_3b843c在Unity开发中时常会用到Matrix4x4矩阵来变换场景中对象的位置、旋转和缩放。但是很多人都不太理解这儿Matrix4x4变换矩阵。通过DX中的变换矩阵我来讲一讲在unity...
  • unity中的利用Matrix4x4实现缩放

    千次阅读 2016-12-26 09:43:02
    1、缩放矩阵 2、示例代码using UnityEngine; using System.Collections;public class MyTransform : ... public Matrix4x4 matrix; //平移矩阵 public Vector4 v; //临时存储矩阵变换之后的点 public Vec
  • OpenGL - Matrix4X4 矩阵变换

    千次阅读 2016-09-26 20:35:31
    OpenGL 相关开发,对图像进行处理时,常用到Matrix4x4矩阵来变换场景中对象的位置、旋转和缩放。但是很多人都不太理解这儿Matrix4x4变换矩阵。通过DX中的变换矩阵我来讲一讲在unity中这个变换矩阵是怎么变换的。 ...
  • 文章目录前言一、矩阵 Matrix4x4?二、应用过程1、案例分析2、函数介绍Matrix4x4.TRSMatrix4x4.MultiplyVectorMatrix4x4.MultiplyPointMatrix4X4.inverseMatrix4X4.rotation3、实际代码总结 前言 近期由于项目需求...
  • 【转】Unity3D开发之Matrix4x4矩阵变换

    千次阅读 2015-02-15 22:37:56
    在Unity开发中时常会用到Matrix4x4矩阵来变换场景中对象的位置、旋转和缩放。但是很多人都不太理解这儿Matrix4x4变换矩阵。通过DX中的变换矩阵我来讲一讲在unity中这个变换矩阵是怎么变换的。 在三维图形程序中,...
  • Matrix4x4

    千次阅读 2016-09-08 17:39:45
    MultiplyPoint3x4 矩阵变换 public Vector3 MultiplyPoint3x4(Vector3 v); 通过指定的矩阵来变换向量v 下面的代码是通过矩阵m来变换v ... Matrix4x4 m = Matrix4x4.identity; Vector3 v = Vector3.one;
  • 《UnityAPI.Matrix4x4矩阵》 版本 作者 参与者 完成日期 备注 UnityAPI_Matrix4x4_V01_1.0 严立钻 2020.06.02 ...
  • Matrix4x4.TRS()

    千次阅读 2019-02-23 20:55:50
    最近一直在局部坐标和世界坐标当中缠绕,感觉快要理不清了。...https://docs.unity3d.com/ScriptReference/Matrix4x4.TRS.html ----------------------------------------------------------------------------...
  • 一、为什么要用自适应矩阵在UI界面设计过程中,由于每个玩家的屏幕尺寸不相同,为了使游戏界面在任何设备都能达到统一的布局,引入了通过屏幕信息计算出的自适应矩阵二、原理讲解比如我们游戏中先设定标准屏的高度和...
  • 这个应该属于撸一个适合...最后,既然都一样,为什么不用Transform.TransformPoint代替呢,因为我们在脚本中网格合并需要的transform是Matrix4x4类型的。InverseTransformPoint返回的是Vector3 类型的。 以上。
  • Unity3d-旋转Quaternion、Matrix4x4、 Euler

    千次阅读 2015-02-26 13:06:52
    矩阵Matrix4x4 namespace UnityEngine { public struct Matrix4x4 { public float m00; public float m10; public float m20; public float m30; public float m01; public float m11; public ...
  • 从平移、缩放、倾斜、透视和旋转重构一个 4x4 矩阵。 这通常用于矩阵动画(即在和插值之后)。 从移植的代码。 欢迎提供更多测试/稳健性/优化的 PR。 您可能还对 、 和感兴趣。 用法 recompose(matrix, ...
  • Unity3D开发之Matrix4x4矩阵变换http://sygame.lofter.com/post/117105_3b843c/在Unity开发中时常会用到Matrix4x4矩阵来变换场景中对象的位置、旋转和缩放。但是很多人都不太理解这儿Matrix4x4变换矩阵。通过DX中的...
  • Unity中的Matrix4x4

    2016-05-11 22:44:00
    物体平移旋转一般变换底层都是用矩阵来表示的,一般不会用到这个类。有时候需要一些世界坐标与局部坐标转换的时候,可能就要... 2 Matrix4x4 mat = Matrix4x4.TRS(new Vector3(1,1,1),Quaternion.Euler(0,90,0),Vect...
  • 根据从 3D 旋转、平移、缩放和 2D 倾斜构建一个 4x4 矩阵。 var compose = require ( 'css-mat4' ) var matrix = compose ( [ ] , { translate : [ 25 , 15 , 25 ] , rotate : [ 0 , Math . PI / 2 , - Math . ...
  • 终于,到了我们万能的矩阵!话说这个结构体写起来还真是烦,变量也太多了吧。长得还挺像,一个不小心就容易出错。...大神快来~Matrix4x4d:/// Matrix4x4d.cs /// /// The double type version of the Un...
  •   vtkMatrix4x4是一个用来表示和操作4矩阵的类。具体地说,它被设计用于使用4x4变换矩阵表示进行三维渲染时的齐次坐标[x y z w]。多数情况下采用行向量格式的16个double数组。注意,OpenGL以列向量格式存储矩阵...
  • 4x3矩阵类///////////////////////////////////////////////////////////////////////////// // // 3D数学基础:游戏与图形开发 // 3D Math Primer for Games and ...// Matrix4x3.h - Matrix4x3类声明 // Matrix4
  • QMatrix4x4

    2021-04-15 21:33:10
    目录 功能 perspective translate 平移 rotate 旋转 scale 缩放 void perspective(const QVector3D& vector) void translate(float x, float y) void translate(float x, float y, float z) void translate(float x,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,856
精华内容 1,142
关键字:

matrix4x4矩阵缩放