美文网首页
世界坐标系互相转换 矩阵相乘顺序

世界坐标系互相转换 矩阵相乘顺序

作者: 卡卡罗忒 | 来源:发表于2019-12-20 18:04 被阅读0次

    metal纹理坐标与00点是左上角与opengl相反

    3d世界物体转换为设备屏幕需要的转换

    为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。下面的这张图展示了整个流程以及各个变换过程做了什么:
    一个3d世界的物体从 自身坐标 转换为屏幕设备坐标 需要经过三次矩阵转换 Model view project

    坐标转换

    矩阵相乘顺序

    • scale rotate translate
    • 矩阵相乘是从后向前
      let animatedModelView = matrix_multiply(matrix4x4_translation(translateXAnimationValue / scaleX, translateYAnimationValue / scaleY, 0),matrix4x4_scale(scaleXAnimationValue, scaleYAnimationValue, 1))

    projectMatrix

    左右下上近远 2d图形处理只需要 正交矩阵
    因为图片本身世界的坐标系是 从左到右从下到上

    Snipaste_2019-12-22_21-42-41.png
    ios系统的坐标系是从左到右从上到下 Y轴正好相反 所以裁剪矩阵建立的时候 要将上下颠倒过来,用以处理图片上下flip的问题

    matrixProjection = matrix_ortho(0, Float(renderSize.width), 0, Float(renderSize.height), -1, 1)'

    相关文章

      网友评论

          本文标题:世界坐标系互相转换 矩阵相乘顺序

          本文链接:https://www.haomeiwen.com/subject/rtbinctx.html