坐标空间

作者: 大旺旺的弟弟小旺旺 | 来源:发表于2022-07-19 08:14 被阅读0次

任何使用矩阵变换来对顶点进行变换,x,y,z必须在-1.0到1.0之间,超出去的将不可见,一般的我们会自己设定范围,之后将顶点着色器将这些坐标变为标准化设备坐标,将标准化设备坐标传入光栅器。将他们在变化为二维坐标或者像素。
(我们自己设置范围,也就是在书写的过程中,并不是些0到1这样的数据,比如说720x1280)

坐标变换为标准化设备坐标,接着转换为屏幕坐标。在这个之前还会有许多坐标系统,一起参与的结果。

坐标空间

转换到片段之前需要经历的几个状态

  • 局部空间:每次我们开始的坐标,绘制一个物体
  • 世界空间:
  • 观察空间
  • 裁剪空间
  • 屏幕空间

概述

坐标的目标是为了将坐标系统转化到另一种坐标系中,需要经过几次矩阵变换:模型、观察、投影三个矩阵。

起始于局部,它是一个局部坐标,之后在变为世界坐标,观察坐标、裁剪坐标,最后的屏幕坐标。

1.局部坐标对象相对于局部原点,也是起始坐标(这个比如一个三角形,我们给的三个顶点)
2.将局部坐标变为到世界坐标,将局部物体相对于世界原点进行摆放。(比如世界,我们定义的是720x1280,然后对于原点位置,需要根据相机位置,判断是手机的那个位置。如果不设置都现实在世界的0,0点)
3.世界坐标转换为观察空间坐标,使得从观察着的角度,这个根据相机的位置就是,来确定在屏幕的位置。
4.裁剪坐标,裁掉不是落在-1,1范围内的,之外的就会被抛弃
5.裁剪到视口,做好将最后变换的坐标送入到光栅器中,最后变换为片段。

坐标转换需要几个变换矩阵,最重要的有三个模型 观察 投影。

1.局部空间
物体的起始坐标。
2.世界空间
相对于世界原点,它们会和其他物体一起相对于世界原点进行摆放。
3.观察空间
将其转换为从摄像机的方向去观察。
4.裁剪空间
裁剪空间只处理-1到1范围内,并判断将那些顶点显示在屏幕上。
5.屏幕空间
视口转换,将坐标转换到glViewport函数所在的范围内

最后会将坐标送到光栅器,转换为片段。转换到相应坐标中的目的是为了可以更方便的执行操作。

局部空间

局部空间只物体所在的坐标空间,对象开始的地方,比如一个三角形,建模的开始就是在0,0,0位置。

世界空间

游戏720x1280就是这个世界空间,它通过矩阵变换之后,变为一个小点的物体。然后进行绘制。

建模完成之后的图形都在0,0位置上,想为每一个物体放置一个位置,那么就需要世界坐标转换。

模型矩阵:它是一个变换矩阵,通过物体进行位移,缩放,旋转将它置于本应该在的位置或者朝向,第一步需要缩放,因为它比较大,将他放到一个小镇,然后设置它的位置,将局部坐标转换为世界坐标中。

观察空间

一般被说为摄像机,摄像空间,或者视觉空间,世界转换为用户视野前方的坐标而产生的结果,它是通过摄像机视角看到的景象,

裁剪空间

顶点着色器运行的最后,Open GL期望所有的坐标落在一个范围内,在次范围之外的都被裁剪,裁剪之外的看不到,里面可以看的见。

为了顶点坐标从观察去裁剪空间,需要定义一个投影矩阵,他会指定一个分为-1000,1000,这个矩阵会将指定范围内的坐标转换为一个标准的范围内。
范围之外的不会被映射

投影矩阵创建的观察箱称为平截头体,在范围内可以被显示在屏幕上,将可以看见的转换到标准设备的过程称之为投影。

顶点被放到裁剪空间之后,最后会使用透视除法,会将位置x,y,z除以w分量,透视除法将4D裁剪空间坐标转换为3D标准化设备的过程,在顶点着色器运行的最后被执行(自动)。

最后坐标被映射到屏幕空间中,并被变换乘片段。

正交

透视

将他们组合

上述的每一个步骤都创建一个变换,下面会变换到裁剪空间(裁剪和透视除法是opengl自己完成的)。
vclip = Mprojection * Mview * Mmodel * Vlocal

矩阵运算的顺序是反的,顺序反了,结果会存在问题的

透视到屏幕,就变为了标准化坐标。

进入3D

3D转换为2D坐标,创建一个模型矩阵,包含了位置、缩放、位移

相关文章

  • 坐标空间

    任何使用矩阵变换来对顶点进行变换,x,y,z必须在-1.0到1.0之间,超出去的将不可见,一般的我们会自己设定范围...

  • 【Unity Shader入门精要学习】数学基础(三)

    坐标空间(都是以Unity中的坐标空间为准) 坐标空间变换 1、每一个坐标空间都是相对的,都是相对与另外一个坐标空...

  • LearnOpenGL 坐标系统(1)

    五个坐标系统 局部空间(物体空间) 世界空间 观察空间 裁剪空间 屏幕空间 五个坐标系统的概念 : 坐标系统[ht...

  • 【Unity Shader入门精要学习】数学基础(四)

    顶点的坐标空间变换过程(都是以Unity中的坐标空间为准) 1、模型空间(model space) 模型空间有时也...

  • OpenGL坐标系与几何变换流程

    局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标。 下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于...

  • 1.空间直角坐标系

    1.空间直角坐标系 1.1空间直角坐标系的建立 坐标轴:x轴(横轴)、y轴(纵轴)、z轴(竖轴)。 空间直角坐标系...

  • 2017-07-07

    稀缺性的空间坐标和时间坐标

  • 坐标系与坐标空间

    个人学习中的理解,由于水平有限,还是学习笔记,如果有大佬发现错误或者偏差,还请帮我纠正一下.感谢深度测试与渲染队列...

  • 坐标系,坐标转换和线性变换

    1、 坐标系与坐标 (1)坐标系与空间的基 空间的基和坐标系两者之间属于一种一一对应的关系,坐标系也即空间的基,坐...

  • OpenGL坐标系理解

    1.在OenGL中有5种坐标系 局部坐标系(物体的坐标系) 世界坐标系(-1 ~ 1之间) 观察空间 裁剪空间 屏...

网友评论

    本文标题:坐标空间

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