OpenGL入门(四)-- OpenGL坐标系与坐标变换
1个回答
展开全部
上一篇文章《 OpenGL入门(三)-- OpenGL坐标系解析与坐标变换 》,我们大概了解了OpenGL坐标系的一些常用概念认知,现在,我们继续深入介绍OpenGL坐标系的相关知识与坐标系的几何变换,让我们继续挖坑(入坑)吧。本文内容来自于:
为啥要转换到眼坐标系呢?
可以这样理解,通过前面的MODEVIEW变换,这个世界坐标系中的场景已经绘制好了。这时候我们还不能看到场景哦,因为我们的观察位置还没定呢,而且如果我们眼睛(照相机)的位置不同,那么观察物体的角度则不同,那看到的场景的样子肯定也不同,所以要有这一步,把场景与我们的观察位置对应起来。
默认情况下,眼坐标系与世界坐标系也是重合的。使用函数 gluLookAt()则可以指定眼睛(相机)的位置和眼睛看向的方向。该函数的原型如下:
函数参数中:
这个GL_PROJECTION矩阵定义了视景体( viewing volume),即确定哪些物体位于视野之内,位于视景体外的对象会被剪裁掉。除了视景体,投影变换还定义了顶点是如何投影到屏幕上的,是透视投影(perspective projection)还是正交投影(orthographic projection)。
透视投影似于日常生活看到的场景,远处物体看起来小,近处看起来大。使用透视投影函数glFrustum()和gluPerspective().
总的来说,OpenGL中的坐标处理过程包括模型变换、视变换、投影变换、视口变换等过程,三维物体的显示过程(OpenGL坐标变换全局过程)如下:
OpenGL中采用方式2的观点来解释视变换。再举一个例子,比如,一个物体中心位于原点,照相机也位于初始位置原点,方向指向-Z轴。为了对物体的+Z面成像,那么必须将照相机从原点移走,如果照相机仍然指向-Z轴,需要将照相机沿着+Z轴方向后退。通过在世界坐标系中指定相机的位置,指向的目标位置,以及viewUp向量来构造一个相机坐标系,通过视变换矩阵将物体坐标由世界坐标系转换到相机坐标系。
--
投影方式决定以何种方式成像,投影方式有很多种,OpenGL中主要使用两种方式,即透视投影(perspective projection)和正交投影( orthographic projection)。
视变换是将规范化设备坐标(NDC)转换为屏幕坐标的过程,如下图所示:
最后我们来看一下坐标变换过程从坐标计算角度的示意图:
--
总结:从上面的内容,我们可以了解了OpenGL坐标系和坐标变换的一些原理和关系,篇幅有点长,一定要坚持下去。下一篇文章尽请期待。。。
--
系列连载
为啥要转换到眼坐标系呢?
可以这样理解,通过前面的MODEVIEW变换,这个世界坐标系中的场景已经绘制好了。这时候我们还不能看到场景哦,因为我们的观察位置还没定呢,而且如果我们眼睛(照相机)的位置不同,那么观察物体的角度则不同,那看到的场景的样子肯定也不同,所以要有这一步,把场景与我们的观察位置对应起来。
默认情况下,眼坐标系与世界坐标系也是重合的。使用函数 gluLookAt()则可以指定眼睛(相机)的位置和眼睛看向的方向。该函数的原型如下:
函数参数中:
这个GL_PROJECTION矩阵定义了视景体( viewing volume),即确定哪些物体位于视野之内,位于视景体外的对象会被剪裁掉。除了视景体,投影变换还定义了顶点是如何投影到屏幕上的,是透视投影(perspective projection)还是正交投影(orthographic projection)。
透视投影似于日常生活看到的场景,远处物体看起来小,近处看起来大。使用透视投影函数glFrustum()和gluPerspective().
总的来说,OpenGL中的坐标处理过程包括模型变换、视变换、投影变换、视口变换等过程,三维物体的显示过程(OpenGL坐标变换全局过程)如下:
OpenGL中采用方式2的观点来解释视变换。再举一个例子,比如,一个物体中心位于原点,照相机也位于初始位置原点,方向指向-Z轴。为了对物体的+Z面成像,那么必须将照相机从原点移走,如果照相机仍然指向-Z轴,需要将照相机沿着+Z轴方向后退。通过在世界坐标系中指定相机的位置,指向的目标位置,以及viewUp向量来构造一个相机坐标系,通过视变换矩阵将物体坐标由世界坐标系转换到相机坐标系。
--
投影方式决定以何种方式成像,投影方式有很多种,OpenGL中主要使用两种方式,即透视投影(perspective projection)和正交投影( orthographic projection)。
视变换是将规范化设备坐标(NDC)转换为屏幕坐标的过程,如下图所示:
最后我们来看一下坐标变换过程从坐标计算角度的示意图:
--
总结:从上面的内容,我们可以了解了OpenGL坐标系和坐标变换的一些原理和关系,篇幅有点长,一定要坚持下去。下一篇文章尽请期待。。。
--
系列连载
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询