基于Opengl的屏幕对象拾取本科毕业设计.docx
- 文档编号:646564
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:17
- 大小:265.13KB
基于Opengl的屏幕对象拾取本科毕业设计.docx
《基于Opengl的屏幕对象拾取本科毕业设计.docx》由会员分享,可在线阅读,更多相关《基于Opengl的屏幕对象拾取本科毕业设计.docx(17页珍藏版)》请在冰豆网上搜索。
基于Opengl的屏幕对象拾取本科毕业设计
(此文档为word格式,下载后您可任意编辑修改!
)
论文题目:
基于OpenGL的屏幕对象拾取
毕业论文(设计)原创性声明
本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:
日期:
毕业论文(设计)授权使用说明
本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:
指导教师签名:
日期:
日期:
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
3)其它
目录
摘要1
Abstract2
1绪论3
1.1课题的目的和意义3
1.2拾取技术国内外研究3
1.3本论文研究主要内容3
2基于OpenGL+MFC的建模基础5
2.1OpenGL概括5
2.2OpenGL渲染管线过程5
2.2.1顶点变换6
2.2.2图元组装6
2.2.3图元处理6
2.2.4片元处理6
2.2.5光栅化操作6
2.3MFC概述6
2.4MFC特点7
2.4.1封装7
2.4.2继承8
2.4.3虚拟函数和动态约束8
2.5应用程序的构成8
2.6基于OpenGL+MFC的三维模拟的编程环境配置9
3拾取技术12
3.1基于射线求交拾取技术12
3.1.1判断线段和包围盒的相对位置12
3.2基于GPU的重绘式拾取技术14
3.3各种拾取技术比较16
4系统的设计及实现18
4.1系统的选择机制18
4.1.1进入选择模式之前18
4.1.2获取当前选择模式18
4.1.3退出选择模式20
4.1.4拾取20
4.2拾取结果截图21
5结论与展望25
5.1结论25
5.2展望25
参考文献26
致谢28
摘要
屏幕对象的拾取是计算机图形处理系统中一个重要的功能,在许多情况下,计算机图形处理系统不仅要绘制图形,而且要允许操作者能够通过输入设备(通常是鼠标)操纵屏幕上的物体(标识、移动和修改)。
有时还需要获取物体上点的空间坐标或测量物体的几何特性如距离、角度、半径等,这些操作都需要以拾取作为实现的基础。
OpenGL为了解决拾取问题,提供了一种基于名字堆栈和命中记录的选择机制。
在OpenGL中,拾取物体是利用拾取矩阵和投影变换,将拾取的范围限制在鼠标热点的有效区中,一旦触发鼠标事件就进入选择模式并将有效区初始化,最后利用拾取矩阵拾取有效区内的物体。
有效区的定义由glPick2Matix()函数来完成。
一旦拾取成功,就以记录的形式返回与拾取物体相关的信息,并生成一个记录表示一个物体被命中。
这种物体拾取方法非常简单,不需要写很多代码。
在使用OpenGL工具包开发图形处理系统时,物体的拾取有多种方法,其中包括OpenGL提供的选择机制、射线拾取法、重绘式拾取法等。
本文采用OpenGL本身提供的选择机制来拾取对象,突出OpenGL工具包在屏幕对象的拾取方面的优势。
关键词:
OpenGL;计算机应用;拾取算法
Abstract
Inmostcases,oneimportantfeatureofgraphicsprocessingsystemispicking,whichallowuserstoselectobjectsbymouse,andtomodifythetheirattributes,suchasgemetrymeshorangleandsoon.Inordertosolvetheproblem,pickOpenGLprovidesanameonthestackandtheOpenGLandpickobjectisusingthelootmatrixandprojectiontransformation,andwillgatherinthelimitsofthemouse,effectiveonceenteredthemouseeventtriggermodechoiceandwillbeeffectivearea,finallyusinginitializationgleanedmatrixpickobjectsintheareaofeffective.ThedefinitionofeffectiveglPick2Matix()functiontofinish.Oncepicksuccess,toreturntopicktherecordobjectrelevantinformation,andtocreatearecord,saysanobjecttobetheuseofgraphicsprocessingsystemdevelopmentOpenGLtoolkitobjects,pickavarietyofmethods,includingOpenGLprovidechoicemechanism,raypick,redrawntypegathermethod,etc.BasedonthemechanismofOpenGLitselftoprovidechoicepickup,outstandingOpenGLtoolkitobjectsinthescreenintheobject.
Keywords:
OpenGL;computerapplication;picking
1绪论
目前许多优秀的图形工具能为我们绘制惟妙惟肖的虚拟现实场景,在面对这些场景时候我们除了欣赏之外更多的是希望能与之互动,做为编程人员可以使用代码轻松的重新构造场景,但对于终端用户而言,他们也希望自己也能对造场景进行一些操作,如添加,删除等等。
对于这些操作而言,首先我们要做的是能让用户使用鼠标来选择他所希望操作的对象,这就是本文要讨论的一个重点:
拾取,这是一种在许多交互性程序中有基础地位的操作,是对屏幕中对象进行定位,并确定所选择的是哪个物体。
然而该操作给我们提出了一些难题,首先,需要对对象进行届定。
其次,必须对“拾取目标”进行定义。
这就需要终端用户确定单击的位置是构成对象的图元上,还是对象附近的位置以及考虑如果选取点落在两个以上物体交集部分如何处理等等问题,本文利用了OpenGL中的选择模式进行有效的对象判别和拾取。
1.1课题的目的和意义
图形对象的拾取是计算机图形处理系统中一个重要的功能,很多图形系统需要用户通过输入设备与系统交互,如移动、旋转某个物体,或查询某个物体的状态信息,需要通过拾取来确定景中的操作对象。
快速可靠的拾取被广泛地运用于各种系统中,如实时图形系统、虚拟现实、游戏和CAD系统等方面,拾取操作己成为这些系统的重要部分,它在计算机建模软件尤其重要,能够通过拾取操作对模型进行局部修改和编辑,提高建模系统的灵活性和适用性。
随着计算机软硬件的快速发展,人们对实时系统的交互的实时性要求也越发苛刻,而且三维场景复杂度也日益提高,这就要求系统提供快速的拾取操作。
因此,高效的拾取算法能够决定拾取操作快与慢的关键所在,从而开发高效的拾取算法已成为当今一个的课题研究。
1.2拾取技术国内外研究
随着网络科技越来越发达,拾取操作也越来越方便了,有的只要鼠标点点就可以。
而拾取操作的关键是拾取算法。
到目前为止,拾取算法大致上可以分三种。
第一种是基于射线求交的拾取技术,1992年,MarkSegul,CarlKorobkin,RolfvanWidenfelt等人首次采用了基于射线求交的拾取技术原理实现了对衣服的拾取[1];1998年MichaelDeering,StepGraphicsLibrary)是个定义了一个跨编程语言、跨平台的编程软件接口的规格,该接口包括了大约250个不同的函数(其中核心OpenGL大约包括200个函数,另外还有50个左右位于OpenGL工具函数库),可以用这些函数指定物体和操作,创建交互性三维应用程序。
它是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库,Opengl用于三维图象(二维的亦可)。
OpenGL的设计目标就是作为一种流线型的、独立于硬件的接口,可以在许多不同的硬件平台上实现。
为了实现这个目标,OpenGL并未包含用于执行窗口任务或者获取用户输入之类的函数。
反之,必须通过窗口系统控制所使用的特定硬件。
类似地,OpenGL并没有提供用于描述三维物体模型的高层函数。
这类函数可能允许你指定相对较为复杂的形状,例如汽车、身体的某个部位、飞机或分子等。
在OpenGL中,必须根据少数几个基本几何图元(geometricprimitive)(如点、直线和多边形)来创建你所需要的模型。
当然,我们可以在OpenGL上创建能够提供这些特性的高级函数库。
OpenGL实用函数库(GLU)提供了许多建模特性,例如二次曲面以及NURBS曲线和表面。
GLU是所有OpenGL实现的一个标准组成部分。
1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了WindowsNT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。
1995年OpenGL的1.1版本面市,该版本较1.0性能提高许多,并加入了一些新的功能。
1997年,Windows95下3D游戏的大量涌现,游戏开发公司迫切需要一个功能强大、兼容性好的3D图形接口,而当时微软公司自己的3D图形接口DirectX3.0功能却是很糟糕。
因而以制作《雷神之锤》等经典3D射击游戏而著名的id公司同其它一些游戏开发公司一同强烈要求微软在Windows95中加入对OpenGL的支持。
微软公司最终在Windows95的OSR2版和后来的Wi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Opengl 屏幕 对象 拾取 本科 毕业设计