1 / 7
文档名称:

基于OpenGL 三维拾取技术研究.doc

格式:doc   页数:7
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于OpenGL 三维拾取技术研究.doc

上传人:459972402 2014/2/12 文件大小:0 KB

下载得到文件列表

基于OpenGL 三维拾取技术研究.doc

文档介绍

文档介绍:基于OpenGL三维拾取技术研究
刘彬孙永高明马克李晓诗
(解放军信息工程大学测绘学院河南郑州陇海中路66号 450052 )
 
【摘要】在OpenGL环境中,三维场景是通过二维平面表现的,本文通过对这种表现原理的研究,介绍了“射线拾取法”和“包围盒法”两种算法,分析了其实现的原理,并介绍了相关的核心算法。在此基础之上,又提出了一种适用于基于DEM的三维系统的改进算法,把三维空间中的拾取问题转化到了二维平面上,大大简化了拾取的抽象性和复杂性,提高了拾取的效率,更易于理解和实现。
 
【关键字】DEM  OpenGL  拾取  光标投影模型
 
1.     引言
在三维图形系统中,现实世界中的物体要依次通过模型视点变换,投影变换和视口变换才影射到屏幕窗口上的,而对物体的拾取操作,其实就是在二维屏幕上对三维空间中的物体的拾取技术。
 
2.     射线拾取技术
 
射线拾取算法是判断由视点发出经屏幕光标的射线是否与目标物体相交。其具体的实现实现方法如下所示:
(1)        确定射线的位置及方向,可以通过取得射线与远近两个裁减面的交点来确定。
(2)        判断射线与拾取目标是否有交点,因为在射线上,任意一点可以表  示为单位向量(L)与模(len)的乘积,所以交点可以表示为:X= P’+L*len ;又因为三角形内的任意一点都可以用变量u、v和其三个顶点坐标来确定,其中0<u<1 0<v<1、,0<u+v<1。设三个顶点为T1,T2,T3则:X= T1 + u*( T2-T1) + v*( T3- T1) ;由此可以得出P’-T1 =-( L*len) + u*( T2-T1)  + v*( T3- T1) ,即方程组:
(-)*len +( - )*u + ( – )*v = P’.x -
(-)*len +( - )*u + ( – )*v = P’.y -
(-)*len +( - )*u + ( – )*v = P’.z -
这是一个线性方程组,根据克拉姆法则,当满足条件:0<v<1,0<u<1, len>0, ,0<u+v<1 和
【-L,T2-T1,T3-T1】不为零则射线和三角形相交。具体的编程实现可以参考Micarosoft公司提供的相关算法,由于篇幅有限,在此就不做详细的说明。
 
3.     包围盒技术
 
包围盒技术的原理
 
由于在具体的拾取操作中,我们并不需要非常精确的拾取目标物体上的某一点,而是对其选中后进行如平移、旋转、缩放等编辑工作,所以可以牺牲一部分拾取的精确度,而提高其效率。包围盒技术是基于射线拾取技术的一种更加简单高效的拾取方法,它对每个三维场景中需要进行拾取操作的对象设定一个包围域,这个包围域是能够包围对象的最小矩形,该矩形边与坐标轴是对齐的,其左下顶点的x 、y 、z坐标值为实体所有顶点相应坐标值的最小值,其右上顶点的坐标值为实体所有顶点相应坐标值的最大值。由此可以大大降低实现拾取功能的复杂性。
 

 
如今比较流行的一种包围盒的算法是在视点和鼠标点确定