基于opengl的三维建模技术.pptVIP

  • 16
  • 0
  • 约3.43千字
  • 约 30页
  • 2019-05-07 发布于江西
  • 举报
基于OpenGL的三维 建模技术 王 鹏 目 录 1 . 三维显示的基本方法 2. OpenGL基本原理 3. OpenGL编程的基本方法 1 . 三维显示的基本方法 三维显示就是将立体图像以平面投影图或透视图的形式在平面上表现出来的过程。 三维显示的理论基础是计算机图形学。 实现的主要方法: DirectX 和OpenGL两个函数库。 DirectX是微软独自开发的API。DirectX由显示部分、声音部分、输入部分和网络部分四大部分组成。 OpenGL “开放图形库”,由SGI公司开发,主要针对3D图像处理。它与硬件无关,并且独立于操作系统之外。 相比之下,OpenGL更容易被初学者掌握。 三维显示在地球物理方面的应用: 三维可视化软件有:Landmark EarthCube模块和 GeoProbe模块,GeoFrame,Paradigm VoxelGeo等等。实际上,三维显示功能已经成为大型地学软件不可或缺的一部分。 2. OpenGL基本原理 在实际摄影拍摄时,我们可以改变拍摄位置和角度,相机的焦距,改变景物的位置等等。 在OpenGL中,提供对应的函数来实现这些功能。这些函数(也称为变换)是通过矩阵计算来实现的。同时,OpenGL是一个状态机,设置了某种状态而不改变,OpenGL将一直保持这个状态。 投影变换 由于显示器只能用二维图象显示三维物体,因此就要靠投影来降低维数。 投影变换的目的就是定义一个视景体,使得视景体外多余的部分裁剪掉,最终绘制图像的只是视景体内的有关部分。投影包括透视投影(Perspective Projection)和正交投影(Orthographic Projection)两种。 透视投影 void gluPerspective(fovy,aspect,zNear,zFar) 正交投影 void glOrtho(left,right,bottom,top,near,far) 建立模型 任何复杂的图形都是由基本的图元点、线和多边形组成的。 glBegin(…); ……//描述一组顶点,用于建构某种几何对象 glEnd(); 模型的平移与旋转 平移变换 void glTanslate{fd}(TYPE x, TYPE y, TYPE z); 旋转变换 void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z); 需要特别指出的是,实际的变换顺序与指定的顺序是相反的。 光 照 为了增强模型的立体效果,可以给场景加入光源。 上色和纹理贴图 3. OpenGL编程的基本方法 1. 利用GLUT实现 2. 利用MFC实现 3. 高级图像库 1 利用GLUT实现 因为 OpenGL独立于任何窗口系统和操作系统之外。所以OpenGL不能直接用来打开窗口以及从键盘或鼠标读取事件。GLUT库简化Windows窗口操作,它提供了非常简单的方法来实现窗口操作。 int main(int argc, char** argv) { glutInit(argc, argv);//初始化GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(640, 480); //设置窗口大小 glutInitWindowPosition(0, 0);//设置窗口起始位置 glutCreateWindow(Basic);//设置窗口标题 init();//初始化OpenGL glutDisplayFunc(display);//设置显示回调函数 glutReshapeFunc(reshape);//设置重绘回调函数 glutKeyboardFunc(keyboard);//设置键盘回调函数 glutMainLoop();//进入主循环 return 0; } 2 利用MFC实现 MFC是一种应用程序框架。我们可以利用它非常快速的开发Windows程序。简单的说,MFC是Win API与C++的结合。它具有完善的消息处理机制。 3 高级图形库 GLUT和Open Inventor对比 汇报完毕,请批评指正 宝山壁画 宝山壁画是引人注目的昂贵文物。此壁画发现于阿鲁科尔沁旗东沙布乡境内。1994年列为“全国十大考古新发现”之一。宝山壁画中最引人

文档评论(0)

1亿VIP精品文档

相关文档