CN102799378A - 一种立体碰撞检测物体拾取方法及装置 - Google Patents
一种立体碰撞检测物体拾取方法及装置 Download PDFInfo
- Publication number
- CN102799378A CN102799378A CN2012102441620A CN201210244162A CN102799378A CN 102799378 A CN102799378 A CN 102799378A CN 2012102441620 A CN2012102441620 A CN 2012102441620A CN 201210244162 A CN201210244162 A CN 201210244162A CN 102799378 A CN102799378 A CN 102799378A
- Authority
- CN
- China
- Prior art keywords
- mouse
- viewport
- cursor position
- mouse cursor
- skew
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- User Interface Of Digital Computer (AREA)
- Position Input By Displaying (AREA)
Abstract
本发明适用于碰撞检测技术领域,提供一种立体碰撞检测物体拾取方法,其特征在于,所述方法包括:系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口;获取与当前鼠标光标所处视口对应的视景体信息;对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置;根据偏移鼠标光标位置和视景体信息获取拾取射线并进行物体拾取。本发明通过获取鼠标光标位置所处的正确视口、与该视口对应的视景体信息,以及鼠标光标的偏移位置,再结合一般光线检测物体检测原理,在两屏画面立体场景中,包括上下两屏或左右两屏,可以获取正确的拾取光线进行物体拾取,给用户提供了一种更为真实的交互环境。
Description
技术领域
本发明属于碰撞检测技术领域,尤其涉及一种立体碰撞检测物体拾取方法及装置。
背景技术
由于人的双眼观察物体的角度略有差异,因此能够辨别物体远近,产生立体的视觉。3D电视正是利用这个原理,把左右眼所看到的影像分离,从而产生呼之欲出的立体视界。相比普通的2D画面,3D画面的纵深感更强、更逼真,让观众有身临其境的感觉。也正是由于这种身临其境的视觉效果使得3D娱乐备受消费者推崇。大部分智能3D电视是基于主动快门式3D原理实现的,通过把图形按帧一分为二,形成对应左眼和右眼的两组画面,连续交错显示出来,同时红外信号发射器将同步控制快门式3D眼睛的左右镜片开关,使左右眼能够在正确的时刻看到相应的画面,形成立体影像。
为了让用户能与立体影像进行实时交互,获取更高的体验效果,需要解决的首要问题是如何拾取立体影像中的物体,让用户有触碰真实物体的感觉,现有立体影像物体拾取技术,还未考虑立体影像检测的方法,而一般的3D光线碰撞检测方法只适用于检测单屏正居中的一幅画面,对于主动快门式3D成像技术所采用的两屏画面或者两组画面无法正确检测,而且非居中偏移的画面也无法正确检测,因此导致拾取物体不正确,拾取到物体和预想中的大相径庭,或者完全拾取不到。
发明内容
鉴于上述问题,本发明的目的是提供一种立体碰撞检测物体拾取方法,旨在解决现有一般光线检测物体拾取方法无法正确拾取到两屏画面或者两组画面立体影像中的物体的技术问题。
本发明是这样实现的,一种立体碰撞检测物体拾取方法,所述包括:
系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口;
获取与当前鼠标光标所处视口对应的视景体信息;
对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置;
根据偏移鼠标光标位置和视景体信息获取拾取射线并进行物体拾取。
本发明的另一目的在于提供一种立体碰撞检测物体拾取装置,所述装置包括:
视口判定单元,用于系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口;
视景体信息获取单元,用于获取与当前鼠标光标所处视口对应的视景体信息;
鼠标光标偏移单元,用于对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置;
物体拾取单元,用于根据偏移鼠标光标位置和视景体信息获取拾取射线并进行物体拾取。
在本发明实施例中,通过获取鼠标光标位置所处的正确视口、与该视口对应的视景体信息,以及鼠标光标的偏移位置,再结合一般光线检测物体检测原理,在两屏画面立体场景中,包括上下两屏或左右两屏,可以获取正确的拾取光线进行物体拾取,给用户提供了一种更为真实的交互环境,同时也在3D立体场景中,模拟更多的真实效果,也为在智能3D电视上实现虚拟世界提供了可能。
附图说明
图1是本发明第一实施例提供的一种立体碰撞检测物体拾取方法的流程图;
图2是图1或者图4中透视视景体示意图;
图3是本发明第二实施例提供的一种立体碰撞检测物体拾取方法的又一实施方式流程图;
图4是本发明第三实施例提供的一种立体碰撞检测物体拾取装置的结构方框图;
图5是本发明第四实施例提供的一种立体碰撞检测物体拾取装置的又一实施方式结构方框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明第一实施例提供的一种立体碰撞检测物体拾取方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。
本实施例提供的方法,包括:
步骤S101、系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口。
对于一般3D光线碰撞检测,用户通过操作鼠标光标来拾取屏幕上的物体,事件UI线程负责处理鼠标消息,而Render线程负责3D场景的渲染。在3D场景交互时,需要将UI线程的鼠标消息传递到Render线程中。
基于主动快门式3D成像原理,3D场景需要设置为对应左眼和右眼的两组相同的画面,可以为左右相同的两组画面或者上下相同的两组画面,对于本实施例在这两屏画面立体场景中的物体拾取,同样首先要捕获到用户在画面中选取物体所产生的系统鼠标消息,也即预设鼠标消息,此时获取到鼠标光标在当前视口的位置MousePosition参数,例如鼠标光标所处视口具体为两屏画面中的第一个视口ViewPort1或者第二个视口ViewPort2。
步骤S102、获取与当前鼠标光标所处视口对应的视景体信息。
根据一般光线碰撞检测的原理,光线拾取物体时需要用到与场景对应的Camera(视景体)信息,那么在消息处理时间不确定的情况下,可能出现检测不正确的问题,因此在本步骤中需要正确获取到当前鼠标光标所在视口对应的Camera(视景体)信息。
步骤S 103、对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置。
在立体成像中,时常需要调整上下格式或者左右格式场景的位置,或者Camera的位置获取更好的视差、层次关系。一般光线检测方法是正居中的检测方法,如果场景偏移以后,光线就会获取不正确,从而导致检测不正确。在本步骤中需要对系统鼠标消息位置进行偏移得到偏移鼠标光标位置。
步骤S104、根据偏移鼠标光标位置和视景体信息获取拾取射线并进行物体拾取。
根据碰撞检测理论知识,可知正确碰撞检测的三个必备条件为:鼠标光标位置正确,ViewPort(视口)正确,Camera(视景体)信息正确。参照如图2所示的透视视景体示意图,以Camera的位置Position为视点引出视椎体,图中示出了视椎体的近剪裁面ZNear和远剪裁面ZFar,只有在ZNear与ZFar之间的物体才能够被看到,而在上述几个步骤中,已经获取到了正确的ViewPort、ViewPort中偏移鼠标光标位置,以及ViewPort对应的Camera(视景体)信息,因此直接根据这些信息,采用一般碰撞检测原理,可以得到鼠标光标位置在远剪裁面ZFar上的位置P1,参照图2,图示中,以Camera的位置Position为原点指向P1点的射线即为拾取射线,根据所述拾取射线,寻找到距离射线原点最近的一个相交物体即为所需拾取的物体。
在本发明实施例中,通过正确获取到两屏画面立体场景中的接收到鼠标消息时鼠标光标所处的视口、所述视口对应的视景体信息,以及经过偏移修正后的鼠标光标位置,结合碰撞检测理论,可以获取到正确的拾取射线拾取到立体影像的物体,给用户提供了一种更为真实的交互环境。
实施例二:
图3示出了本发明第二实施例提供的一种立体碰撞检测物体拾取方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。
本实施例提供的方法,包括:
步骤S301、初始化场景、视口、视景体、场景物体。
对于基于主动快门式3D成像原理的3D场景开发,由于3D场景需要设置为对应左眼和右眼的两组相同的画面,包括左右相同画面格式或者上下相同画面格式,通过3D电视的硬件设备、3D眼镜将两幅画面合并为一个重合的画面,类似我们左右眼合成图像一样,呈现给用户立体的画面,在这里首先需要初始化立体场景,主要是一些画面背景,接着初始化两屏画面的视口ViewPort,包括两个视口的位置、大小等,同时需要初始化视口对应的视景体Camera的位置和开角,最后在初始化立体场景中的各个物体,譬如墙壁、树木、台阶等等,经过初始化后物物体才能在画面中显示出来,当初始化步骤完毕后,为后续立体场景物体拾取做准备。
步骤S302、将屏幕坐标转换为OpenGL坐标。
通常在绘制画面时用到OpenGL开发工具,对于两屏检测,先按照屏幕坐标划分两屏绘图区域的视口ViewPort,其左上角为LeftUp(X,Y),通过WidthHight(width,hight)函数获取屏幕Screen的宽Width和高Hight,由于OpengGL的glViewport(x,y,width,hight)窗口函数设置的窗口起始点坐标与屏幕的坐标不一致,因此需要进行坐标转换,转换方法具体如下:
GLViewPort.X=ViewPort.LeftUp.X
GLViewPort.Y=Screen.Hight-ViewPort.LeftUp.Y-ViewPort.WidthHight.hight
GLViewPort.Width=ViewPort.WidthHight.width
GLViewPort.Hight=ViewPort.WidthHight.Hight
其中,GLViewPort为glViewport的对象,ViewPort为视口绘图区域,Screen为当前屏幕,GLViewPort.X和GLViewPort.Y分别表示在OpenGL坐标中视口左上角的X轴值和Y轴值,GLViewPort.Width和GLViewPort.Hight在OpenGL坐标中视口的宽度和高度,ViewPort.LeftUp.X和ViewPort.LeftUp.Y为在屏幕坐标中视口左上角的X轴值和Y轴值,Screen.Hight为屏幕的高度,ViewPort.WidthHight.Width和ViewPort.WidthHight.Hight分别表示视口的宽度和高度。
步骤S303、系统产生预设鼠标消息时获取鼠标光标位置。
当用户通过鼠标点击到画面中的物体来拾取物体时,UI线程会产生一个系统鼠标消息给render线程,当render线程获取到该鼠标消息时,获取当前鼠标光标在屏幕的位置MousePosition。
步骤S304、当所述鼠标光标位置的X轴值在视口的宽度范围内且Y轴值在视口的高度范围之内,即可判定鼠标光标处于所述视口。
步骤S303-S304是步骤S101的一种优选的实现方式,获取到鼠标光标在屏幕中的位置后,本步骤需要判断当前鼠标光标所处的ViewPort,具体的,作为一种实现方式,判断条件为当所述鼠标光标位置的X轴值在视口的宽度范围内且Y轴值在视口的高度范围之内,即可判定鼠标光标处于所述视口,即(MousePosition.X>=ViewPort.LeftUp.X&& MousePosition.X<=ViewPort.LeftUp.X+ViewPort.WidthHight.Width)&&(MousePosition.Y>=ViewPort.LeftUp.Y&& MousePosition.Y<=ViewPort.LeftUp.Y+ViewPort.WidthHight.Hight),其中MousePosition.X和MousePosition.Y分别为鼠标光标位置的X轴值和Y轴值,ViewPort.LeftUp.X和ViewPort.LeftUp.Y分别为视口左上角的X轴值和Y轴值,ViewPort.WidthHight.Width和ViewPort.WidthHight.Hight分别为视口的宽度和高度。当前鼠标光标在两个视口中的某个视口中,返回该视口。
步骤S305、获取与当前鼠标光标所处视口对应的视景体信息。
根据碰撞检测理论,可知正确碰撞检测的三个必备条件为:鼠标光标位置正确,ViewPort(视口)正确,Camera(视景体)信息正确。为了获取到正确的Camera(视景体)信息,这里定义结构体,结构体中设置有视景体的指针信息,方便获取视景体的信息。
由于现有的光线碰撞检测是针对单屏画面的,因此在画面渲染过程中,直接获取activeCamera即可找到Camera(视景体)信息,但是针对两屏检测,由于OpenGL是基于有限状态机制的,而绘制两个视口时在一个渲染序列中,绘制视口1时,设置视口、Camera(视景体)信息,绘制视口2时更改为设置视口2以及对应的Camera(视景体)信息,由于鼠标消息的不确定性,可能会导致在绘制视口2的时刻,Camera(视景体)信息为视口2专用的,而鼠标光标位置却在视口1的区域中,如果还是通过activeCamera获取现在正在渲染的Camera(视景体)信息,就会导致得到错误的拾取光线,无法正确拾取物体。
步骤S306、对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置,偏移鼠标光标位置的X轴值为系统鼠标光标位置X轴值与视口左上角的X轴值的差值,偏移鼠标光标位置的Y轴值为系统鼠标光标位置Y轴值与视口左上角的Y轴值的差值。
由于在立体成像中,时常需要调整上下格式或者左右格式场景的位置,或者Camera的位置以获取更好的视差、层次关系。一般光线碰撞检测方法是正居中的检测方法,如果场景偏移以后,光线就会获取不正确,从而导致检测不正确。因此在本步骤中,需要在对系统鼠标消息位置进行偏移。这定义系统鼠标光标位置为:MouseSystem(X,Y),偏移鼠标光标位置为PianYiMouse(X,Y),则通过以下公式进行偏移:
PianYiMouse.X=MouseSystem.X-ViewPort.LeftUp.X
PianYiMouse.Y=MouseSystem.Y-ViewPort.LettUp.Y
步骤S307、若偏移鼠标光标位置的X轴值或Y轴值小于零,则丢弃该偏移鼠标光标位置。
若偏移鼠标光标位置X轴值PianYiMouse.X或偏移鼠标光标位置Y轴值PianYiMouse.Y小于0,表明鼠标光标已经脱离了当前视口区域,因此这里丢弃该偏移鼠标光标位置,物体拾取失败。这里步骤S206-S207是步骤S103的一种优选的实现方式。
步骤S308、根据偏移鼠标光标位置和视景体信息获取拾取射线并进行物体拾取。
当获取到正确的偏移鼠标光标位置、ViewPort,Camera(视景体)信息后,再结合一般光线碰撞检测方法,将上述信息代入相关公式中即可得到获取射线。
具体的,对于一般光线碰撞检测方法,用户通常需要用鼠标光标来点击屏幕上某一个点选中某个物体。鼠标光标所在的屏幕是2D平面空间,而3D世界则是标准的三维立体空间。首先需要获取到2D屏幕坐标,进而计算得到3D空间中的拾取射线。ZNear处为视锥体近剪裁面,ZFar处为远剪裁面。拾取射线就是由Camera的空间位置Postion,以及鼠标光标位置在远剪裁面上的位置P1所组成的,其中,Postion为射线原点,射线由Postion发射指向P1。定义Camera的空间位置为CameraPostion,Camera的朝向为LookAt,Camera的正上方为UP,ViewPort的宽为Width,宽为Hight,当前鼠标光标的位置为MousePosition
N=LookAt-CameraPostion(相当于绝对坐标系的Z方向)
U=UP×N (相当于绝对坐标系的X方向)
V=N×U (相当于绝对坐标系的Y方向)
Postion=CameraPostion;
dx=(MousePosition.X-ViewPort.Width/2)/ViewPort.Width;
dy=(ViewPort.Height/2-MousePosition.Y)/ViewPort.Height;
ZFarCenter=CameraPostion+Normlize(LookAt-CameraPostion)*ZFar
ZFarViewPort.Width=Width*ZFar/ZNear
ZFarViewPort.Height=Height*ZFar/ZNear
P1=ZFarCenter+(U*ZFarViewPort.Width*dx)+(V*ZFarViewPort.Height*dy)
在本实施例拾取射线的获取方法中,将偏移鼠标光标位置PianYiMouse代替上述公式中MousePosition,再根据获取到的ViewPort以及视景体信息CameraPostion,即可计算出鼠标光标位置在远剪裁面上的位置P1,根据从CameraPostion点指向P1点组成的拾取射线,沿着这条拾取射线,寻找到距离CameraPostion最近的一个相交物体,即可实现立体场景中物体拾取。
本发明实施例在实施例一的基础上增加了初始化步骤和坐标转换步骤,以及对其中的一些步骤给出了优选的实现方式,通过本实施例,用户可以从立体场景中正确拾取物体,戴上3D眼镜后可以与场景中的物体进行交互,提高了3D体验。解决了一般的3D光线碰撞检测方法,只适用于单屏正居中一幅画面的检测,或者两屏非居中偏移的检测的结果不准确的技术问题。
实施例三:
图4示出了本发明第三实施例提供的一种立体碰撞检测物体拾取装置的流程,为了便于说明仅示出了与本发明实施例相关的部分。
本实施例提供的装置,包括:
视口判定单元401,用于系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口;
视景体信息获取单元402,用于获取与当前鼠标光标所处视口对应的视景体信息;
鼠标光标偏移单元403,用于对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置;
物体拾取单元404,用于根据偏移鼠标光标位置和视景体信息获取拾取射线并进行物体拾取。
本发明实施例中功能单元401-404依次对应实现了实施例一中步骤S401-S404,其中视口判定单元401当接收到UI线程触发的鼠标消息,获取到鼠标光标在屏幕上的位置,并判断鼠标光标当前在两个视口中的具体哪个视口,视景体信息获取单元402获取到与当前鼠标光标所处视口对应的视景体信息,同时由于在立体成像中,时常需要调整上下格式或者左右格式场景的位置,或者Camera的位置获取更好的视差、层次关系。一般光线检测方法是正居中的检测方法,如果场景偏移以后,光线就会获取不正确,从而导致检测不正确,本实施例中,鼠标光标偏移单元403对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置,最后物体拾取单元404根据所述偏移鼠标光标位置、视口以及视口对应的视景体信息,再结合一般光线碰撞检测方法,即可获得鼠标光标位置在远剪裁面上的位置P1,以视景体为原点指向P1点的射线即为拾取射线,根据所述拾取射线,寻找到距离射线原点最近的一个相交物体即为所需拾取的物体。
实施例四:
图5示出了本发明第四实施例提供的一种立体碰撞检测物体拾取装置的流程,为了便于说明仅示出了与本发明实施例相关的部分。
本实施例提供的装置,包括:
初始化单元501,用于初始化场景、视口、视景体、场景物体。
坐标变换单元502,用于将屏幕坐标转换为OpenGL坐标。
视口判定单元503,用于系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口;
视景体信息获取单元504,用于获取与当前鼠标光标所处视口对应的视景体信息;
鼠标光标偏移单元505,用于对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置;
物体拾取单元506,用于根据偏移鼠标光标位置和视景体信息获取拾取射线并进行物体拾取。
其中,视口判定单元503包括:
鼠标光标位置获取模块5031,用于系统产生预设鼠标消息时获取鼠标光标位置;
鼠标光标所属视口判定模块5032,用于当所述鼠标光标位置的X轴值在视口的宽度范围内且Y轴值在视口的高度范围之内,即可判定鼠标光标处于所述视口。
其中,鼠标光标偏移单元505具体包括:
偏移位置获取模块5051,偏移鼠标光标位置的X轴值为系统鼠标光标位置X轴值与视口左上角的X轴值的差值,偏移鼠标光标位置的Y轴值为系统鼠标光标位置Y轴值与视口左上角的Y轴值的差值;
位置判定模块5052,用于若偏移鼠标光标位置的X轴值或Y轴值小于零,则丢弃该偏移鼠标光标位置。
本实施例中的功能单元501-502分别实现了实施例二中步骤S301-S302,视口判定单元503所包括的模块5031-5032分别实现了实施例二中步骤S303-S304,视景体信息获取单元504实现了实施例二中步骤S305,鼠标光标偏移单元505中的模块5051-5052分别实施例二中步骤S306-S307,物体拾取单元506实现了实施例二中步骤S308。
本实施例与实施例三的基础上增加了初始化单元501和坐标变换单元502,首先需要通过初始化单元501进行初始化操作才能实现立体场景的画面显示,用户通过操作鼠标光标在两屏画面中选取物体进行互动操作。由于屏幕坐标与OpenGL坐标的定义不一样,因此本实施例中增加坐标变换单元502进行坐标变换。此外,本实施例还具体给出了视口判定单元503和鼠标光标偏移单元505的优选结构,具体实现了判断当前鼠标光标所处的视口,以及鼠标光标位置进行偏移变换。
综上,本发明实施例通过获取鼠标光标位置所处的正确视口、与该视口对应的视景体信息,以及鼠标光标的偏移位置,再结合一般光线检测物体检测原理,在两屏画面立体场景中,包括上下两屏或左右两屏,可以获取正确的拾取光线进行物体拾取,给用户提供了一种更为真实的交互环境,同时也在3D立体场景中,模拟更多的真实效果,也为在智能3D电视上实现虚拟世界提供了可能。解决了一般的3D光线碰撞检测方法,只适用于单屏正居中一幅画面的检测,或者两屏非居中偏移的检测的结果不准确的技术问题。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种立体碰撞检测物体拾取方法,其特征在于,所述方法包括:
系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口;
获取与当前鼠标光标所处视口对应的视景体信息;
对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置;
根据偏移鼠标光标位置和视景体信息获取拾取射线并进行物体拾取。
2.如权利要求1所述方法,其特征在于,在所述系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口步骤之前,还包括:
将屏幕坐标转换为OpenGL坐标。
3.如权利要求2所述方法,其特征在于,在所述将屏幕坐标转换为OpenGL坐标步骤之前,还包括:
初始化场景、视景体、视口、场景物体。
4.如权利要求1-3任一项所述方法,其特征在于,所述系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口步骤,具体包括:
系统产生预设鼠标消息时获取鼠标光标位置;
当所述鼠标光标位置的X轴值在视口的宽度范围内且Y轴值在视口的高度范围之内,即可判定鼠标光标处于所述视口。
5.如权利要求1-3任一项所述方法,其特征在于,所述对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置步骤,具体包括:
偏移鼠标光标位置的X轴值为系统鼠标光标位置X轴值与视口左上角的X轴值的差值,偏移鼠标光标位置的Y轴值为系统鼠标光标位置Y轴值与视口左上角的Y轴值的差值;
若偏移鼠标光标位置的X轴值或Y轴值小于零,则丢弃该偏移鼠标光标位置。
6.一种立体碰撞检测物体拾取装置,其特征在于,所述装置包括:
视口判定单元,用于系统产生预设鼠标消息时获取鼠标光标位置,并判定鼠标光标所处视口;
视景体信息获取单元,用于获取与当前鼠标光标所处视口对应的视景体信息;
鼠标光标偏移单元,用于对系统鼠标光标位置进行偏移转换得到偏移鼠标光标位置;
物体拾取单元,用于根据偏移鼠标光标位置和视景体信息获取拾取射线并进行物体拾取。
7.如权利要求6所述装置,其特征在于,所述装置还包括:
坐标变换单元,用于将屏幕坐标转换为OpenGL坐标。
8.如权利要求7所述装置,其特征在于,所述装置还包括:
初始化单元,用于初始化场景、视口、视景体、场景物体。
9.如权利要求6-8任一项所述装置,其特征在于,所述视口判定单元包括:
鼠标光标位置获取模块,用于系统产生预设鼠标消息时获取鼠标光标位置;
鼠标光标所属视口判定模块,用于当所述鼠标光标位置的X轴值在视口的宽度范围内且Y轴值在视口的高度范围之内,即可判定鼠标光标处于所述视口。
10.如权利要求6-8任一项所述装置,其特征在于,所述鼠标光标偏移单元具体包括:
偏移位置获取模块,偏移鼠标光标位置的X轴值为系统鼠标光标位置X轴值与视口左上角的X轴值的差值,偏移鼠标光标位置的Y轴值为系统鼠标光标位置Y轴值与视口左上角的Y轴值的差值;
位置判定模块,用于若偏移鼠标光标位置的X轴值或Y轴值小于零,则丢弃该偏移鼠标光标位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210244162.0A CN102799378B (zh) | 2012-07-13 | 2012-07-13 | 一种立体碰撞检测物体拾取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210244162.0A CN102799378B (zh) | 2012-07-13 | 2012-07-13 | 一种立体碰撞检测物体拾取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102799378A true CN102799378A (zh) | 2012-11-28 |
CN102799378B CN102799378B (zh) | 2016-05-04 |
Family
ID=47198495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210244162.0A Active CN102799378B (zh) | 2012-07-13 | 2012-07-13 | 一种立体碰撞检测物体拾取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102799378B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475893A (zh) * | 2013-09-13 | 2013-12-25 | 北京智谷睿拓技术服务有限公司 | 三维显示中对象的拾取装置及三维显示中对象的拾取方法 |
CN106095238A (zh) * | 2016-06-08 | 2016-11-09 | 北京行云时空科技有限公司 | 基于智能眼镜的光标显示方法和装置 |
CN108984262A (zh) * | 2018-07-12 | 2018-12-11 | 宁波视睿迪光电有限公司 | 三维指针的创建方法、装置及电子设备 |
CN114373064A (zh) * | 2021-12-14 | 2022-04-19 | 聚好看科技股份有限公司 | 一种vrar内容编辑方法、装置、设备及介质 |
CN114546555A (zh) * | 2022-02-14 | 2022-05-27 | 同恩(上海)工程技术有限公司 | 一种基于空间几何的图形拾取方法、装置及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266546A (zh) * | 2008-05-12 | 2008-09-17 | 深圳华为通信技术有限公司 | 一种实现操作系统三维显示的方法和一种三维操作系统 |
CN101271585A (zh) * | 2008-03-31 | 2008-09-24 | 北京大学 | 一种在图形处理器上拾取三维几何图元的方法 |
CN101789132A (zh) * | 2010-01-22 | 2010-07-28 | 苏州领航自动化科技有限公司 | 一种单视图多OpenGL视口的显示方法 |
-
2012
- 2012-07-13 CN CN201210244162.0A patent/CN102799378B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271585A (zh) * | 2008-03-31 | 2008-09-24 | 北京大学 | 一种在图形处理器上拾取三维几何图元的方法 |
CN101266546A (zh) * | 2008-05-12 | 2008-09-17 | 深圳华为通信技术有限公司 | 一种实现操作系统三维显示的方法和一种三维操作系统 |
CN101789132A (zh) * | 2010-01-22 | 2010-07-28 | 苏州领航自动化科技有限公司 | 一种单视图多OpenGL视口的显示方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475893A (zh) * | 2013-09-13 | 2013-12-25 | 北京智谷睿拓技术服务有限公司 | 三维显示中对象的拾取装置及三维显示中对象的拾取方法 |
CN106095238A (zh) * | 2016-06-08 | 2016-11-09 | 北京行云时空科技有限公司 | 基于智能眼镜的光标显示方法和装置 |
CN108984262A (zh) * | 2018-07-12 | 2018-12-11 | 宁波视睿迪光电有限公司 | 三维指针的创建方法、装置及电子设备 |
CN108984262B (zh) * | 2018-07-12 | 2021-04-13 | 宁波视睿迪光电有限公司 | 三维指针的创建方法、装置及电子设备 |
CN114373064A (zh) * | 2021-12-14 | 2022-04-19 | 聚好看科技股份有限公司 | 一种vrar内容编辑方法、装置、设备及介质 |
CN114373064B (zh) * | 2021-12-14 | 2024-07-16 | 聚好看科技股份有限公司 | 一种vrar内容编辑方法、装置、设备及介质 |
CN114546555A (zh) * | 2022-02-14 | 2022-05-27 | 同恩(上海)工程技术有限公司 | 一种基于空间几何的图形拾取方法、装置及介质 |
CN114546555B (zh) * | 2022-02-14 | 2024-05-24 | 同恩(上海)工程技术有限公司 | 一种基于空间几何的图形拾取方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102799378B (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2966863B1 (en) | Hmd calibration with direct geometric modeling | |
JP6028351B2 (ja) | 制御装置、電子機器、制御方法、及びプログラム | |
CN100576251C (zh) | 呈现单元、呈现方法以及图像处理设备 | |
KR101609486B1 (ko) | 모션 패럴랙스를 이용한 2d 이미지로부터의 3d 지각 생성 | |
CN106131536A (zh) | 一种裸眼3d增强现实互动展示系统及其展示方法 | |
US20110306413A1 (en) | Entertainment device and entertainment methods | |
CN106688231A (zh) | 立体图像记录和回放 | |
CN102170578A (zh) | 用于处理视频图像的方法和设备 | |
US10560683B2 (en) | System, method and software for producing three-dimensional images that appear to project forward of or vertically above a display medium using a virtual 3D model made from the simultaneous localization and depth-mapping of the physical features of real objects | |
TWI657431B (zh) | 動態顯示系統 | |
CN102170577A (zh) | 用于处理视频图像的方法和系统 | |
EP2787735A1 (en) | Image processing device, image processing method and program | |
CN102799378B (zh) | 一种立体碰撞检测物体拾取方法及装置 | |
EP3262606A1 (en) | An image processing method and apparatus for determining depth within an image | |
CN102508548A (zh) | 一种电子信息设备的操作方法及系统 | |
CN113253845A (zh) | 一种基于人眼追踪视图显示方法、装置、介质及电子设备 | |
WO2017062730A1 (en) | Presentation of a virtual reality scene from a series of images | |
CN113382224B (zh) | 一种基于全息沙盘的交互手柄展示方法及装置 | |
US20190281280A1 (en) | Parallax Display using Head-Tracking and Light-Field Display | |
Park et al. | 48.2: Light field rendering of multi‐view contents for high density light field 3D display | |
CN110087059B (zh) | 一种针对真实三维场景的交互式自由立体显示方法 | |
CN113256773B (zh) | 表面网格扫描及显示方法、系统及装置 | |
KR101779423B1 (ko) | 영상처리방법 및 영상처리장치 | |
CN111193919B (zh) | 一种3d显示方法、装置、设备及计算机可读介质 | |
JP6613099B2 (ja) | 仮想現実空間を立体的に表示するためのプログラム、コンピュータ及びヘッドマウントディスプレイシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |