OpenGL ES

作者: J大空 | 来源:发表于2019-10-20 22:58 被阅读0次

    在opengl es中,总共会有五种的坐标系统,如下所示:
    Local space (or Object space):本地坐标系,即模型本身的坐标系
    World space:世界坐标系
    View space (or Eye space):视图坐标系
    Clip space:裁剪坐标系
    Screen space:屏幕坐标系
    下图展示了如何从本地坐标系经过一系列的矩阵变换(模型矩阵model matrix,视图矩阵view matrix,投影矩阵projetion matrix等),转换到了屏幕坐标系的过程。

    image.png

    首先从本地坐标系开始,表示一个模型当前开始的坐标。
    通过模型矩阵将本地坐标转换到世界坐标当中,世界坐标可以包含很多的模型。
    在世界坐标中通过视图转换转换到视图坐标中,视图坐标可以理解成我们从相机中看到的视角。
    在视图坐标中通过投影变换(orthographic projection matrix[正交投影矩阵] or a perspective projection matrix[透视投影矩阵])转换到裁剪坐标当中,裁剪坐标的区间在于[-1.0,1.0]。
    最后将裁剪坐标转换到屏幕坐标中,这一步通过glViewport()方法进行。

    如何理解这些坐标系呢?
    首先,本地坐标系很好理解,每个模型都是一个坐标系,中心点位于(0,0,0)点。
    对于世界坐标系而言,假设不用世界坐标系,则如何把模型集合到一起呢?例如要在客户端展示两个不同位置立方体,所以才提出了世界坐标系的概念。通过模型矩阵(旋转,平移,放大或者缩小),我们可以很容易把模型展示在不同的位置的世界坐标系上面。
    对于视图坐标系(known as camera space or eye space)而言,就是通过摄像机视角观察的坐标系,由世界坐标系通过视图矩阵转换而来。
    裁剪坐标系的意义在于裁剪掉超出可观察范围的视图,通过投影变换,转换成NDC(规范化设备坐标)。最终裁剪坐标系会调用glViewport()转换成设备坐标系完成显示。

    投影矩阵介绍
    在从视图坐标系转换到裁剪坐标系时候,会通过投影矩阵转化,投影矩阵的主要作用就是将三维降成二维,以便显示在屏幕上。
    投影矩阵分为两种,一种是
    1: 正交投影矩阵
    2: 透视投影矩阵。

    相关文章

      网友评论

          本文标题:OpenGL ES

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