浅谈opengl中坐标变换和简单漫游系统实现

浅谈opengl中坐标变换和简单漫游系统实现

ID:32751626

大小:56.33 KB

页数:5页

时间:2019-02-15

浅谈opengl中坐标变换和简单漫游系统实现_第1页
浅谈opengl中坐标变换和简单漫游系统实现_第2页
浅谈opengl中坐标变换和简单漫游系统实现_第3页
浅谈opengl中坐标变换和简单漫游系统实现_第4页
浅谈opengl中坐标变换和简单漫游系统实现_第5页
资源描述:

《浅谈opengl中坐标变换和简单漫游系统实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、浅谈OpenGL中坐标变换和简单漫游系统实摘要:本文介绍了OpenGL坐标变换技术,包括了OpenGL中使用全局坐标系和局部坐标系的变换区别。并介绍了一个简单漫游系统实现的方法。关键词:坐标变换;场景漫游中图分类号:TP391.7在三维绘图蓬勃发展的过程中,计算机公司推出了大量的三维绘图软件包。其中SGI公司推出的0penGL,作为一个性能优越的图形应用程序设计界面(API)异军突起,取得了很大的成就。它以高性能的交互式三维图形建模能力和易于编程开发,得到了Microsoft、IBM.DEC、Sun、HP等大公司的认同。因此,Open

2、GL已经成为一种三维图形开发标准,是从事三维图形开发工作的必要工具。在现实世界中,观察到的所有物体对象都具有三维特征。但是在计算机屏幕上只能表现二维图像。本文主要介绍,我们需要什么样的变换才能在二维屏幕上真实的反应我们的三维世界,并介绍如何才能在我们建成的三维世界中自由的畅游。1OpenGL中的坐标变换OpenGL中生成场景的变换过程类似于相机拍照一般分为四个步骤:视点变换:确定视点的位置、方向和向上方向。相当将相机固定在三角架上,并使之对准场景。模型变换:指定模型的位置和朝向,可以对模型进行平移、旋转和缩放。等同于将要拍摄的场景位于

3、取景框中合适的位置。在OpenGL中,视点变换与模型变换是相互关联的。移动相机和沿反方向移动物体可以获得相同的效果。因为视点变换和模型变换之间的对称性,分开考虑这两种变换的效果是不合理的。我们一般将视点变换与模型变换综合起来称为模型视点变换。进行模型视点变换时我们要先使用GL_MODEVIEW调用glMatrixMode函数,说明下面改变的是模型视点矩阵。可使用的函数有glTranslate(平移)、glRotate(旋转)、glScale(缩放),对于视点变换实用库函数还提供了更简单实用gluLookAt()函数。投影变换:指定视野

4、或视景体,确定那些物体在视野内以及在视野内的大小。相当于选择相机的镜头或调整放大倍数。另外还决定了物体如何投影到屏幕。其中OpenGL支持两种基本的投影方式:一种是透视投影,它类似于我们看东西的方式,使得物体越远越小;另一种是正交投影,它将物体直接映射到屏幕上,而不影响它们的相对大小。进行模型视点变换时我们要先使用GL_PROJCETION调用glMatrixMode函数,说明下面改变的是投影矩阵。glFrustum定义了透视投影,glOrtho定义了正交投影的相关参数。相对应的实用库函数提供的gluPerective、glu0rth

5、o2D函数更简单一些。视口变换:它指出了场景将被映射到什么样的屏幕区域中。它指定了图像占据的计算机屏幕区域。所以说,视口变换定义了照片的大小与位置。同时视口变换还定义了视景体的取景深度。他们相对应的函数分别是glViewport>glDepthRange。OpenGL中的变换环境可以分为两种:(1)全局固定坐标系。因为0penGL中的变换是通过变换矩阵完成的,所以变换顺序至关重要。例如对于一个初始位置在原点的物体来说,先绕Z轴旋转,再沿X轴平移;与先沿X轴平移再绕Z轴旋转所得到的结果是不同的。如果在全局固定坐标系中考虑问题,矩阵乘法直

6、接作用于模型。在上述代码中变换矩阵的依次为N、M、L,变换后的定点为NMLv,因此顶点变换为N(M(Lv))。矩阵乘法将以与指定顺序相反的顺序进行。(2)移动局部坐标系。将要变换的模型与一个局部坐标系捆绑在一起,所有的变换将该坐标系发生变化。使用这种方式时,代码中矩阵的顺序将是自然顺序。使用局部坐标系就要使用矩阵堆栈的。在堆栈中,执行当前变换的矩阵是栈顶矩阵。当执行glPushMatrix()复制当前矩阵,加入到栈顶时,在执行glPopMatrix()之前所有的模型创建及变换都要受其影响,即在glPushMatrix()建造的局部坐标

7、系中进行。2简单漫游系统的开发在某些系统中仅仅建立起模型世界是不够的,还要能够让观察者可以随意的改变自己的位置和视角,让其对自己感兴趣的物体更加仔细的观察,这就需要一个场景漫游系统。漫游系统的开发主要是指在视点漫游系统的开发,主要工作就是视点变换,理解漫游系统的简单工作程式对理解三维系统中的位置变换是非常有帮助的。通常而言,它主要包括两个方面的功能:2.1通过键盘控制视点的移动。视点位置的变换比较简单,我们分为两个步骤完成。第一是完成左右平移,因为我们视觉系统自身的调节在平时在观察物体时,它们通常都是直立在我们的视野中的。所以左右平移

8、只在XZ平面上进行。在上述代码中m_vPosition代表视点的位置,m_vStrafe是一个标准化矢量,存储了视点的左右方向。m_vView存储的是视点的方向。其中上坡的情况可以交给碰撞监测来处理。第二是完成前后平移,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。