了解OpenGL中的坐标系

简介: OpenGL中的坐标系

分类


OpenGL中坐标系主要分为两大类


  • 右手系
  • 左手系


如图所示

微信图片_20220513160406.png右手系需要遵循右手法则,左手系需要遵循左手法则

微信图片_20220513160518.png

左右手法则


常用坐标系


而我们常用的坐标系主要有以下几种


  • 世界坐标系
  • 物体坐标系
  • 惯性坐标系
  • 照相机坐标系
  • NDC 标准化设置坐标
    各个坐标系相应的说明如图所示

微信图片_20220513160721.png


物体、惯性、世界三个坐标系之间的关系


在物体成像到屏幕的过程中,需要经过这三个坐标系的相互转换,惯性坐标系是物体坐标系向世界坐标系转换的”重点“


  • 物体坐标系仅通过旋转即可转换到惯性坐标系
  • 惯性坐标系仅通过平移即可转换到世界坐标系


如图所示


微信图片_20220513161041.png


物体成像至屏幕需要经历的坐标变换


即 3D物体转换成2D图像的变化过程


  • 模型变换,涉及模型矩阵:物体坐标 --> 世界坐标
  • 视变换(例如平移,旋转,缩放等),涉及观察者矩阵:世界坐标 --> 摄像机坐标
  • 投影变换,涉及投影矩阵:摄像机坐标 --> 裁剪坐标
  • 透视除法: 裁剪坐标 --> NDC
  • 视口变换:NDC --> 屏幕坐标

微信图片_20220513161323.png


在这个变换过程中,属于OpenGL定义的坐标系有3个


  • 裁剪坐标系
  • 规范化设备坐标系,即NDC
  • 屏幕坐标系


属于用户自定义坐标系同样也有3个


  • 物体坐标系
  • 世界坐标系
  • 照相机坐标系


其中下列的变换操作是用户可以自定义变换的,即可以由用户根据需要自行制定,这些变换使在顶点着色器中完成


  • 模型变换 Model
  • 视变换 View
  • 投影变换 Projection


以下两种是属于OpenGL 中的变换,即由OpenGL自动执行,在顶点着色器处理后的阶段完成


  • 透视除法
  • 视口变换


相关文章
OpenGL学习笔记(一):环境搭建、三维空间坐标系理解以及OpenGL的基本使用
OpenGL学习笔记(一):环境搭建、三维空间坐标系理解以及OpenGL的基本使用
OpenGL学习笔记(一):环境搭建、三维空间坐标系理解以及OpenGL的基本使用
opengl 教程(13) 摄像机坐标系
原帖地址:http://ogldev.atspace.co.uk/www/tutorial13/tutorial13.html       在前面的教程中,我们都是默认摄像机坐标在三维坐标的原点,本篇教程我们开始讨论把摄像机放在三维空间的任意位置,从而更方便的从不同视角观察物体。
828 0
OpenGL 坐标系
OPENGL坐标系可分为:世界坐标系和当前绘图坐标系。 世界坐标系以屏幕中心为原点(0, 0, 0)。
803 0
|
6月前
|
XML 小程序 Java
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
124 0
|
缓存 C++
Opengl ES之FBO
Opengl ES连载系列
150 0
|
存储 编解码 算法
Opengl ES之LUT滤镜(上)
Opengl ES之连载系列
453 0
|
数据安全/隐私保护 开发者
OpenGL ES 多目标渲染(MRT)
Opengl ES连载系列
318 0
|
数据安全/隐私保护 索引
Opengl ES之纹理数组
Opengl ES连载系列
257 0
|
数据安全/隐私保护
Opengl ES之水印贴图
Opengl ES之连载系列
147 0
|
Java 数据安全/隐私保护 Android开发
Opengl ES之矩阵变换(下)
Opengl ES连载系列
129 0