网站开发语言和数据库有几种,定制网站对公司有什么好处,廊坊网站排名优化公司哪家好,智能营销系统OpenGL的MVP矩阵理解
右手坐标系
右手坐标系与左手坐标系都是三维笛卡尔坐标系#xff0c;他们唯一的不同在于z轴的方向#xff0c;如下图#xff0c;左边是左手坐标系#xff0c;右边是右手坐标系 OpenGL中一般用的是右手坐标系
1.模型坐标系#xff08;Local Space他们唯一的不同在于z轴的方向如下图左边是左手坐标系右边是右手坐标系 OpenGL中一般用的是右手坐标系
1.模型坐标系Local Space 模型坐标系或者叫本地坐标系、局部坐标系本文后面统一称模型坐标系顾名思义就是以物体的正中心为原点的坐标系通常我们从三维软件中导出的模型基本是局部坐标系以模型的中心为原点其他顶点相对于模型的原点来定义。 2. 世界坐标系 World Space 世界坐标系就是全局的那个坐标系我们的物体以及后面观察物体用到的摄像机全都在世界坐标系中,原点为(0,0,0) 3. 视图坐标系View Space 视图坐标系也就是在世界坐标系中通过假想一个摄像机或者观察者的存在以摄像机的位置为中心原点然后从摄像机这个观察者的角度去重新计算世界中的物体相对于摄像机原点的坐标
什么是MVP矩阵
MVP矩阵分别是模型Model、观察View、投影Projection三个矩阵。 gl_Position projection * view * model * vec4(x,y,z, 1.0);模型Model矩阵
模型矩阵主要做的旋转、缩放、平移操作 案例 按世界坐标(0,0,0)为原点绘制一个正方体如下图这时候模型坐标系和世界坐标系原点是重合的A为正方体的左上前方位置坐标。对应坐标-0.50.50.5
如果绘制10个分别进行旋转、平移、缩放对应如下图对应的每个3维正方体对应世界坐标的位置(0,0,0)对应的A的坐标模型坐标系还是-0.50.50.5那个世界坐标呢就是A-0.50.50.5进行旋转、平移、缩放的坐标 对应具体矩阵看该章节 第四章 OpenGL ES 基础-位移、缩放、旋转原理 [
观察View矩阵
OpenGL中其实不存在专门的相机view矩阵的目的就是确定物体与相机的相对位置。注意此处的物体指的是全部的物体形成的集合也就是案例中的十个正方体形成的组而不是某个单一物体 先简单的把相机的位置按世界坐标系相对相机cameraPos0,0,-3按轴进行观察想看到物体看起来变得更远可以此时物体位于相对相机0,0,-5相机位置在z轴更远正方体更小。这里说明一下视图坐标系如果按视图坐标系原点cameraTarget0,0,0世界坐标系的原点位置就是0,0,-3。上图相机观察方向可以自己补充相对的移动旋转等操作
glm::vec3 cameraPos glm::vec3(0.0f, 0.0f, -3.0f);
glm::vec3 cameraTarget glm::vec3(0.0f, 0.0f, 0.0f);
glm::vec3 cameraDirection glm::normalize(cameraPos - cameraTarget);对应的矩阵变化可以LookAt观察矩阵https://blog.csdn.net/qinze5857/article/details/130505925
投影Projection矩阵
投影矩阵为了把3D的渲染在2D的屏幕 第五章 OpenGL ES 基础-透视投影矩阵与正交投影矩阵
上面文章有参考该文章https://blog.csdn.net/Lindy_pass/article/details/132408991