OpenGL学习笔记五 |
您所在的位置:网站首页 › opengl坐标系统 › OpenGL学习笔记五 |
OpenGL学习笔记五——摄像机
五大坐标系统
各个坐标系统之间的转换关系:
投影矩阵的两种形式——摄像机的2D和3D类型
实战
运行结果
图片链接
五大坐标系统
局部空间(Local Space,或者称为物体空间(Object Space)) 局部坐标是对象中心或者轴心为原点的坐标,位置相对于对象中心或者轴心。 世界空间(World Space) 世界空间坐标,在世界空间中,有一个坐标系,就如Unity引擎中物体的坐标。 观察空间(View Space,或者称为视觉空间(Eye Space)) 观察空间是以摄像机为原点的坐标系 裁剪空间(Clip Space) 坐标到达观察空间之后,我们需要将其投影到裁剪坐标。裁剪坐标会被处理至-1.0到1.0的范围内,并判断哪些顶点将会出现在屏幕上。 屏幕空间(Screen Space) 我们将裁剪坐标变换为屏幕坐标,我们将使用一个叫做视口变换(Viewport Transform)的过程。视口变换将位于-1.0到1.0范围的坐标变换到由glViewport函数所定义的坐标范围内。最后变换出来的坐标将会送到光栅器,将其转化为片段。 各个坐标系统之间的转换关系:图片来源 关于GLM库,请参考链接 正交投影使用GLM库函数进行模拟: glm::ortho(0.0f, 800.0f, 0.0f, 600.0f, 0.1f, 100.0f);前两个参数指定了平截头体的左右坐标,第三和第四参数指定了平截头体的底部和顶部。通过这四个参数我们定义了近平面和远平面的大小,然后第五和第六个参数则定义了近平面和远平面的距离。这个投影矩阵会将处于这些x,y,z值范围内的坐标变换为标准化设备坐标。 透视投影使用GLM库函数进行模拟: glm::mat4 proj = glm::perspective(glm::radians(45.0f), (float)width/(float)height, 0.1f, 100.0f);它的第一个参数定义了fov的值,它表示的是视野(Field of View),并且设置了观察空间的大小。如果想要一个真实的观察效果,它的值通常设置为45.0f,但想要一个末日风格的结果你可以将其设置一个更大的值。第二个参数设置了宽高比,由视口的宽除以高所得。第三和第四个参数设置了平截头体的近和远平面。我们通常设置近距离为0.1f,而远距离设为100.0f。所有在近平面和远平面内且处于平截头体内的顶点都会被渲染。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |