美文网首页
坐标系统

坐标系统

作者: 龙遁流 | 来源:发表于2017-01-07 10:40 被阅读0次

     标准化设备坐标(Normalized Device Coordinate, NDC):x, y, z介于[-1.0, 1.0]

    局部空间(Local Space,物体空间Object Space)

    世界空间(World Space)

    观察空间(View Space,视觉空间Eye Space)

    裁剪空间(Clip Space)

    屏幕空间(Screen Space)

    坐标转换流

    模型矩阵是一种转换矩阵,它能通过对对象进行平移、缩放、旋转来将它置于它本应该在的位置或方向。世界坐标原点(0, 0, 0),变换时将本地坐标系在世界坐标系变换。

    观察空间,可形象的视为OpenGL的摄像机,通过观察矩阵(平移和旋转的组合)将对象的世界坐标转换为观察者视野前的坐标。

    投影矩阵创建的观察区域为视锥体(Frustum),视锥体范围内的坐标会最终出现在用户的屏幕上,此过程称为投影(Projection),之后经过透视划分(Perspective Division)操作将四维裁剪空间坐标转换为三维标准化设备坐标。

    正射投影:Orthographic Projection。

    正射投影

    以上视锥体近似为立方体,定义了由宽,高,近平面,远平面决定的可视坐标系。任何出现在近平面前面或远平面后面的坐标都会被裁剪掉。

    透视投影:Perspective Projection

    透视投影

    FOV(Field of View):视野,表示观察的空间的大小。FOV越大,相同位置的物体的在投影屏幕上越小。

    正射投影和透视投影区别

    正射投影的每个顶点和观察者的距离是一样的。

    顶点坐标到裁剪坐标:

    从右往左依次计算

    OpenGL是右手坐标系,但在标准化设备坐标系中是左手坐标系(DirectX也是)。

    右手坐标系

    Z缓冲区:OpenGL存储所有深度信息于Z缓冲区(Z-Buffer)中,即深度缓冲区(Depth Buffer)。深度存储在每个片段里面(作为片段的z值)。当片段像输出它的颜色时,OpenGL会将它的深度值和z缓冲进行比较然后如果当前的片段在其它片段之后它将会被丢弃,然后重写。这个过程称为深度测试(Depth Testing)并且它是由OpenGL自动完成的。


    图片和一些文字来源于https://learnopengl-cn.github.io,本人收集作为笔记,如有侵权,望告知


    相关文章

      网友评论

          本文标题:坐标系统

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