UnityShader笔记第三课-MVP矩阵原理-M矩阵

本节课开始,从大佬开口第二秒,全程处于懵逼状态。
由于高等数学课上没有经住王者荣耀的诱惑,所以矩阵的知识一直处于贫乏状态,到课程结束也就懵懵懂懂的记住了大概,所以本笔记纯属个人记录。观点错误请指出,阿里嘎多阔塞以马斯。

tranform的位移矩阵:

 //tranform 的位移矩阵
    public void LMatri()
    {
        Matrix4x4 localP = Matrix4x4.Translate(transform.localPosition);
        Debug.Log(localP.ToString());
    }

上述代码输出tranform的 本地左边的位移矩阵具体输出如下:
UnityShader笔记第三课-MVP矩阵原理-M矩阵_第1张图片
其中标红部分表示代表的就是tranform的本地坐标。

tranform的旋转矩阵:

//tranform 的旋转矩阵
    public void RotationMatri()
    {
        Matrix4x4 localr = Matrix4x4.Rotate(transform.localRotation);
        Debug.Log(localr.ToString());
    }

上述代码输出如下,不知道具体啥意思,望知道的大佬讲解下:
UnityShader笔记第三课-MVP矩阵原理-M矩阵_第2张图片
tranform的缩放矩阵:

//tranform 的缩放矩阵
    public void ScaleMatri()
    {
        Matrix4x4 localr = Matrix4x4.Scale(transform.localScale);
        Debug.Log(localr.ToString());
    }

上述代码输出如下,其中矩阵种斜对角线表示的为tranform的本地缩放:
UnityShader笔记第三课-MVP矩阵原理-M矩阵_第3张图片
**

M矩阵:

**
M矩阵 把模型坐标转化为世界坐标。M= M(translation)*M(rotation)*M(scale)(这个顺序很重要,不能错乱)

 public void M_juzhen()
    {
        Transform thistran = transform;
        Matrix4x4 ml = Matrix4x4.TRS(transform.localPosition, transform.localRotation, transform.localScale);
        while (thistran.parent)
        {
            thistran = thistran.parent;
            ml = Matrix4x4.TRS(thistran.localPosition, thistran.localRotation, thistran.localScale) * ml ;
        }
        Debug.Log(ml.ToString());
    }

本人并没理解透彻,只是把大佬讲的计算方式记录了下来防止忘记。如有了解的大佬,路过请留下您宝贵的理解,再次感谢。

你可能感兴趣的:(UnityShader学习笔记,线性代数,MVP矩阵)