书签 分享 收藏 举报 版权申诉 / 48
上传文档赚钱

类型虚拟现实Chapter2-2openGL.ppt

  • 上传人(卖家):罗嗣辉
  • 文档编号:2046182
  • 上传时间:2022-01-21
  • 格式:PPT
  • 页数:48
  • 大小:393KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《虚拟现实Chapter2-2openGL.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    虚拟现实 Chapter2 openGL
    资源描述:

    1、虚拟环境构建主要是应用虚拟环境构建主要是应用三维图形三维图形技术,技术,包括包括图形的构建图形的构建图形的显示图形的显示二、虚拟现实系统图形程序设计接口二、虚拟现实系统图形程序设计接口 OpenGL在虚拟现实系统中,模型是十分复杂的;在虚拟现实系统中,模型是十分复杂的;显示:显示:软件:软件: 3D图形应用程序图形应用程序硬件:硬件:3D图形加速卡图形加速卡接口:三维图形应用程序接口(接口:三维图形应用程序接口(3D API) 沟通沟通3D图形应用程序和图形应用程序和3D图形加速卡图形加速卡三维图形编程接口(三维图形编程接口(3D API)多达)多达50多种多种选择大公司和在图形应用方面获得广

    2、泛认选择大公司和在图形应用方面获得广泛认可的公司提供的三维可的公司提供的三维API引擎;引擎;OpenGLQuick-Draw 3DDirect3DOpenGL:SGI优点:适用于跨平台的应用开发,可运优点:适用于跨平台的应用开发,可运行在行在Unix、Windows XP、Windows NT、及、及Mac平台上平台上缺点:不能完成某些高级功能,如某些缺点:不能完成某些高级功能,如某些文件操作功能文件操作功能Quick-Draw 3D(QD3D):): Apple公司公司优点:跨平台的应用开发,具有某些高优点:跨平台的应用开发,具有某些高级功能;是面向对象的图形系统;级功能;是面向对象的图形

    3、系统;Direct3D: Microsoft1996年发布的三维年发布的三维API,是交,是交互式媒体技术家族互式媒体技术家族DirectX中的一员;中的一员;具有某些高级功能;具有某些高级功能;4.1 OpenGL简介什么是什么是OpenGLOpenGL的组成的组成OpenGL的工作流程的工作流程OpenGL的基本操作的基本操作OpenGL程序的基本结构程序的基本结构OpenGL优势:性能优越,计算环境广泛,个人计算机性能优越,计算环境广泛,个人计算机-工工作站作站-超级计算机;超级计算机;虚拟环境平台虚拟环境平台Open Inventor、World Tool Kit、Mulitgen C

    4、reatorVega是以是以OpenGL为基础开发的;为基础开发的;计算机界具有领导地位的计算机公司很多计算机界具有领导地位的计算机公司很多采用采用OpenGL作为三维图形应用程序设计作为三维图形应用程序设计界面,界面,OpenGL程序具有广泛的移植性;程序具有广泛的移植性;一、什么是一、什么是OpenGL?功能强大的图形库:可开发多种特殊视觉功能强大的图形库:可开发多种特殊视觉(如光照,纹理,透明,阴影)的三维图(如光照,纹理,透明,阴影)的三维图形;形;软硬件平台无关的跨平台三维图形引擎,软硬件平台无关的跨平台三维图形引擎,运行于多种窗口系统之上;运行于多种窗口系统之上;包含图元生成、投影

    5、、光照、光栅化等图包含图元生成、投影、光照、光栅化等图形显示过程所需的功能形显示过程所需的功能OpenGL的发展历史:的发展历史:前身是由前身是由SGI公司为其图形工作站开发的公司为其图形工作站开发的IRIS GL,是一个工业标准的三维图形软件接口。,是一个工业标准的三维图形软件接口。向其他平台移植时,开发了向其他平台移植时,开发了OpenGL有有GL的功能,而且是开放的,适用于多种硬件的功能,而且是开放的,适用于多种硬件平台及操作系统,平台及操作系统,用户可以创建出接近光线跟踪的高质量静止或用户可以创建出接近光线跟踪的高质量静止或动画的三维彩色图象,而且是要比光线跟踪算动画的三维彩色图象,而

    6、且是要比光线跟踪算法快一个数量级。法快一个数量级。二、二、OpenGL的组成的组成OpenGL库库包括包括115个基本函数个基本函数函数以函数以gl开头开头例:例:glColor3f(), glTranslate3f().完成图元的定义、几何变换、投影等功能完成图元的定义、几何变换、投影等功能OpenGL实用库实用库实用函数实用函数43个个函数以函数以glu开头开头例:例:gluPerspective();完成更高层的图形处理如曲线曲面的生成、完成更高层的图形处理如曲线曲面的生成、图象操作等图象操作等OpenGL辅助库辅助库包括函数包括函数31个个函数以函数以aux开头开头例:例:auxIni

    7、tWindow();主要用于窗口管理主要用于窗口管理主要特点主要特点OpenGL可以在网络上工作,即可以在网络上工作,即客户机客户机/服服务器务器型型客户机:显示图形客户机:显示图形服务器:运行图形程序服务器:运行图形程序客户机与服务器可以不同类型,但两者服从相客户机与服务器可以不同类型,但两者服从相同的协议。同的协议。OpenGL的的硬件无关性硬件无关性好的移植性好的移植性三、三、OpenGL基本工作流程基本工作流程(1)根据基本图形单元(点,线,多边形)根据基本图形单元(点,线,多边形)建立建立景物模型景物模型,并对景物模型进行数学描述。,并对景物模型进行数学描述。(2)在三维空间中)在三

    8、维空间中放置景物模型放置景物模型,并设置视点。,并设置视点。(3)计算模型中物体的)计算模型中物体的颜色颜色(直接定义或由光照(直接定义或由光照及纹理间接给出)及纹理间接给出)(4)光栅化光栅化,把模型数学描述和颜色信息转换至,把模型数学描述和颜色信息转换至屏幕上屏幕上在上述过程中,可执行在上述过程中,可执行消隐处理消隐处理等操作等操作四、四、OpenGL的基本操作的基本操作图元绘制图元绘制图元属性图元属性OpenGL变换(几何变换、投影变换、裁变换(几何变换、投影变换、裁剪变换、视口变换)剪变换、视口变换)OpenGL图形的描绘图形的描绘1 1、图元绘制、图元绘制图元的表示图元的表示点:三维

    9、坐标点:三维坐标(x,y,z)齐次坐标齐次坐标(x,y,z,1)线段:两个端点线段:两个端点多边形:顶点序列多边形:顶点序列矩形:左下角点、右上角点矩形:左下角点、右上角点绘制图元绘制图元定义一个顶点定义一个顶点void glVertex234sifdv(TYPE coords);例:例:glVertex3f(1.0,1.0,1.0);绘制函数要在绘制函数要在glBegin与与glEnd之间调用。之间调用。glBegin标志几何要素定义的开始,标志几何要素定义的开始,glEnd函数函数则标志结束一个几何要素的定义。则标志结束一个几何要素的定义。函数函数 void glBegin(Glenum

    10、mode);mode 的值见下表。的值见下表。 Mode 的值的值 解释解释GL_POINTS一系列独立的点一系列独立的点GL_LINES每两点相连成为线段每两点相连成为线段GL_POLYGON简单,凸多边形的边界简单,凸多边形的边界GL_TRIANGLES三点相连成为一个三角形三点相连成为一个三角形GL_QUADS四点相连成为一个四边形四点相连成为一个四边形GL_LINE_STRIP顶点相连成为一系列线段顶点相连成为一系列线段GL_LINE_LOOP顶点相连成为一系列线段,连接最后顶点相连成为一系列线段,连接最后一点与第一点一点与第一点GL_TRIANGLE_STRIP相连的三角形带相连的三

    11、角形带GL_TRIANGLE_FAN相连的三角形扇形相连的三角形扇形GL_QUAD_STRIP相连的四边形带相连的四边形带允许在允许在glBegin()与与glEnd()之间调用的之间调用的OpenGL命令命令 glVertex*();glColor*();glIndex();glNormal();glEvalCoord*();glCallList(),glCallLists();等2 2、图元的属性(、图元的属性(1/51/5)颜色颜色点点大小(缺省值为大小(缺省值为1)void glColor*();void glIndex();void glPointSize(GLfloat size)

    12、;线段线段线宽线宽 线型:连续线(缺省值)、点画线等线型:连续线(缺省值)、点画线等void glLineWidth(GLfloat width); void glEnable(GL_LINE_STIPPLE);void glLineStipple(GLint factor,GLushort pattern);例:例:patternfactor结果结果0 x00FF 10 x00FF 2 图元的属性(图元的属性(2/52/5)多边形多边形绘制方式:顶点、边界、填充绘制方式:顶点、边界、填充 void glPolygonMode(GLenum face,GLenum mode);face:GL_

    13、FRONT_AND_BACK(缺省值)GL_FRONTGL_BACKmode: GL_POINTGL_LINEGL_FILL(缺省值) 图元的属性(图元的属性(3/53/5)前向面与后向面前向面与后向面背面剔除背面剔除void glFrontFace(GLenum mode);mode: GL_CCW(缺省值)(缺省值)GL_CWvoid glCullFace(GLenum mode);mode: GL_FRONT GL_BACK(缺省值)(缺省值)GL_FRONT_AND_BACK 图元的属性(图元的属性(4/54/5)多边形填充方式多边形填充方式均匀填色方式均匀填色方式位图不透明方式位图不

    14、透明方式位图透明方式位图透明方式象素图方式象素图方式 void glEnable(GL_POLYGON_STIPPLE);void glPolygonStipple(const Glubyte *mask);mask: 位图位图 图元的属性(图元的属性(5/55/5)标记多边形边界标记多边形边界多边形法向多边形法向void glEdgeFlag(GLboolean flag); void glNormal3*(TYPE nx,TYPE ny,TYPE nz);void glNormal3*v(const TYPE *v); 3、OpenGL的变换的变换OpenGL对图象的变换与照相机拍摄物体过

    15、程相似,对图象的变换与照相机拍摄物体过程相似,分为四步:分为四步:支起三角架,把照相机放在场景中支起三角架,把照相机放在场景中OpenGL的取景变的取景变换换把要拍摄场景固定在拍摄物体上把要拍摄场景固定在拍摄物体上 OpenGL的模型变换的模型变换选择照相机镜头或调节焦距选择照相机镜头或调节焦距 OpenGL的投影变换的投影变换确定照片的大小,可以放大照片的某一部分确定照片的大小,可以放大照片的某一部分OpenGL的视见区变换的视见区变换 三维空间中的物体就可以表示为二维的平面物体三维空间中的物体就可以表示为二维的平面物体几何变换几何变换平移变换平移变换放缩变换放缩变换旋转变换旋转变换viod

    16、 glTranslatefd(TYPE deltax,TYPE deltay,TYPE deltaz); void glScalefd(TYPE sx,TYPE sy,TYPE sz); void glRotatefd(TYPE angle,TYPE x,TYPE y,TYPE z); 投影变换投影变换确定一个视景体(确定一个视景体(Viewing Volume),作用),作用有两个:有两个:确定物体投影到屏幕的方式,即是透视投影还是确定物体投影到屏幕的方式,即是透视投影还是正交投影。正交投影。确定从图象上裁剪掉哪些物体或物体的某些部分。确定从图象上裁剪掉哪些物体或物体的某些部分。投影变换包括

    17、透视投影和正交投影投影变换包括透视投影和正交投影透视投影透视投影 正射投影正射投影 4、OpenGL图形的描绘对整个三维模型进行绘制,得到三维景象,包括:对整个三维模型进行绘制,得到三维景象,包括:颜色模式的指定颜色模式的指定 OpenGL提供了两种颜色模式:提供了两种颜色模式:RGB模式和颜色模式和颜色索引模式;索引模式;光照处理光照处理光照模型光照模型明暗处理明暗处理材质材质材质颜色材质颜色材质定义材质定义纹理贴图纹理贴图定义纹理定义纹理控制滤波控制滤波说明映射方式说明映射方式绘制场景,给出顶点的纹理坐标和几何坐标绘制场景,给出顶点的纹理坐标和几何坐标特殊效果的实现特殊效果的实现融合:将两

    18、种颜色分量依据一定比例混合在一融合:将两种颜色分量依据一定比例混合在一起起反走样:锯齿反走样:锯齿雾化效果雾化效果OpenGL是一个丰富的三维图形函数库;是一个丰富的三维图形函数库;OpenGL编写的程序结构类似于用其他语言编写的程序结构类似于用其他语言编写的程序;编写的程序;比如在比如在C语言中调用语言中调用OpenGL的函数;的函数;五、五、OpenGL程序的基本结构程序的基本结构初始化:初始化: 设置设置OpenGL的状态开关,如颜色模式的状态开关,如颜色模式(RGBA或或ALPHA)的选择,是否作光照处理)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,(若有的话,还

    19、需设置光源的特性),深度检验,裁剪等等裁剪等等 这些状态一般都用函数这些状态一般都用函数glEnable(?), glDisable(?) 来设置,来设置,?表示特定的状态。表示特定的状态。设置观察坐标系下的取景模式和取景框大小设置观察坐标系下的取景模式和取景框大小,主要,主要用到三个函数:用到三个函数:void glViewport(left,top,right,bottom);设置屏幕上窗口大小设置屏幕上窗口大小,参数描述屏幕窗口四个角的坐标;,参数描述屏幕窗口四个角的坐标; void glOrtho(left,right,bottom,top,near,far);设置投影方式设置投影方式

    20、为正交投影(平行投影),其取景体积是一为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体个各面均为矩形的六面体; void gluPerspective(fovy,aspect,zNear,zFar);设置投影方式为透视投影,其设置投影方式为透视投影,其取景体积取景体积是一个截头锥体,是一个截头锥体,在这个体积内的物体投影到锥的顶点。在这个体积内的物体投影到锥的顶点。 使用使用OpenGL的库函数的库函数构造几何物体对象构造几何物体对象的数学描述的数学描述,包括点线面的位置和拓扑关,包括点线面的位置和拓扑关系,几何变换,光照处理等等。系,几何变换,光照处理等等。一个简单的绘图程序一个

    21、简单的绘图程序例程例程#include #include #include #include void main(void)OpenAWindow();/创建一个窗口创建一个窗口InitOpenGL();/初始化初始化OpenGLglColor3f(1.0,1.0,1.0);/设置当前颜色设置当前颜色glBegin(GL_POLYGON);/开始绘图开始绘图glVertex2f(-0.5,-0.5);glVertex2f(-0.5,0.5);glVertex2f(0.5,0.5);glVertex2f(0.5,-0.5);glEnd();glFlush();/强制输出强制输出KeepTheWi

    22、ndowOnScreenForAWhile(); /使窗口在屏幕上保留一会使窗口在屏幕上保留一会函数命名规范函数命名规范void glVertex3fv(Glfloat *vertex); 前缀前缀 后缀后缀前缀前缀gl ,glu,aux-该函数属于哪个函数库该函数属于哪个函数库后缀后缀2,3,4-参数的维数参数的维数b,s,l,f,d,ub,us,ui-参数的数据类型参数的数据类型v-以数组方式传递参数以数组方式传递参数函数名中的单词首写字母大写函数名中的单词首写字母大写创建第一个应用程序创建第一个应用程序(1/8)(1/8)初始化显示方式初始化显示方式例:例: 将显示方式置为单缓存、直接颜

    23、色方式将显示方式置为单缓存、直接颜色方式 void auxInitDisplayMode(GL_SINGLE|AUX_RGBA);void auxInitDisplayMode(Glbitfield mask); mask:GL_DOUBLE(GL_SINGLE)| AUX_RGBA(AUX_INDEX)| AUX_DEPTH |AUX_STENCIL|AUX_ACCUM创建第一个应用程序创建第一个应用程序(2/8)(2/8)创建窗口创建窗口初始化窗口的位置与大小初始化窗口的位置与大小 创建并显示窗口创建并显示窗口 void auxInitPosition(Glint x,GLint y,GL

    24、sizei width,GLsizei height);(x,y):窗口的原点:窗口的原点width,height:窗口的宽和高:窗口的宽和高 void auxInitWindow(GLbyte *title);title:窗口标题:窗口标题 创建第一个应用程序创建第一个应用程序(3/8)(3/8)初始化帧缓存(颜色缓存)初始化帧缓存(颜色缓存)指定初始颜色指定初始颜色清帧缓存清帧缓存 void glClearColor(GLclampf r,GLclampf g, GLclampf b,GLclampf a);缺省值:缺省值:(0.0,0.0,0.0,0.0) void glClear(GL

    25、_COLOR_BUFFER_BIT); 创建第一个应用程序创建第一个应用程序(4/8)(4/8)初始化深度缓存初始化深度缓存指定初始深度值指定初始深度值 清深度缓存清深度缓存void glClearDepth(GLclampd depth);缺省值:缺省值:0.0 void glClear(GL_DEPTH_BUFFER_BIT); 创建第一个应用程序创建第一个应用程序(5/8)(5/8)设置投影方式设置投影方式置投影方式为平行投影置投影方式为平行投影置投影方式为透视投影置投影方式为透视投影 void glOrtho(GLdouble left,GLdouble right,GLdouble

    26、bottom,GLdouble top,Gldouble near,GLdouble far); void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,Gldouble near,GLdouble far); 创建第一个应用程序创建第一个应用程序(6/8)(6/8)指定图元的颜色指定图元的颜色绘图绘图强制输出强制输出void glColor*(); void glFlush(void); 创建第一个应用程序创建第一个应用程序(7/8)(7/8)例程例程#include #include #include

    27、 #include void KeepTheWindowOnScreenForAWhile()_sleep(2000); void main(void)auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);auxInitPosition(0,0,500,400);auxInitWindow(Create Your Own Program);glClearColor(0.0,0.0,0.0,0.0);glClearDepth(0.0);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 创建第一个应用程序创建第一个应用程序(8/8)(8/8)glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0);glColor3f(1.0,1.0,1.0);glBegin(GL_POLYGON);glVertex3f(-0.5,-0.5,0.0);glVertex3f(-0.5,0.5,0.0);glVertex3f(0.5,0.5,0.0);glVertex3f(0.5,-0.5,0.0);glEnd(); glFlush();KeepTheWindowOnScreenForAWhile();

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:虚拟现实Chapter2-2openGL.ppt
    链接地址:https://www.163wenku.com/p-2046182.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库