基于OPENGL三维拾取技术研究

上传人:无*** 文档编号:45950231 上传时间:2021-12-09 格式:DOC 页数:9 大小:93.50KB
返回 下载 相关 举报
基于OPENGL三维拾取技术研究_第1页
第1页 / 共9页
基于OPENGL三维拾取技术研究_第2页
第2页 / 共9页
基于OPENGL三维拾取技术研究_第3页
第3页 / 共9页
点击查看更多>>
资源描述
基于OpenGL三维拾取技术研究刘彬 孙永 高明 马克 李晓诗(解放军信息工程大学测绘学院 河南郑州陇海中路66号 450052 )【摘要】在OpenGL环境中,三维场景是通过二维平面表现的,本文通过对这种表现原理的研究,介绍了“射线拾取法”和“包围盒法”两种算法,分析了其实现的原理,并介绍了相关的核心算法。在此基础之上,又提出了一种适用于基于DEM的三维系统的改进算法,把三维空间中的拾取问题转化到了二维平面上,大大简化了拾取的抽象性和复杂性,提高了拾取的效率,更易于理解和实现。【关键字】DEM OpenGL 拾取 光标投影模型1. 引言在三维图形系统中,现实世界中的物体要依次通过模型视点变换,投影变换和视口变换才影射到屏幕窗口上的,而对物体的拾取操作,其实就是在二维屏幕上对三维空间中的物体的拾取技术。2. 射线拾取技术射线拾取算法是判断由视点发出经屏幕光标的射线是否与目标物体相交。其具体的实现实现方法如下所示:(1) 确定射线的位置及方向,可以通过取得射线与远近两个裁减面的交点来确定。(2) 判断射线与拾取目标是否有交点,因为在射线上,任意一点可以表 示为单位向量(L)与模(len)的乘积,所以交点可以表示为:X= P+L*len ;又因为三角形内的任意一点都可以用变量u、v和其三个顶点坐标来确定,其中0u1 0v1、,0u+v1。设三个顶点为T1,T2,T3则:X= T1 + u*( T2T1) + v*( T3 T1) ;由此可以得出PT1 =( L*len) + u*( T2T1) + v*( T3 T1) ,即方程组:(-L.x)*len +( T2.x- T1.x)*u + (T3.x T1.x )*v = P.x T1.x(-L.y)*len +( T2.y- T1.y)*u + (T3.y T1.y )*v = P.y T1.y(-L.z)*len +( T2.z- T1.z)*u + (T3.z T1.z )*v = P.z T1.z这是一个线性方程组,根据克拉姆法则,当满足条件:0v1,0u0, ,0u+v1 和【L,T2T1,T3T1】不为零则射线和三角形相交。具体的编程实现可以参考Micarosoft公司提供的相关算法,由于篇幅有限,在此就不做详细的说明。3. 包围盒技术31 包围盒技术的原理由于在具体的拾取操作中,我们并不需要非常精确的拾取目标物体上的某一点,而是对其选中后进行如平移、旋转、缩放等编辑工作,所以可以牺牲一部分拾取的精确度,而提高其效率。包围盒技术是基于射线拾取技术的一种更加简单高效的拾取方法,它对每个三维场景中需要进行拾取操作的对象设定一个包围域,这个包围域是能够包围对象的最小矩形,该矩形边与坐标轴是对齐的,其左下顶点的x 、y 、z坐标值为实体所有顶点相应坐标值的最小值,其右上顶点的坐标值为实体所有顶点相应坐标值的最大值。由此可以大大降低实现拾取功能的复杂性。32包围盒技术的实现方法如今比较流行的一种包围盒的算法是在视点和鼠标点确定的直线上,找出以近裁减面交点为起点指向远裁减点的向量,求向量各分量和离起点最近的三个包围盒侧面所在平面的交点,如果各分量与平面的交点都在包围盒侧面上或者在包围盒内且在各分量上,则线段wnearwfar和包围盒相交(本文中我们把线段与包围盒相交和线段在包围盒内这两种情况统称为相交)。判断线段与包围盒相对位置的具体步骤如下5:(1) 判断起点wnear是否在包围盒内,如果在盒内,则线段wnearrwfar和包围盒相交,判断结束;如果不在盒内,则记下该包围盒离起点wnear最近的三个侧面,这三个侧面必定共点且相互垂直;(2) 过起点wnear向各侧面做垂线,得到三个垂足,连接点wnear和各垂得到三个向量A1 、A2 、A3,并求A1 、A2 、A3和向量wnearrwfar各相应分量的比值ti=Aiwnearrwfar (i=1,2,3)。如果wnearrwfar的某个分量为零,则比值取一1。取t1、t2、t3中的最大值为tmax,如果tmax1,则wnearrwfar和包围盒不相交,判断结束;4. 基于DEM的三维拾取方法基于DEM的三维图形系统中,地面模型是在某一参考平面上构建均匀网格,并在的各顶点坐标中加入高度坐标Z得到的,它与参考平面具有固定的位置关系。系统中的各种模型的都与DEM数据有着固定的位置关系,即与参考也有着固定的位置关系。在进行三维漫游的过程中,虽然改变了视点和透视窗口,但这种相对位置关系是保持固定的,我们可以利用这种关系把三维空间中的拾取问题转化到参考平面上,通过比较参考平面上光标投影和实体包围盒投影的位置关系判断是否进行拾取,其中参考平面的高度Z可以通过人机交互设置。4.1 拾取原理及实现4.1.1模型及空间实体模型与参考平面的位置关系LWZWXWYOL 图:1-1 世界坐标系下参考平面与DEM模型及实体模型的位置关系如上图1-1所示,世界坐标系下,在DEM构建的地形模型中,平面L为参考平面,K为三维空间中某模型的矩形包围盒,它的每个边分别与坐标轴平行4。 参考平面在构建时亦是与坐标平面平行的,这里设置为平面L(WZ=0);平面L平行于L ,K为K与L的交平面,显然K为矩形,且其四个顶点坐标的XY值与包围盒上对应点的XY值相同。4.1.2 建立光标在参考平面上的投影模型光标通过鼠标控制在二维屏幕坐标系上运动。在实现拾取操作时,传统的算法是通过控制具有二维属性的光标实现对三维物体的拾取,拾取的实现算法比较复杂,结合DEM模型的特点,可以在三维世界坐标系中构建二维光标的投影模型,把对二维光标三维化,如图1-2所示。其实原理如下:l 找到从视点O出发经光标的射线与视景体远近裁减面ABCD和A,B,C,D,的交点P,P,将问题转化到三维世界坐标系中。l 视景体内确定一条以远近裁减面交点为端点的线段P P,l 计算线段和参考平面的交点M,既为光标M在参考平面上的投影点, 可以通过交互实现对参考平面高度Z的控制,也即实现了投影点在Z方向上的自由度。0M,ML图:1-2 透视场景、屏幕及参考面在DEM构建的地形模型上,我们希望光标的投影模型是在地形表面上移动的,从而达到对地表模型(如树木、房屋、车辆)的拾取操作。本文给出一种OpengGL环境中的建立光标投影模的算法,以供参考:(1) 调用OpenGL实用库提供的gluUnProject函数得到从视点发出经光标点M的射线与远近裁减面的交点P(Wx,Wy,Wz)P,(Wx,Wy,Wz,)。gluUnProject函数具体使用方法如下所示: gluUnProject(GLdouble)xpos , (GLdouble)ypos , 1.0 , mvmatrix , projmatrix , viewport , &Wx , &Wy , &Wz);xpos 和ypos 是以屏幕左下角为原点的屏幕坐标,1.0代表返回zbuffer为1.0处(远剪切面交点)的世界坐标(为0.1则表示进裁剪面交点),mvmatrix为视矩阵,通过函数glGetDoublev(GL_MODELVIEW_MATRIX , mvmatrix)得到,projmatrix为投影矩阵,通过函数glGetDoublev(GL_PROJECTION_MATRIX , projmatrix)得到,viewport为视口,通过函数glGetIntegerv(GL_VIEWPORT , viewport)得到,剩下的Wx、Wy、Wz 就是我们要得到的世界坐标系中的交点坐标。(2) 如图2-3所示,根据交点P P,得到向量F(WxWx,WyWy,WzWz,),并计算其与参考平面Wz =0的交点M,的x,y分量,计算公式如下,M,x= Wx+( Wx,Wx)* abs(Wz) /(abs(Wz)+abs(Wz,)M,y= Wy+( Wy,Wy)* abs(Wz) /(abs(Wz)+abs(Wz,)(3) M,z的值可以通过M,x 和M,y在参考平面上计算得出M,点所在的DEM网格,然后通过查询网格四点高程进行插值运算求得。如此,便可以得到光标在在地形表面的投影模型。4.1.3 拾取判断经过上述步骤,对是否拾取目标物体的判断已经变的非常容易了,我们只需在参考平面上判断光标投影模型的(X,Y)值与包围盒在参考平面上投影的位置关系即可。4.2 存在的问题及改进如图2-4所示,上面介绍的方法存在以下两个方面的不足:(1) 光标投影模型的运动速率和鼠标的移动速率不匹配, 当光标在屏幕上移动等距的单位时,其在参考平面上的投影移动的距离是不同的,从而导致了投影模型运动的不均匀性,这对我们用鼠标进行控制增加了难度。视点O1-4 光标与其投影模型运动情况的对比图1-4 光标与其投影模型运动情况的对比(2) 当从视点经光标的射线与参考平面的交角等于零时,就会出现没有交点或有无数交点两种情况,这都不是建立投影模型所预期的,而这种情况因为需要进行场景漫游而不可避免。基于以上考虑,本文总结出一种改进算法,其思想就是把对光标绝对位置在参考平面上的投影转化为光标相对位置在参考平面上的投影。(1) 确定光标投影模型的初始位置,根据人们观察习惯,将光标投影模型的初始位置设置在视口接近底步中央位置,其在世界坐标系下的坐标位置通过调用gluUnProject函数来确定从视点发出经屏幕中央的射线与远近裁减面的交点,并求得其与参考平面的交点,即为光标投影模型的初始位置(2) 在响应鼠标滑动信息的函数OnMouseMove()中设置全局变量(Last_x,Last_y);记录每次函数响应时鼠标的位置信息(Mouse_x,Mouse_y),通过比较前后两次函数响应的鼠标位置关系来确定光标投影模型的移动。使用这种方法,可以避免应用绝对位置投影模型时出现的模型移动不均匀的现象,也不会出现因为由视点和光标确定的射线同参考平面平行而无法建立投影模型的问题了。5. 总结在基于DEM的三维图形系统中,对模型的拾取一般都是为了实现模型的选中,进而达到修改模型的各种属性信息的目的(如纹理,位置,形状),所以对拾取的精度要求并不高。本文所介绍的拾取方式利用基于DEM的三维图形系统的几何特点,牺牲拾取的精度,简化了拾取算法,提高了拾取的效率,对基于DEM的三维图形系统而言,是一种很好的选择。参考文献1. Alan Watt、Fabio Policarpo. 3D Games real-time Rendering and Software Technology 2. Edward Angel. 交互式计算机图形学基于OpengGL的自顶向下的方法. 清华大学出版社3. Dave Shreiner、Mason Woo,Jackie Neider、Tom Dives. OpenGL编程指南(第四版).人民邮电出版社4. 姚继权、李晓豁. 计算机图形学人机交互中三维拾取方法的研究. 工程设计学报,2004(4)5. 王剑、谭建荣、陆国栋. 三维场景中图形对象的拾取方法. 计算机技术应用,2004(7)更多测绘论文请登录测绘网论文频道查询:http:/ 我的大学爱情观1、什么是大学爱情:大学是一个相对宽松,时间自由,自己支配的环境,也正因为这样,培植爱情之花最肥沃的土地。大学生恋爱一直是大学校园的热门话题,恋爱和学业也就自然成为了大学生在校期间面对的两个主要问题。恋爱关系处理得好、正确,健康,可以成为学习和事业的催化剂,使人学习努力、成绩上升;恋爱关系处理的不当,不健康,可能分散精力、浪费时间、情绪波动、成绩下降。因此,大学生的恋爱观必须树立在健康之上,并且树立正确的恋爱观是十分有必要的。因此我从下面几方面谈谈自己的对大学爱情观。2、什么是健康的爱情:1) 尊重对方,不显示对爱情的占有欲,不把爱情放第一位,不痴情过分;2) 理解对方,互相关心,互相支持,互相鼓励,并以对方的幸福为自己的满足; 3) 是彼此独立的前提下结合;3、什么是不健康的爱情:1)盲目的约会,忽视了学业;2)过于痴情,一味地要求对方表露爱的情怀,这种爱情常有病态的夸张;3)缺乏体贴怜爱之心,只表现自己强烈的占有欲;4)偏重于外表的追求;4、大学生处理两人的在爱情观需要三思:1. 不影响学习:大学恋爱可以说是一种必要的经历,学习是大学的基本和主要任务,这两者之间有错综复杂的关系,有的学生因为爱情,过分的忽视了学习,把感情放在第一位;学习的时候就认真的去学,不要去想爱情中的事,谈恋爱的时候用心去谈,也可以交流下学习,互相鼓励,共同进步。2. 有足够的精力:大学生活,说忙也会很忙,但说轻松也是相对会轻松的!大学生恋爱必须合理安排自身的精力,忙于学习的同时不能因为感情的事情分心,不能在学习期间,放弃学习而去谈感情,把握合理的精力,分配好学习和感情。3、 有合理的时间;大学时间可以分为学习和生活时间,合理把握好学习时间和生活时间的“度”很重要;学习的时候,不能分配学习时间去安排两人的在一起的事情,应该以学习为第一;生活时间,两人可以相互谈谈恋爱,用心去谈,也可以交流下学习,互相鼓励,共同进步。5、大学生对爱情需要认识与理解,主要涉及到以下几个方面:(1) 明确学生的主要任务“放弃时间的人,时间也会放弃他。”大学时代是吸纳知识、增长才干的时期。作为当代大学生,要认识到现在的任务是学习学习做人、学习知识、学习为人民服务的本领。在校大学生要集中精力,投入到学习和社会实践中,而不是因把过多的精力、时间用于谈情说爱浪费宝贵的青春年华。因此,明确自己的目标,规划自己的学习道路,合理分配好学习和恋爱的地位。(2) 树林正确的恋爱观提倡志同道合、有默契、相互喜欢的爱情:在恋人的选择上最重要的条件应该是志同道合,思想品德、事业理想和生活情趣等大体一致。摆正爱情与学习、事业的关系:大学生应该把学习、事业放在首位,摆正爱情与学习、事业的关系,不能把宝贵的大学时间,锻炼自身的时间都用于谈情说有爱而放松了学习。 相互理解、相互信任,是一份责任和奉献。爱情是奉献而不时索取,是拥有而不是占有。身边的人与事时刻为我们敲响警钟,不再让悲剧重演。生命只有一次,不会重来,大学生一定要树立正确的爱情观。(3) 发展健康的恋爱行为 在当今大学校园,情侣成双入对已司空见惯。抑制大学生恋爱是不实际的,大学生一定要发展健康的恋爱行为。与恋人多谈谈学习与工作,把恋爱行为限制在社会规范内,不致越轨,要使爱情沿着健康的道路发展。正如马克思所说:“在我看来,真正的爱情是表现在恋人对他的偶像采取含蓄、谦恭甚至羞涩的态度,而绝不是表现在随意流露热情和过早的亲昵。”(4) 爱情不是一件跟风的事儿。很多大学生的爱情实际上是跟风的结果,是看到别人有了爱情,看到别人幸福的样子(注意,只是看上去很美),产生了羊群心理,也就花了大把的时间和精力去寻找爱情(5) 距离才是保持爱情之花常开不败的法宝。爱情到底需要花多少时间,这是一个很大的问题。有的大学生爱情失败,不是因为男女双方在一起的时间太少,而是因为他们在一起的时间太多。相反,很多大学生恋爱成功,不是因为男女双方在一起的时间太少,而是因为他们准确地把握了在一起的时间的多少程度。(6) 爱情不是自我封闭的二人世界。很多人过分的活在两人世界,对身边的同学,身边好友渐渐的失去联系,失去了对话,生活中只有彼此两人;班级活动也不参加,社外活动也不参加,每天除了对方还是对方,这样不利于大学生健康发展,不仅影响学习,影响了自身交际和合作能力。总结:男女之间面对恋爱,首先要摆正好自己的心态,树立自尊、自爱、自强、自重应有的品格,千万不要盲目地追求爱,也不宜过急追求爱,要分清自己的条件是否成熟。要树立正确的恋爱观,明确大学的目的,以学习为第一;规划好大学计划,在不影响学习的条件下,要对恋爱认真,专一,相互鼓励,相互学习,共同进步;认真对待恋爱观,做健康的恋爱;总之,我们大学生要树立正确的恋爱观念,让大学的爱情成为青春记忆里最美的风景,而不是终身的遗憾!
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!