CN110721473B - 物体抛出方法、装置、设备及计算机可读存储介质 - Google Patents
物体抛出方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110721473B CN110721473B CN201910958569.1A CN201910958569A CN110721473B CN 110721473 B CN110721473 B CN 110721473B CN 201910958569 A CN201910958569 A CN 201910958569A CN 110721473 B CN110721473 B CN 110721473B
- Authority
- CN
- China
- Prior art keywords
- throwing
- dimensional coordinates
- hand
- user
- displacement vector
- 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.)
- Active
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/573—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using trajectories of game objects, e.g. of a golf ball according to the point of impact
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/64—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
- A63F2300/646—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car for calculating the trajectory of an object
Abstract
本发明公开了一种物体抛出方法、装置、设备和一种存储介质,其中方法包括:获取用户手部相对于头部的位置向量的三维坐标,将有效的位置向量的三维坐标存储至预设的坐标数组中,同时获取对应的每帧执行时长存储至预设的时间数组中;循环执行将时间数组中的每帧执行时长进行累加,判断累加时长是否大于预设时长,若是,则分别移除坐标数组和时间数组中的首位至末位元素,直至判定累加时长小于或等于预设时长时,结束循环,将结束循环时的累加时长作为整个物体抛出过程的时长;判断该时间内,用户是否执行了抛出动作;若是,则计算抛出物体的速度赋值给对应的抛出物体。本发明实现了在不依赖手柄控制的前提下,模拟物体真实的抛出效果。
Description
技术领域
本发明涉及虚拟现实技术领域,尤其涉及物体抛出方法、装置、设备及计算机可读存储介质。
背景技术
目前,在虚拟现实(virtual reality,VR)游戏或一些体感游戏中,抛出物体的实现一般通过动作捕捉设备采集数据,采集手部的位置信息后,保存手部位置信息,再通过手柄按钮来控制抛出物体的时间,再计算抛出前的一段时间的速度,最后将该速度赋值给抛出物体,从而实现完整的抛出过程。这种方式的缺陷在于:一定需要手柄控制,只有触发了手柄按钮之后才能知道抛出的时间,如果没有控制手柄,就无法实现物体的抛出。
发明内容
本发明的主要目的在于提出一种物体抛出方法、装置、设备及计算机可读存储介质,旨在实现在不依赖手柄控制的前提下,模拟物体真实的抛出效果。
为实现上述目的,本发明提供一种物体抛出方法,所述方法包括如下步骤:
获取用户手部和头部的三维坐标,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标,判断所述位置向量的三维坐标是否有效;
当所述位置向量的三维坐标有效时,将所述位置向量的三维坐标存储至预设的坐标数组中,同时获取与所述位置向量的三维坐标对应的每帧执行时长,将所述每帧执行时长存储至预设的时间数组中;
循环执行将所述时间数组中的每帧执行时长进行累加,判断累加时长是否大于预设时长,若所述累加时长大于所述预设时长,则分别移除所述坐标数组和所述时间数组中的首位至末位元素,直至判定累加时长小于或等于预设时长时,结束循环,将结束循环时的累加时长作为整个物体抛出过程的时长;
判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作;
当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体。
优选地,所述判断所述位置向量的三维坐标是否有效的步骤包括:
根据所述位置向量的三维坐标,计算所述位置向量的模长;
判断所述位置向量的模长是否小于或等于预设模长;
当所述位置向量的模长小于或等于预设模长时,判定所述位置向量的三维坐标有效。
优选地,所述判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作的步骤包括:
获取所述整个物体抛出过程的时长内用户的第一手部位移向量的三维坐标;
根据所述整个物体抛出过程的时长,以及所述第一手部位移向量的三维坐标,计算用户手部抛出的平均速度;
判断所述平均速度是否大于或等于预设速度,若是,则获取所述整个物体抛出过程的时长内用户的头部位移向量的三维坐标;
根据所述第一手部位移向量的三维坐标,以及所述头部位移向量的三维坐标,计算所述第一手部位移向量和所述头部位移向量之间的夹角;
判断所述夹角是否处于预设的夹角区间,若是,则判定在所述整个物体抛出过程的时长内,用户执行了抛出动作。
优选地,所述根据所述整个物体抛出过程的时长,以及所述第一手部位移向量的三维坐标,计算用户手部抛出的平均速度的步骤包括:
在所述第一手部位移向量的三维坐标中,令Z轴坐标等于0,以计算所述第一手部位移向量在水平方向上的模长;
将所述第一手部位移向量在水平方向上的模长除以所述整个物体抛出过程的时长,得到用户手部抛出的平均速度。
优选地,所述根据所述第一手部位移向量的三维坐标,以及所述头部位移向量的三维坐标,计算所述第一手部位移向量和所述头部位移向量之间的夹角的步骤包括:
优选地,所述计算抛出物体的速度的步骤包括:
从所述整个物体抛出过程的时长中,选取抛出快结束时的一段时间;
获取所述抛出快结束时的一段时间内用户的第二手部位移向量的三维坐标;
根据所述第二手部位移向量的三维坐标,计算所述第二手部位移向量的模长;
将所述第二手部位移向量的模长除以所述抛出快结束时的一段时间,得到抛出物体的速度。
优选地,所述当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体的步骤之后,还包括:
清空所述坐标数组和所述时间数组。
此外,为实现上述目的,本发明还提供一种物体抛出装置,所述装置包括:
获取模块,用于获取用户手部和头部的三维坐标,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标,判断所述位置向量的三维坐标是否有效;
存储模块,用于当所述位置向量的三维坐标有效时,将所述位置向量的三维坐标存储至预设的坐标数组中,同时获取与所述位置向量的三维坐标对应的每帧执行时长,将所述每帧执行时长存储至预设的时间数组中;
循环模块,用于循环执行将所述时间数组中的每帧执行时长进行累加,判断累加时长是否大于预设时长,若所述累加时长大于所述预设时长,则分别移除所述坐标数组和所述时间数组中的首位至末位元素,直至判定累加时长小于或等于预设时长时,结束循环,将结束循环时的累加时长作为整个物体抛出过程的时长;
判断模块,用于判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作;
赋值模块,用于当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体。
此外,为实现上述目的,本发明还提供一种物体抛出设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的物体抛出程序,所述物体抛出程序被所述处理器执行时实现如上所述的物体抛出方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有物体抛出程序,所述物体抛出程序被处理器执行时实现如上所述的物体抛出方法的步骤。
本发明获取用户手部和头部的三维坐标,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标,判断所述位置向量的三维坐标是否有效;当所述位置向量的三维坐标有效时,将所述位置向量的三维坐标存储至预设的坐标数组中,同时获取与所述位置向量的三维坐标对应的每帧执行时长,将所述每帧执行时长存储至预设的时间数组中;循环执行将所述时间数组中的每帧执行时长进行累加,判断累加时长是否大于预设时长,若是,则分别移除所述坐标数组和所述时间数组中的首位至末位元素,直至判定累加时长小于或等于预设时长时,结束循环,将结束循环时的累加时长作为整个物体抛出过程的时长;判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作;当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体。通过这种方式,实现了单纯依靠动作捕捉来实现模拟物体真实的抛出,从而本发明实现了在不依赖手柄控制的前提下,模拟物体真实的抛出效果。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明物体抛出方法第一实施例的一流程示意图;
图3为本发明物体抛出方法第一实施例的另一流程示意图;
图4为本发明物体抛出装置一实施例的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例物体抛出设备可以是PC机、计算机、服务器或其他具有虚拟现实功能的设备。
如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及物体抛出程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的物体抛出程序,并执行下述物体抛出方法各个实施例中的操作。
基于上述硬件结构,提出本发明物体抛出方法各个实施例。
参照图2,图2为本发明物体抛出方法第一实施例的一流程示意图,所述方法包括:
步骤S10,获取用户手部和头部的三维坐标,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标,判断所述位置向量的三维坐标是否有效;
本实施例物体抛出方法应用于物体抛出设备,该物体抛出设备可以对用户手部的真实抛出动作(如抛球)进行捕捉,进而在程序中模拟出捕捉到的动作,达到模拟运动或模拟实训的效果。
在本实施例中,物体抛出设备可与一光学定位动作捕捉摄像机系统(realistracking system,RTS)通信,该光学定位动作捕捉摄像机系统的原理为:通过动捕空间中多台动捕相机同时连续拍摄用户佩戴反光标记点进行运动时的动作,以获取同步的标记点的三维坐标数据,并将标记点的三维坐标数据发送给物体抛出设备。
物体抛出设备首先接收RTS设备传入的标记点的三维坐标数据,从中获取到用户手部和头部标记点的三维坐标,即作为用户手部和头部的三维坐标;然后,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标;之后,判断该位置向量的三维坐标是否有效,若该位置向量的三维坐标是有效的,则认为用户手部产生了准备抛出物体的动作,否则认为用户手部未产生准备抛出物体的动作。
进一步地,上述判断所述位置向量的三维坐标是否有效的步骤可以包括:根据所述位置向量的三维坐标,计算所述位置向量的模长;判断所述位置向量的模长是否小于或等于预设模长;当所述位置向量的模长小于或等于预设模长时,判定所述位置向量的三维坐标有效。
由于用户准备抛出物体时,手部和头部之间的距离会很近,因此,可以通过计算用户手部和头部之间的距离来判断用户是否准备抛出物体。具体地,可以首先根据用户手部相对于头部的位置向量的三维坐标,计算该位置向量的模长,该位置向量的模长即代表用户手部和头部之间的距离;然后,判断该位置向量的模长是否小于或等于预设模长,当该位置向量的模长小于或等于预设模长时,可以判定该位置向量的三维坐标有效,即用户准备抛出物体,反之,当该位置向量的模长大于预设模长时,即判定该位置向量的三维坐标无效。其中,预设与模长可以灵活设置,比如150cm。
通过对位置向量的三维坐标进行有效性判断,进而将有效的位置向量的三维坐标用于后续计算,增加了抛出的正确性。
步骤S20,当所述位置向量的三维坐标有效时,将所述位置向量的三维坐标存储至预设的坐标数组中,同时获取与所述位置向量的三维坐标对应的每帧执行时长,将所述每帧执行时长存储至预设的时间数组中;
该步骤中,当判断用户手部相对于头部的位置向量的三维坐标有效时,将该有效的位置向量的三维坐标存储至预设的坐标数组中,同时,获取与该位置向量的三维坐标对应的每帧执行时长,将该每帧执行时长存储至预设的时间数组中,其中,位置向量的三维坐标与每帧执行时长一一对应,每帧执行时长即每帧物体抛出图像的执行时长。
本实施例中,不妨设坐标数组为PosArray,时间数组为SecondsArray,每帧执行时长为DeltaSeconds。物体抛出设备每采集到一帧物体抛出图像,将该图像对应的用户手部相对于头部的位置向量的有效三维坐标存储至坐标数组PosArray中,并该帧图像的执行时长存储到时间数组SecondsArray中。
步骤S30,循环执行将所述时间数组中的每帧执行时长进行累加,判断累加时长是否大于预设时长,若所述累加时长大于所述预设时长,则分别移除所述坐标数组和所述时间数组中的首位至末位元素,直至判定累加时长小于或等于预设时长时,结束循环,将结束循环时的累加时长作为整个物体抛出过程的时长;
该步骤中,设累加时长为T,将上述时间数组中的每帧执行时长进行累加,即T+=DeltaSeconds,判断T是否大于预设时长T1,若T>T1,则使用while()循环在一帧内执行累加时长减去数组中首位到末位对应的每帧执行时长之和,即其中,SecondsArray[i]代表时间数组SecondsArray中的第i+1个元素,即分别移除坐标数组PosArray和时间数组SecondsArray中的首位至末位元素SecondsArray[0]、PosArray[0]、SecondsArray[1]、PosArray[1]…,通过从首位开始依次移除时间数组和坐标数组,使累加时长T不断减小,直至T≤T1时,结束循环,并将结束循环时的累加时长作为整个物体抛出过程的时长。
需要说明的是,上述预设时长T1用于控制坐标数组和时间数组的长度,具体实施时可灵活设置,比如可以设置在(0.2s,1s)区间,如0.35s;如果T1值设置地较大,就会涉及到更多的时间和坐标数据的判断,此时会提高精准度,减少误抛出物体的情况,但需要更大的抛出速度或者较大速度的抛出持续时间,反之,如果T1值设置地较小,则是相反的效果。
步骤S40,判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作;
该步骤中,物体抛出设备进行抛出判定,即判断在上述整个物体抛出过程的时长内,用户是否执行了抛出动作。
在一实施方式中,可以首先获取上述整个物体抛出过程的时长T内用户的手部位移向量的三维坐标,然后根据该手部位移向量的三维坐标,计算用户手部在时长T内抛出的平均速度,并判断该平均速度是否大于或等于预设速度,若是,则获取时长T内用户的头部位移向量的三维坐标,然后根据用户的手部位移向量的三维坐标和头部位移向量的三维坐标,计算手部位移向量和头部位移向量之间的夹角,判断该夹角是否处于预设的夹角区间,若是,则判定在时长T内用户执行了抛出动作,反之判定用户未执行抛出动作。
在另一实施方式中,也可以首先获取上述整个物体抛出过程的时长T内用户的手部位移向量的三维坐标和头部位移向量的三维坐标,然后根据该手部位移向量的三维坐标,计算用户手部在时长T内抛出的平均速度,根据用户的手部位移向量的三维坐标和头部位移向量的三维坐标,计算手部位移向量和头部位移向量之间的夹角,之后,再判断计算得到的平均速度是否大于或等于预设速度,以及判断夹角是否处于预设的夹角区间,当计算得到的平均速度大于或等于预设速度,且夹角处于预设的夹角区间时,判定在时长T内用户执行了抛出动作,反之判定用户未执行抛出动作。
参照图3,图3为本发明物体抛出方法第一实施例的另一流程示意图。需要说明的是,当判定在时长T内用户未执行抛出动作时,则继续采集下一帧物体抛出图像,根据该下一帧物体抛出图像,返回执行上述获取用户手部和头部的三维坐标,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标,判断所述位置向量的三维坐标是否有效的步骤。
步骤S50,当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体。
该步骤中,当用户执行了抛出动作时,进一步计算抛出物体的速度,将该抛出物体的速度赋值给对应的抛出物体,以完成整个抛出物体的过程。
具体实施时,上述计算抛出物体的速度的步骤可以包括:从所述整个物体抛出过程的时长中,选取抛出快结束时的一段时间;获取所述抛出快结束时的一段时间内用户的第二手部位移向量的三维坐标;根据所述第二手部位移向量的三维坐标,计算所述第二手部位移向量的模长;将所述第二手部位移向量的模长除以所述抛出快结束时的一段时间,得到抛出物体的速度。
具体地,设抛出快结束时的一段时间为T2,则T2的获取方式可以为:for(int i=SecondsArray.Num()-1,i>=0,i--),循环累加计算其中,SecondsArray[i]代表时间数组SecondsArray中的第i+1个元素,直至T2≥T4时,结束循环,将结束循环时的T2大小作为抛出快结束时的一段时间。其中,T4为预设的小于T1的值,比如可以设置为0.1s;T4值越小,计算得到的抛出物体的速度越接近抛出开始那一刻的速度,但是越不可靠(动作捕捉数据不一定完全正确),T4值越大,则相反。
之后,在抛出快结束时的一段时间T2内,将T2时间内对应的用户手部终点位置坐标减去开始位置坐标,得到T2时间内用户的第二手部位移向量F1的三维坐标;接着,根据该第二手部位移向量F1的三维坐标,计算该第二手部位移向量F1的模长|F1|,将该第二手部位移向量的模长|F1|除以T2,即得到抛出物体的速度。
进一步地,上述步骤S50之后,还可以包括:清空所述坐标数组和所述时间数组。
继续参照图3,在完成整个抛出物体的过程后,清空坐标数组和时间数组,以便于下一次模拟物体抛出。
在本实施例中,获取用户手部和头部的三维坐标,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标,判断所述位置向量的三维坐标是否有效;当所述位置向量的三维坐标有效时,将所述位置向量的三维坐标存储至预设的坐标数组中,同时获取与所述位置向量的三维坐标对应的每帧执行时长,将所述每帧执行时长存储至预设的时间数组中;循环执行将所述时间数组中的每帧执行时长进行累加,判断累加时长是否大于预设时长,若是,则分别移除所述坐标数组和所述时间数组中的首位至末位元素,直至判定累加时长小于或等于预设时长时,结束循环,将结束循环时的累加时长作为整个物体抛出过程的时长;判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作;当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体。通过这种方式,实现了单纯依靠动作捕捉来实现模拟物体真实的抛出,从而实现了在不依赖手柄控制的前提下,模拟物体真实的抛出效果。
进一步地,基于本发明物体抛出方法第一实施例,提出本发明物体抛出方法第二实施例。
在本实施例中,上述步骤S40可以进一步包括:获取所述整个物体抛出过程的时长内用户的第一手部位移向量的三维坐标;根据所述整个物体抛出过程的时长,以及所述第一手部位移向量的三维坐标,计算用户手部抛出的平均速度;判断所述平均速度是否大于或等于预设速度,若是,则获取所述整个物体抛出过程的时长内用户的头部位移向量的三维坐标;根据所述第一手部位移向量的三维坐标,以及所述头部位移向量的三维坐标,计算所述第一手部位移向量和所述头部位移向量之间的夹角;判断所述夹角是否处于预设的夹角区间,若是,则判定在所述整个物体抛出过程的时长内,用户执行了抛出动作。
由于用户执行抛出动作时,手部会有一定的速度,且手部和头部之间的夹角在一定区间内,因此,可以通过计算用户手部抛出的平均速度,以及用户手部和头部之间的夹角,来判断用户是否执行了抛出动作。
具体地,本实施例在进行抛出判定时,首先获取整个物体抛出过程的时长T内用户的第一手部位移向量F的三维坐标;然后,根据时长T以及第一手部位移向量F的三维坐标,计算时长T内用户手部抛出的平均速度v,判断v是否大于或等于预设速度v1,若v≥v1,则进一步获取时长T内用户的头部位移向量H的三维坐标,然后根据向量F和向量H的三维坐标,计算向量F和向量H之间的夹角θ;之后,判断该夹角θ是否处于预设的夹角区间,若是,则判定在时长T内,用户执行了抛出动作。
需要说明的是,上述预设速度v1可以设置在(30cm/s,120cm/s)区间,如80cm/s,v1越小,则越容易抛出,也容易误抛出,v1越大则相反;上述夹角区间可以设置为(-90°,-30°)和(30°,90°),夹角区间设置得范围越大,就会有更大的抛出范围。
进一步地,上述根据所述整个物体抛出过程的时长,以及所述第一手部位移向量的三维坐标,计算用户手部抛出的平均速度的步骤可以包括:在所述第一手部位移向量的三维坐标中,令Z轴坐标等于0,以计算所述第一手部位移向量在水平方向上的模长;将所述第一手部位移向量在水平方向上的模长除以所述整个物体抛出过程的时长,得到用户手部抛出的平均速度。
在计算时长T内用户手部抛出的平均速度v时,可令第一手部位移向量F的Z轴坐标等于0,从而根据X、Y轴坐标可以计算出第一手部位移向量F在水平方向上的模长Fs,则v=Fs/T。
进一步地,上述根据所述第一手部位移向量的三维坐标,以及所述头部位移向量的三维坐标,计算所述第一手部位移向量和所述头部位移向量之间的夹角的步骤可以进一步包括:将所述第一手部位移向量的三维坐标,以及所述头部位移向量的三维坐标代入公式中进行计算,得到所述第一手部位移向量和所述头部位移向量之间的夹角θ,其中,F为第一手部位移向量,H为头部位移向量。
在计算时长T内第一手部位移向量F和所述头部位移向量H之间的夹角θ时,可以根据点积公式:F·H=|F||H|cosθ,得到将向量F和向量H的三维坐标代入该公式中,即可求得向量F和向量H之间的夹角θ,该夹角θ即为用户手部和头部之间的夹角。
在本实施例中,通过对用户手部抛出的平均速度、用户手部位移向量和头部位移向量之间的夹角的双重判定,实现了对用户抛出动作的准确判定,该过程中,通过对预设速度和预设的夹角区间进行灵活调整,可用于满足不同效果、不同要求的抛出物体过程的实现。
本发明还提供一种物体抛出装置。参照图4,图4为本发明物体抛出装置一实施例的模块示意图。本实施例中,所述物体抛出装置包括:
获取模块10,用于获取用户手部和头部的三维坐标,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标,判断所述位置向量的三维坐标是否有效;
存储模块20,用于当所述位置向量的三维坐标有效时,将所述位置向量的三维坐标存储至预设的坐标数组中,同时获取与所述位置向量的三维坐标对应的每帧执行时长,将所述每帧执行时长存储至预设的时间数组中;
循环模块30,用于循环执行将所述时间数组中的每帧执行时长进行累加,判断累加时长是否大于预设时长,若所述累加时长大于所述预设时长,则分别移除所述坐标数组和所述时间数组中的首位至末位元素,直至判定累加时长小于或等于预设时长时,结束循环,将结束循环时的累加时长作为整个物体抛出过程的时长;
判断模块40,用于判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作;
赋值模块50,用于当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体。
进一步地,所述获取模块10还用于:
根据所述位置向量的三维坐标,计算所述位置向量的模长;
判断所述位置向量的模长是否小于或等于预设模长;
当所述位置向量的模长小于或等于预设模长时,判定所述位置向量的三维坐标有效。
进一步地,所述判断模块40还用于:
获取所述整个物体抛出过程的时长内用户的第一手部位移向量的三维坐标;
根据所述整个物体抛出过程的时长,以及所述第一手部位移向量的三维坐标,计算用户手部抛出的平均速度;
判断所述平均速度是否大于或等于预设速度,若是,则获取所述整个物体抛出过程的时长内用户的头部位移向量的三维坐标;
根据所述第一手部位移向量的三维坐标,以及所述头部位移向量的三维坐标,计算所述第一手部位移向量和所述头部位移向量之间的夹角;
判断所述夹角是否处于预设的夹角区间,若是,则判定在所述整个物体抛出过程的时长内,用户执行了抛出动作。
进一步地,所述判断模块40还用于:
在所述第一手部位移向量的三维坐标中,令Z轴坐标等于0,以计算所述第一手部位移向量在水平方向上的模长;
将所述第一手部位移向量在水平方向上的模长除以所述整个物体抛出过程的时长,得到用户手部抛出的平均速度。
进一步地,所述判断模块40还用于:
进一步地,所述赋值模块50还用于:
从所述整个物体抛出过程的时长中,选取抛出快结束时的一段时间;
获取所述抛出快结束时的一段时间内用户的第二手部位移向量的三维坐标;
根据所述第二手部位移向量的三维坐标,计算所述第二手部位移向量的模长;
将所述第二手部位移向量的模长除以所述抛出快结束时的一段时间,得到抛出物体的速度。
进一步地,所述物体抛出装置还包括:
清空模块,用于清空所述坐标数组和所述时间数组。
上述各程序模块实现的方法及有益效果可参照本发明物体抛出方法实施例,此处不再赘述。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有物体抛出程序,所述物体抛出程序被处理器执行时实现如上所述的物体抛出方法的步骤。
其中,在所述处理器上运行的物体抛出程序被执行时所实现的方法可参照本发明物体抛出方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种物体抛出方法,其特征在于,所述方法包括如下步骤:
获取用户手部和头部的三维坐标,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标,判断所述位置向量的三维坐标是否有效;
当所述位置向量的三维坐标有效时,将所述位置向量的三维坐标存储至预设的坐标数组中,同时获取与所述位置向量的三维坐标对应的每帧执行时长,将所述每帧执行时长存储至预设的时间数组中;
循环执行将所述时间数组中的每帧执行时长进行累加,判断累加时长是否大于预设时长,若所述累加时长大于所述预设时长,则分别移除所述坐标数组和所述时间数组中的首位至末位元素,直至判定累加时长小于或等于预设时长时,结束循环,将结束循环时的累加时长作为整个物体抛出过程的时长;
判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作;
当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体。
2.如权利要求1所述的方法,其特征在于,所述判断所述位置向量的三维坐标是否有效的步骤包括:
根据所述位置向量的三维坐标,计算所述位置向量的模长;
判断所述位置向量的模长是否小于或等于预设模长;
当所述位置向量的模长小于或等于预设模长时,判定所述位置向量的三维坐标有效。
3.如权利要求1所述的方法,其特征在于,所述判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作的步骤包括:
获取所述整个物体抛出过程的时长内用户的第一手部位移向量的三维坐标;
根据所述整个物体抛出过程的时长,以及所述第一手部位移向量的三维坐标,计算用户手部抛出的平均速度;
判断所述平均速度是否大于或等于预设速度,若是,则获取所述整个物体抛出过程的时长内用户的头部位移向量的三维坐标;
根据所述第一手部位移向量的三维坐标,以及所述头部位移向量的三维坐标,计算所述第一手部位移向量和所述头部位移向量之间的夹角;
判断所述夹角是否处于预设的夹角区间,若是,则判定在所述整个物体抛出过程的时长内,用户执行了抛出动作。
4.如权利要求3所述的方法,其特征在于,所述根据所述整个物体抛出过程的时长,以及所述第一手部位移向量的三维坐标,计算用户手部抛出的平均速度的步骤包括:
在所述第一手部位移向量的三维坐标中,令Z轴坐标等于0,以计算所述第一手部位移向量在水平方向上的模长;
将所述第一手部位移向量在水平方向上的模长除以所述整个物体抛出过程的时长,得到用户手部抛出的平均速度。
6.如权利要求1所述的方法,其特征在于,所述计算抛出物体的速度的步骤包括:
从所述整个物体抛出过程的时长中,选取抛出快结束时的一段时间;
获取所述抛出快结束时的一段时间内用户的第二手部位移向量的三维坐标;
根据所述第二手部位移向量的三维坐标,计算所述第二手部位移向量的模长;
将所述第二手部位移向量的模长除以所述抛出快结束时的一段时间,得到抛出物体的速度。
7.如权利要求1至6中任一项所述的方法,其特征在于,所述当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体的步骤之后,还包括:
清空所述坐标数组和所述时间数组。
8.一种物体抛出装置,其特征在于,所述装置包括:
获取模块,用于获取用户手部和头部的三维坐标,将用户手部的三维坐标减去头部的三维坐标,得到用户手部相对于头部的位置向量的三维坐标,判断所述位置向量的三维坐标是否有效;
存储模块,用于当所述位置向量的三维坐标有效时,将所述位置向量的三维坐标存储至预设的坐标数组中,同时获取与所述位置向量的三维坐标对应的每帧执行时长,将所述每帧执行时长存储至预设的时间数组中;
循环模块,用于循环执行将所述时间数组中的每帧执行时长进行累加,判断累加时长是否大于预设时长,若所述累加时长大于所述预设时长,则分别移除所述坐标数组和所述时间数组中的首位至末位元素,直至判定累加时长小于或等于预设时长时,结束循环,将结束循环时的累加时长作为整个物体抛出过程的时长;
判断模块,用于判断在所述整个物体抛出过程的时长内,用户是否执行了抛出动作;
赋值模块,用于当用户执行了抛出动作时,计算抛出物体的速度,将所述抛出物体的速度赋值给对应的抛出物体。
9.一种物体抛出设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的物体抛出程序,所述物体抛出程序被所述处理器执行时实现如权利要求1至7中任一项所述的物体抛出方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有物体抛出程序,所述物体抛出程序被处理器执行时实现如权利要求1至7中任一项所述的物体抛出方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910958569.1A CN110721473B (zh) | 2019-10-10 | 2019-10-10 | 物体抛出方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910958569.1A CN110721473B (zh) | 2019-10-10 | 2019-10-10 | 物体抛出方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110721473A CN110721473A (zh) | 2020-01-24 |
CN110721473B true CN110721473B (zh) | 2022-10-04 |
Family
ID=69219772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910958569.1A Active CN110721473B (zh) | 2019-10-10 | 2019-10-10 | 物体抛出方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110721473B (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7636645B1 (en) * | 2007-06-18 | 2009-12-22 | Ailive Inc. | Self-contained inertial navigation system for interactive control using movable controllers |
CN101515198A (zh) * | 2009-03-11 | 2009-08-26 | 上海大学 | 一种虚拟物体抓取与抛掷的人机交互方法及系统 |
WO2011003218A1 (zh) * | 2009-07-07 | 2011-01-13 | Han Zheng | 一种加速度动作识别系统及其方法 |
CN101964047B (zh) * | 2009-07-22 | 2012-10-10 | 深圳泰山在线科技有限公司 | 一种基于多跟踪点的人体动作识别方法 |
CN106730811B (zh) * | 2016-12-07 | 2018-09-07 | 腾讯科技(深圳)有限公司 | 一种vr场景下的道具运动处理方法和装置 |
WO2018112112A1 (en) * | 2016-12-13 | 2018-06-21 | DeepMotion, Inc. | Improved virtual reality system using multiple force arrays for a solver |
CN107463257B (zh) * | 2017-08-03 | 2020-08-21 | 微景天下(北京)科技有限公司 | 一种虚拟现实vr系统的人机交互方法及装置 |
CN108037827A (zh) * | 2017-12-08 | 2018-05-15 | 北京凌宇智控科技有限公司 | 面向虚拟现实环境的虚拟物品抛掷仿真方法及其系统 |
CN109200582A (zh) * | 2018-08-02 | 2019-01-15 | 腾讯科技(深圳)有限公司 | 控制虚拟对象与投掷物交互的方法、装置及存储介质 |
-
2019
- 2019-10-10 CN CN201910958569.1A patent/CN110721473B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110721473A (zh) | 2020-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107820593B (zh) | 一种虚拟现实交互方法、装置及系统 | |
CN108139204A (zh) | 信息处理装置、位置和/或姿态的估计方法及计算机程序 | |
CN107030699B (zh) | 位姿误差修正方法及装置、机器人及存储介质 | |
US9904982B2 (en) | System and methods for displaying panoramic content | |
CN106999772B (zh) | 使显示器与经由网络连接的多个控制器联动地进行画面操作的系统、程序以及方法 | |
CN109909998B (zh) | 一种控制机械臂运动的方法及装置 | |
CN105353871B (zh) | 一种虚拟现实场景中目标物体的控制方法及装置 | |
CN106527887B (zh) | 虚拟物体选取方法、装置及vr系统 | |
US11493997B2 (en) | Program, recognition apparatus, and recognition method | |
CN105892668B (zh) | 设备控制方法和装置 | |
JP6854928B2 (ja) | 情報処理装置、情報処理システム、情報処理方法、及びプログラム | |
CN111698646B (zh) | 一种定位方法及装置 | |
WO2022174594A1 (zh) | 基于多相机的裸手追踪显示方法、装置及系统 | |
CN110456905A (zh) | 定位跟踪方法、装置、系统及电子设备 | |
CN111521971B (zh) | 一种机器人的定位方法及系统 | |
US20210019900A1 (en) | Recording medium, object detection apparatus, object detection method, and object detection system | |
CN110721473B (zh) | 物体抛出方法、装置、设备及计算机可读存储介质 | |
CN109360277A (zh) | 虚拟仿真显示控制方法和装置,存储介质及电子装置 | |
CN110765926B (zh) | 图画书识别方法、装置、电子设备和存储介质 | |
CN107688389B (zh) | Vr抓取动作的优化方法及装置 | |
US9616342B2 (en) | Video game system, apparatus and method | |
CN108803862B (zh) | 用于虚拟现实场景中的账号关系建立方法及装置 | |
CN110456903A (zh) | 三维绘画方法、装置、存储介质、处理器及终端 | |
JP6403447B2 (ja) | 情報処理装置、指標校正のための撮影案内方法、コンピュータプログラム | |
CN109388291A (zh) | 投影仪组件、投影仪的投影方法、装置及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |