CN108970113B - 一种碰撞检测方法、装置、设备及介质 - Google Patents
一种碰撞检测方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN108970113B CN108970113B CN201810840419.6A CN201810840419A CN108970113B CN 108970113 B CN108970113 B CN 108970113B CN 201810840419 A CN201810840419 A CN 201810840419A CN 108970113 B CN108970113 B CN 108970113B
- Authority
- CN
- China
- Prior art keywords
- collision
- dimensional
- point set
- point
- frame
- 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/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种碰撞检测方法、装置、终端设备及计算机可读存储介质,其方法包括:在每一次更新游戏状态时,获取在该游戏状态内的第一对象的碰撞帧集合及第二对象的碰撞帧集合,所述碰撞帧集合包括至少一个二维碰撞点集合及对应的集合序号;将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测;当检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点;根据该次碰撞对应的集合序号,获取碰撞时间,本发明实现高效准确的打击碰撞判断结果,解决低帧率下高速移动的碰撞体计算碰撞不精确的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种碰撞检测方法、装置、终端设备及计算机可读存储介质。
背景技术
在三维游戏中物体的碰撞动作或者打击动作经常发生,碰撞检测可以探测游戏中各物体的物理边缘,检测出游戏中的各物体是否发生碰撞,当两个3D物体撞在一起或者当攻击方攻击受击方时,这种碰撞检测技术可以防止他们相互穿过,目前大部分的碰撞判断都依靠繁多的碰撞盒子进行多次碰撞判断,为了实现碰撞的准确检测,通常会通过增加帧率的方法,例如一把长剑上会配置多个碰撞盒,每个逻辑帧(或者碰撞逻辑帧)再对所有需要碰撞的区域逐一判断碰撞,找到产生碰撞的区域,当这把长剑移动以高速移动时,很难找到具体在哪个区域发生碰撞,只能通过增加碰撞判断的帧率来达到精确碰撞的效果。
在实现本发明的过程中,发明人发现:为了达到打击碰撞的高精度检测,会占据更多的资源如CPU资源、运行内存等等,造成其他功能各方面性能的下降,影响用户的使用体验;特别是在逻辑帧率比较低的情况下,无法通过增加帧率的方法来实现精确碰撞,导致碰撞的结果判断的不准确,而且从视觉上会出现模型穿插的问题,造成不好的视觉体验。
发明内容
针对上述问题,本发明的目的在于提供一种碰撞检测方法、装置、终端设备及计算机可读存储介质,实现高效准确的打击碰撞判断结果,解决低帧率下高速移动的碰撞体计算碰撞不精确的问题。
第一方面,本发明实施例提供了一种碰撞检测方法,包括以下步骤:
在每一次更新游戏状态时,获取在该游戏状态内的第一对象的碰撞帧集合及第二对象的碰撞帧集合;其中,所述碰撞帧集合包括至少一个二维碰撞点集合及对应的集合序号;
根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测;
当检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点;以及,
根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间。
在第一方面的第一种实现方式中,还包括:
在游戏制作过程中,将所述第一对象对应的第一模型骨骼点信息投影到二维坐标中,以获取所述第一对象在一数据帧内对应的一组二维点集合;及,将所述第二对象对应的第二模型骨骼点信息投影到所述二维坐标中,以获取所述第二对象在一数据帧内对应的一组二维点集合;
根据预设的游戏状态更新频率及预设的输出密度,获取所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合。
根据第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述根据预设的游戏状态更新频率及预设的输出密度,获取所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合,具体为:
根据预设的输出密度,获取所述第一对象对应的第一二维点集合及所述第二对象对应的第二二维点集合;
根据对应的碰撞参数分别检测所述第一对象的非攻击帧及所述第二对象的非攻击帧;
根据所述第一对象的非攻击帧删除所述第一二维点集合中对应的二维点集合,及根据所述第二对象的非攻击帧删除所述第二二维点集合中对应的二维点集合,以获取所述第一对象对应的第三二维点集合及所述第二对象对应的第四二维点集合;
根据预设的游戏状态更新频率,对所述第三二维点集合进行区块划分,及对所述第四二维点集合进行区块划分;其中,每一区块包括至少一组二维点集合;
对于所述第三二维点集合及所述第四二维点集合中的每一区块,获取所述区块中每组二维点集合之间的移动差值;
删除所述移动差值小于预设移动阈值的二维点集合,以生成所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合。
根据第一方面的第二种实现方式,在第一方面的第三种实现方式中,所述根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测,具体为:
获取所述第一对象的每一二维碰撞点集合对应的第一矩形,及获取所述第二对象的每一二维碰撞点集合对应的第二矩形;
根据所述第一对象的集合序号与所述第二对象的集合序号的对应顺序,对所述第一矩形及对应的第二矩形一一进行相交检测。
根据第一方面的第三种实现方式,在第一方面的第四种实现方式中,所述获取所述第一对象的每一二维碰撞点集合对应的第一矩形,及获取所述第二对象的每一二维碰撞点集合对应的第二矩形,具体为:
根据所述第一对象的每一二维碰撞点集合中的N个二维碰撞点生成(N-1)个向量,及根据所述第二对象的每一二维碰撞点集合中的M个二维碰撞点生成(M-1)个向量;其中,N≥1,M≥1;
对于第一对象中的每一个向量,根据所述向量的法线方向及所述预设移动阈值计算第一矩形起点坐标,及根据所述向量的长度计算所述第一矩形的长宽;
对于第二对象中的每一个向量,根据所述向量的法线方向及所述预设移动阈值计算第二矩形起点坐标,及根据所述向量的长度计算所述第二矩形的长宽。
根据第一方面的第四种实现方式,在第一方面的第五种实现方式中,所述当检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点,具体为:
当判断所述第一对象的第一矩形与对应的所述第二对象的第二矩形相交时,获取相交时对应的第一对象的二维点集合;
通过投影方式,根据所述二维点集合计算在三维场景中的实际的三维碰撞点。
根据第一方面的第五种实现方式,在第一方面的第六种实现方式中,所述根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间,具体为:
根据相交时对应的第一对象的二维点集合的集合序号、当前游戏状态更新时间及更新周期,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间点。
第二方面,本发明实施例提供了一种碰撞检测装置,包括:
碰撞帧获取模块,用于在每一次更新游戏状态时,获取在该游戏状态内的第一对象的碰撞帧集合及第二对象的碰撞帧集合;其中,所述碰撞帧集合包括至少一个二维碰撞点集合及对应的集合序号;
碰撞检测模块,用于根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测;
三维碰撞点获取模块,用于当检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点;以及,
碰撞时间获取模块,用于根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间。
第三方面,本发明实施例提供了一种碰撞检测终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面中任意一项所述的碰撞检测方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第二方面中任意一项所述的碰撞检测方法。
以上实施例具有如下有益效果:
通过在每一次更新游戏状态时,获取在该游戏状态内的第一对象的碰撞帧集合及第二对象的碰撞帧集合,所述碰撞帧集合包括至少一个二维碰撞点集合及对应的集合序号,然后根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测,并在检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点;以及,根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间,实现高效准确的打击碰撞判断结果,解决低帧率下高速移动的碰撞体计算碰撞不精确的问题,提高用户的使用体验,而且通过将三维碰撞信息投影到二维平面再进行碰撞判断,降低了计算的复杂度,减少了算法运算的消耗时间及运行内存的损耗,避免碰撞检测造成的高占用率浪费运行资源,实现了对运行资源的综合使用。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的碰撞检测方法的流程示意图。
图2是本发明第二实施例提供的碰撞检测装置的结构示意图。
图3是本发明第三实施例提供的碰撞检测终端设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明第一实施例提供了一种碰撞检测方法,其可由终端设备来执行,并包括以下步骤:
S11,在每一次更新游戏状态时,获取在该游戏状态内的第一对象的碰撞帧集合及第二对象的碰撞帧集合;其中,所述碰撞帧集合包括至少一个二维碰撞点集合及对应的集合序号。
在本发明实施例中,所述终端设备可为电脑、手机、平板电脑、服务器等计算设备,所述碰撞检测方法作为游戏程序的其中一个功能集成于所述终端设备上。
在本发明实施例中,需要说明的是,首先在游戏制作过程中,根据美术制作的操作,所述终端设备将所述第一对象对应的第一模型骨骼点信息投影到二维坐标中,以获取所述第一对象在一数据帧内对应的一组二维点集合;及,将所述第二对象对应的第二模型骨骼点信息投影到所述二维坐标中,以获取所述第二对象在一数据帧内对应的一组二维点集合,然后所述终端设备根据预设的游戏状态更新频率及预设的输出密度,获取所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合,具体地,根据预设的输出密度,获取所述第一对象对应的第一二维点集合及所述第二对象对应的第二二维点集合,需要说明的是,本发明对于输出密度的具体数据范围不做任何限制,可依据实际情况进行具体设置,例如将预设的输出密度设置为1秒125帧,即0.008s一组点集合的位置数据,所述终端设备根据对应的碰撞参数分别检测所述第一对象的非攻击帧及所述第二对象的非攻击帧,然后根据所述第一对象的非攻击帧删除所述第一二维点集合中对应的二维点集合,及根据所述第二对象的非攻击帧删除所述第二二维点集合中对应的二维点集合,以获取所述第一对象对应的第三二维点集合及所述第二对象对应的第四二维点集合;根据预设的游戏状态更新频率,对所述第三二维点集合进行区块划分,及对所述第四二维点集合进行区块划分,需要说明的是,每一次的游戏状态更新即是获取到该游戏的逻辑帧的过程,则所述游戏状态更新频率则是对应的逻辑帧率,可以理解的是,本发明对于逻辑帧及逻辑帧率的具体数值不做任何限定,具体可根据实际情况进行具体设置,例如将所述游戏状态更新频率(即逻辑帧率)设置为25帧/秒的密度,由于输出密度设置为125帧/秒的密度,则相应的将所述第三二维点集合及所述第四二维点集合划分为5个区块;其中,每一区块包括至少一组二维点集合;对于所述第三二维点集合及所述第四二维点集合中的每一区块,获取所述区块中每组二维点集合之间的移动差值;删除所述移动差值小于预设移动阈值的二维点集合,以生成所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合,例如每一区块中存在5组二维点集合,该二维点集合的坐标为:1、({0,0},{0,1});2、({0,0.1},{0,1.1});3、({0,0.2},{0,1.2});4、({0,0.3},{0,1.3});5、({0,0.4},{0,1.4});互相的移动差值只有0.1,预设移动阈值为0.5,则先删除2,4序号的二维点集合数据,再次判断,差值为0.2,依然小于预设移动阈值,删除3号的二维点集合数据,最终的数据只有2组,即集合序号为1号和5号的二维点集合数据,从而获取精简的碰撞点集合,降低了计算的复杂度,降低运行内存损耗。
在本发明实施例中,每一次的游戏状态更新即是获取到该游戏的逻辑帧的过程,即是说,所述终端设备每获取一个逻辑帧,便获取所述逻辑帧中的第一对象的碰撞帧集合及第二对象的碰撞帧集合;所述碰撞帧集合为包括有碰撞点信息的数据帧集合,所述碰撞帧的数量可能是一个或者多个,相应的,所述碰撞帧集合包括有至少一个二维碰撞点集合及对应的集合序号,例如,上述例子中的集合序号为1号和5号的二维点集合数据。
S12,根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测。
在本发明实施例中,所述终端设备获取所述第一对象的每一二维碰撞点集合对应的第一矩形,及获取所述第二对象的每一二维碰撞点集合对应的第二矩形,具体地,所述终端设备根据所述第一对象的每一二维碰撞点集合中的N个二维碰撞点生成(N-1)个向量,及根据所述第二对象的每一二维碰撞点集合中的M个二维碰撞点生成(M-1)个向量;其中,N≥1,M≥1;对于第一对象中的每一个向量,根据所述向量的法线方向及所述预设移动阈值计算第一矩形起点坐标,及根据所述向量的长度计算所述第一矩形的长宽,具体地,每个向量向其法线方向上,然后计算预设移动阈值/2,得到第一矩形的起点,例如上述例子中得到的集合序号为1号和5号的二维点集合数据,第1个集合内有2个点,则通过这2个点生成2-1个向量(0,1),这个向量的法线方向为-x方向,得到矩形的起点信息x=-0.5/2=-0.25,y=0,最后根据向量长度得到矩形的长,0.5是矩形的宽,合起来的数据为(-0.25(x),0(y),0.5(宽),1(长))。第2个集合内数据用同样的方式处理,得到数据(-0.25(x),0.4(y),0.5(宽),1(长));对于第二对象中的每一个向量,根据所述向量的法线方向及所述预设移动阈值计算第二矩形起点坐标,及根据所述向量的长度计算所述第二矩形的长宽,最后所述终端设备根据所述第一对象的集合序号与所述第二对象的集合序号的对应顺序,对所述第一矩形及对应的第二矩形一一进行相交检测,从序号低的集合开始,拿到1组第一对象的二维碰撞点集合数据和1组第二对象的二维碰撞点集合数据,把数据全部转换到以矩形长为x轴,宽为y轴的坐标系下,使用通用算法进行碰撞检测,如果没有碰到,则拿下一组序号的双方数据,重复以上操作,直到没有数据或者检测到碰撞关系。
S13,当检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点。
在本发明实施例中,当判断所述第一对象的第一矩形与对应的所述第二对象的第二矩形相交时,所述终端设备获取相交时对应的第一对象的二维点集合,然后通过投影方式,根据所述二维点集合计算在三维场景中的实际的三维碰撞点,例如上述的例子,在序号为5时发生碰撞,碰撞点为序号为5的集合,根据这个结果用投影的方式计算出三维场景中攻击道具的实际坐标。
S14,根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间。
在本发明实施例中,当判断所述第一对象的第一矩形与对应的所述第二对象的第二矩形相交时,所述终端设备根据相交时对应的第一对象的二维点集合的集合序号、当前游戏状态更新时间及更新周期,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间点,例如上述的例子,在序号为5时发生碰撞,则碰撞的时间点为当前游戏状态更新时间+(5-1)*更新周期/5,又因为每更新一次游戏状态即为游戏中获取一个逻辑帧的过程,则碰撞的时间点=当前逻辑帧时间+(5-1)*单个逻辑帧时间/5,相比于现有技术,本发明提供的打击碰撞判断方法是一种根据动作幅度自适应调节检测频率来达到高效高质量的碰撞判断方式。
综上所述,本发明实施例提供了一种碰撞检测方法,通过在每一次更新游戏状态时,获取在该游戏状态内的第一对象的碰撞帧集合及第二对象的碰撞帧集合,所述碰撞帧集合包括至少一个二维碰撞点集合及对应的集合序号,然后根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测,并在检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点;以及,根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间,实现高效准确的打击碰撞判断结果,解决低帧率下高速移动的碰撞体计算碰撞不精确的问题,提高用户的使用体验,而且通过将三维碰撞信息投影到二维平面再进行碰撞判断,降低了计算的复杂度,减少了算法运算的消耗时间及运行内存的损耗,避免碰撞检测造成的高占用率浪费运行资源,实现了对运行资源的综合使用。
为了便于对本发明的理解,下面将对本发明的一些优选实施例做更进一步的描述。
优选地,所述碰撞检测方法还包括:
在游戏制作过程中,将所述第一对象对应的第一模型骨骼点信息投影到二维坐标中,以获取所述第一对象在一数据帧内对应的一组二维点集合;及,将所述第二对象对应的第二模型骨骼点信息投影到所述二维坐标中,以获取所述第二对象在一数据帧内对应的一组二维点集合。
根据预设的游戏状态更新频率及预设的输出密度,获取所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合。
在本发明实施例中,制作模型时,美术制作给打击模型添加骨骼挂点,从起点到终点添加2+N个骨骼点,N代表模型较大的角度转折点,然后添加受击骨骼点,一般来说从俯视角添加3个骨骼点,对应左手,身体,右手,做完所有动作后,进行投影操作,所述终端设备根据所述投影操作把刚才所有的点信息投影到二维坐标上,然后所述终端设备根据预设的输出密度,获取所述第一对象对应的第一二维点集合及所述第二对象对应的第二二维点集合;得到的点集合数据量相对来说比较庞大,需要再次对数据进行加工。先剔除非攻击帧数据,一个动作的打击生效帧实际上只有少数几帧,所以把其他类似于准备动作或者收刀动作的帧数据直接去掉,因此所述终端设备根据对应的碰撞参数分别检测所述第一对象的非攻击帧及所述第二对象的非攻击帧,根据所述第一对象的非攻击帧删除所述第一二维点集合中对应的二维点集合,及根据所述第二对象的非攻击帧删除所述第二二维点集合中对应的二维点集合,以获取所述第一对象对应的第三二维点集合及所述第二对象对应的第四二维点集合,再根据预设的游戏状态更新频率,对所述第三二维点集合进行区块划分,及对所述第四二维点集合进行区块划分;其中,每一区块包括至少一组二维点集合;对于所述第三二维点集合及所述第四二维点集合中的每一区块,获取所述区块中每组二维点集合之间的移动差值;删除所述移动差值小于预设移动阈值的二维点集合,以生成所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合,实现二维碰撞点集合的精简,降低计算的复杂度。
请参阅图2,本发明第二实施例提供了一种碰撞检测装置,包括:
碰撞帧获取模块11,用于在每一次更新游戏状态时,获取在该游戏状态内的第一对象的碰撞帧集合及第二对象的碰撞帧集合;其中,所述碰撞帧集合包括至少一个二维碰撞点集合及对应的集合序号。
碰撞检测模块12,用于根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测。
三维碰撞点获取模块13,用于当检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点。
碰撞时间获取模块14,用于根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间。
在第一方面的第一种实现方式中,还包括:
二维点集合获取模块,用于在游戏制作过程中,将所述第一对象对应的第一模型骨骼点信息投影到二维坐标中,以获取所述第一对象在一数据帧内对应的一组二维点集合;及,将所述第二对象对应的第二模型骨骼点信息投影到所述二维坐标中,以获取所述第二对象在一数据帧内对应的一组二维点集合。
二维碰撞点集合获取模块,用于根据预设的游戏状态更新频率及预设的输出密度,获取所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合。
根据第二方面的第一种实现方式,在第二方面的第二种实现方式中,所述二维碰撞点集合获取模块,具体包括:
点集合输出单元,用于根据预设的输出密度,获取所述第一对象对应的第一二维点集合及所述第二对象对应的第二二维点集合。
非攻击帧检测单元,用于根据对应的碰撞参数分别检测所述第一对象的非攻击帧及所述第二对象的非攻击帧。
第一点集合删除单元,用于根据所述第一对象的非攻击帧删除所述第一二维点集合中对应的二维点集合,及根据所述第二对象的非攻击帧删除所述第二二维点集合中对应的二维点集合,以获取所述第一对象对应的第三二维点集合及所述第二对象对应的第四二维点集合。
区块划分单元,用于根据预设的游戏状态更新频率,对所述第三二维点集合进行区块划分,及对所述第四二维点集合进行区块划分;其中,每一区块包括至少一组二维点集合。
移动差值获取单元,用于对于所述第三二维点集合及所述第四二维点集合中的每一区块,获取所述区块中每组二维点集合之间的移动差值。
第二点集合删除单元,用于删除所述移动差值小于预设移动阈值的二维点集合,以生成所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合。
根据第二方面的第二种实现方式,在第二方面的第三种实现方式中,所述碰撞检测模块12具体包括:
矩形获取单元,用于获取所述第一对象的每一二维碰撞点集合对应的第一矩形,及获取所述第二对象的每一二维碰撞点集合对应的第二矩形。
相交检测单元,用于根据所述第一对象的集合序号与所述第二对象的集合序号的对应顺序,对所述第一矩形及对应的第二矩形一一进行相交检测。
根据第二方面的第三种实现方式,在第二方面的第四种实现方式中,所述矩形获取单元具体包括:
向量计算子单元,用于根据所述第一对象的每一二维碰撞点集合中的N个二维碰撞点生成(N-1)个向量,及根据所述第二对象的每一二维碰撞点集合中的M个二维碰撞点生成(M-1)个向量;其中,N≥1,M≥1。
第一矩形生产子单元,用于对于第一对象中的每一个向量,根据所述向量的法线方向及所述预设移动阈值计算第一矩形起点坐标,及根据所述向量的长度计算所述第一矩形的长宽。
第二矩形生产子单元,用于对于第二对象中的每一个向量,根据所述向量的法线方向及所述预设移动阈值计算第二矩形起点坐标,及根据所述向量的长度计算所述第二矩形的长宽。
根据第二方面的第四种实现方式,在第二方面的第五种实现方式中,所述三维碰撞点获取模块13,具体包括:
二维点集合获取单元,用于当判断所述第一对象的第一矩形与对应的所述第二对象的第二矩形相交时,获取相交时对应的第一对象的二维点集合。
三维碰撞点计算单元,用于通过投影方式,根据所述二维点集合计算在三维场景中的实际的三维碰撞点。
根据第二方面的第五种实现方式,在第二方面的第六种实现方式中,所述碰撞时间获取模块14具体包括:
根据相交时对应的第一对象的二维点集合的集合序号、当前游戏状态更新时间及更新周期,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间点。
参见图3,是本发明第三实施例提供的碰撞检测终端设备的示意图。如图3所示,该碰撞检测终端设备包括:至少一个处理器110,例如CPU,至少一个网络接口140或者其他用户接口130,存储器150,至少一个通信总线120,通信总线120用于实现这些组件之间的连接通信。其中,用户接口130可选的可以包括USB接口以及其他标准接口、有线接口。网络接口140可选的可以包括Wi-Fi接口以及其他无线接口。存储器150可能包含高速RAM存储器,也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器150可选的可以包含至少一个位于远离前述处理器110的存储装置。
在一些实施方式中,存储器150存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统151,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;
程序152。
具体地,处理器110用于调用存储器150中存储的程序152,执行上述实施例所述的碰撞检测方法,例如图1所示的步骤S11。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如碰撞帧获取模块。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述碰撞检测终端设备中的执行过程。
所述碰撞检测终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述碰撞检测终端设备可包括,但不仅限于,处理器、存储器等等。本领域技术人员可以理解,所述示意图仅仅是碰撞检测终端设备的示例,并不构成对碰撞检测终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述碰撞检测终端设备的控制中心,利用各种接口和线路连接整个碰撞检测终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述碰撞检测终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述碰撞检测终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (8)
1.一种碰撞检测方法,其特征在于,包括以下步骤:
在游戏制作过程中,将第一对象对应的第一模型骨骼点信息投影到二维坐标中,以获取所述第一对象在一数据帧内对应的一组二维点集合;及,将第二对象对应的第二模型骨骼点信息投影到所述二维坐标中,以获取所述第二对象在一数据帧内对应的一组二维点集合;
根据预设的游戏状态更新频率及预设的输出密度,获取所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合;
在每一次更新游戏状态时,获取在该游戏状态内的所述第一对象的碰撞帧集合及所述第二对象的碰撞帧集合;其中,碰撞帧集合包括至少一个二维碰撞点集合及对应的集合序号;
根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测;
当检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点;以及,
根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间;
其中,所述根据预设的游戏状态更新频率及预设的输出密度,获取所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合,具体为:
根据预设的输出密度,获取所述第一对象对应的第一二维点集合及所述第二对象对应的第二二维点集合;
根据对应的碰撞参数分别检测所述第一对象的非攻击帧及所述第二对象的非攻击帧;
根据所述第一对象的非攻击帧删除所述第一二维点集合中对应的二维点集合,及根据所述第二对象的非攻击帧删除所述第二二维点集合中对应的二维点集合,以获取所述第一对象对应的第三二维点集合及所述第二对象对应的第四二维点集合;
根据预设的游戏状态更新频率,对所述第三二维点集合进行区块划分,及对所述第四二维点集合进行区块划分;其中,每一区块包括至少一组二维点集合;
对于所述第三二维点集合及所述第四二维点集合中的每一区块,获取所述区块中每组二维点集合之间的移动差值;
删除所述移动差值小于预设移动阈值的二维点集合,以生成所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合。
2.根据权利要求1所述的碰撞检测方法,其特征在于,所述根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测,具体为:
获取所述第一对象的每一二维碰撞点集合对应的第一矩形,及获取所述第二对象的每一二维碰撞点集合对应的第二矩形;
根据所述第一对象的集合序号与所述第二对象的集合序号的对应顺序,对所述第一矩形及对应的第二矩形一一进行相交检测。
3.根据权利要求2所述的碰撞检测方法,其特征在于,所述获取所述第一对象的每一二维碰撞点集合对应的第一矩形,及获取所述第二对象的每一二维碰撞点集合对应的第二矩形,具体为:
根据所述第一对象的每一二维碰撞点集合中的N个二维碰撞点生成(N-1)个向量,及根据所述第二对象的每一二维碰撞点集合中的M个二维碰撞点生成(M-1)个向量;其中,N≥1,M≥1;
对于第一对象中的每一个向量,根据所述向量的法线方向及所述预设移动阈值计算第一矩形起点坐标,及根据所述向量的长度计算所述第一矩形的长宽;
对于第二对象中的每一个向量,根据所述向量的法线方向及所述预设移动阈值计算第二矩形起点坐标,及根据所述向量的长度计算所述第二矩形的长宽。
4.根据权利要求3所述的碰撞检测方法,其特征在于,所述当检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点,具体为:
当判断所述第一对象的第一矩形与对应的所述第二对象的第二矩形相交时,获取相交时对应的第一对象的二维点集合;
通过投影方式,根据所述二维点集合计算在三维场景中的实际的三维碰撞点。
5.根据权利要求4所述的碰撞检测方法,其特征在于,所述根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间,具体为:
根据相交时对应的第一对象的二维点集合的集合序号、当前游戏状态更新时间及更新周期,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间点。
6.一种碰撞检测装置,其特征在于,包括:
二维点集合获取模块,用于在游戏制作过程中,将第一对象对应的第一模型骨骼点信息投影到二维坐标中,以获取所述第一对象在一数据帧内对应的一组二维点集合;及,将第二对象对应的第二模型骨骼点信息投影到所述二维坐标中,以获取所述第二对象在一数据帧内对应的一组二维点集合;
二维碰撞点集合获取模块,用于根据预设的游戏状态更新频率及预设的输出密度,获取所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合;
碰撞帧获取模块,用于在每一次更新游戏状态时,获取在该游戏状态内的所述第一对象的碰撞帧集合及所述第二对象的碰撞帧集合;其中,碰撞帧集合包括至少一个二维碰撞点集合及对应的集合序号;
碰撞检测模块,用于根据所述集合序号,将所述第一对象的每一二维碰撞点集合与对应集合序号的所述第二对象的二维碰撞点集合一一进行碰撞检测;
三维碰撞点获取模块,用于当检测到所述第一对象与所述第二对象发生碰撞时,根据该次碰撞对应的第一对象的二维碰撞点集合,计算所述第一对象与所述第二对象发生碰撞时的三维碰撞点;以及,
碰撞时间获取模块,用于根据该次碰撞对应的第一对象的二维碰撞点集合的集合序号,获取所述第一对象与所述第二对象发生碰撞时的碰撞时间;
其中,所述二维碰撞点集合获取模块,具体包括:
点集合输出单元,用于根据预设的输出密度,获取所述第一对象对应的第一二维点集合及所述第二对象对应的第二二维点集合;
非攻击帧检测单元,用于根据对应的碰撞参数分别检测所述第一对象的非攻击帧及所述第二对象的非攻击帧;
第一点集合删除单元,用于根据所述第一对象的非攻击帧删除所述第一二维点集合中对应的二维点集合,及根据所述第二对象的非攻击帧删除所述第二二维点集合中对应的二维点集合,以获取所述第一对象对应的第三二维点集合及所述第二对象对应的第四二维点集合;
区块划分单元,用于根据预设的游戏状态更新频率,对所述第三二维点集合进行区块划分,及对所述第四二维点集合进行区块划分;其中,每一区块包括至少一组二维点集合;
移动差值获取单元,用于对于所述第三二维点集合及所述第四二维点集合中的每一区块,获取所述区块中每组二维点集合之间的移动差值;
第二点集合删除单元,用于删除所述移动差值小于预设移动阈值的二维点集合,以生成所述第一对象对应的二维碰撞点集合及所述第二对象对应的二维碰撞点集合。
7.一种碰撞检测终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至5中任意一项所述的碰撞检测方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至5中任意一项所述的碰撞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810840419.6A CN108970113B (zh) | 2018-07-26 | 2018-07-26 | 一种碰撞检测方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810840419.6A CN108970113B (zh) | 2018-07-26 | 2018-07-26 | 一种碰撞检测方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108970113A CN108970113A (zh) | 2018-12-11 |
CN108970113B true CN108970113B (zh) | 2021-07-23 |
Family
ID=64551810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810840419.6A Active CN108970113B (zh) | 2018-07-26 | 2018-07-26 | 一种碰撞检测方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108970113B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110505493B (zh) * | 2019-09-04 | 2022-07-15 | 广州方硅信息技术有限公司 | 基于游戏的碰撞检测方法、游戏交互方法及直播系统 |
CN111054066B (zh) * | 2019-12-17 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 虚拟道具的操作方法和装置、存储介质及电子装置 |
CN111475307B (zh) * | 2020-04-02 | 2023-04-28 | 北京代码乾坤科技有限公司 | 物理结算的处理方法和装置 |
CN111467796B (zh) * | 2020-04-02 | 2023-05-02 | 北京代码乾坤科技有限公司 | 分布式物理结算方法和装置 |
CN111569424B (zh) * | 2020-05-14 | 2023-04-28 | 北京代码乾坤科技有限公司 | 游戏场景内的物理结算方法和装置 |
CN112540711B (zh) * | 2020-11-30 | 2022-08-05 | 国机工业互联网研究院(河南)有限公司 | 一种在网页端选取三维空间物体的控制方法、装置及设备 |
CN112927332B (zh) * | 2021-04-02 | 2023-06-09 | 腾讯科技(深圳)有限公司 | 骨骼动画更新方法、装置、设备及存储介质 |
CN113509725A (zh) * | 2021-07-08 | 2021-10-19 | 杭州炎魂网络科技有限公司 | 一种二维游戏角色移动控制方法、装置及存储介质 |
CN114470786B (zh) * | 2022-01-27 | 2023-12-01 | 北京字跳网络技术有限公司 | 帧同步数据处理方法、装置、可读介质和电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009146368A (ja) * | 2007-12-13 | 2009-07-02 | Tsuneo Ikedo | 可視衝突検出回路 |
CN101615305A (zh) * | 2009-07-24 | 2009-12-30 | 腾讯科技(深圳)有限公司 | 碰撞检测的方法和装置 |
CN102509317A (zh) * | 2011-09-27 | 2012-06-20 | 北京像素软件科技股份有限公司 | 一种实时碰撞检测系统的实现方法 |
CN105590339A (zh) * | 2015-12-15 | 2016-05-18 | 广州南沙3D打印创新研究院 | 三维模型的碰撞检测方法及系统 |
CN106215419A (zh) * | 2016-07-28 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 碰撞控制方法及装置 |
CN107067451A (zh) * | 2017-04-07 | 2017-08-18 | 广州爱九游信息技术有限公司 | 动画中动态骨骼的实现方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100251185A1 (en) * | 2009-03-31 | 2010-09-30 | Codemasters Software Company Ltd. | Virtual object appearance control |
-
2018
- 2018-07-26 CN CN201810840419.6A patent/CN108970113B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009146368A (ja) * | 2007-12-13 | 2009-07-02 | Tsuneo Ikedo | 可視衝突検出回路 |
CN101615305A (zh) * | 2009-07-24 | 2009-12-30 | 腾讯科技(深圳)有限公司 | 碰撞检测的方法和装置 |
CN102509317A (zh) * | 2011-09-27 | 2012-06-20 | 北京像素软件科技股份有限公司 | 一种实时碰撞检测系统的实现方法 |
CN105590339A (zh) * | 2015-12-15 | 2016-05-18 | 广州南沙3D打印创新研究院 | 三维模型的碰撞检测方法及系统 |
CN106215419A (zh) * | 2016-07-28 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 碰撞控制方法及装置 |
CN107067451A (zh) * | 2017-04-07 | 2017-08-18 | 广州爱九游信息技术有限公司 | 动画中动态骨骼的实现方法和装置 |
Non-Patent Citations (1)
Title |
---|
结合二维算法的三维快速碰撞检测算法;邹承明,汤智勇;《软件导刊》;20090430(第8卷第4期);第50-52页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108970113A (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108970113B (zh) | 一种碰撞检测方法、装置、设备及介质 | |
CN111815755B (zh) | 虚拟物体被遮挡的区域确定方法、装置及终端设备 | |
US11605214B2 (en) | Method, device and storage medium for determining camera posture information | |
CN108898643B (zh) | 图像生成方法、装置与计算机可读存储介质 | |
CN109598744B (zh) | 一种视频跟踪的方法、装置、设备和存储介质 | |
CN111062864B (zh) | 动画模型缩放方法及装置、电子设备、存储介质 | |
CN110850961B (zh) | 一种头戴式显示设备的校准方法及头戴式显示设备 | |
CN111369428B (zh) | 虚拟头像生成方法和装置 | |
CN107590474B (zh) | 解锁控制方法及相关产品 | |
CN108965575B (zh) | 一种手势动作识别方法、装置和终端设备 | |
CN114677473A (zh) | 三维模型的重建方法、装置、设备及存储介质 | |
CN110248165B (zh) | 标签显示方法、装置、设备及存储介质 | |
CN113536613B (zh) | 一种人群疏散模拟方法、装置、终端设备及存储介质 | |
CN112068739A (zh) | 一种红外触摸响应方法、装置及存储介质 | |
CN109377552B (zh) | 图像遮挡计算方法、装置、计算设备及存储介质 | |
CN109697083B (zh) | 数据的定点化加速方法、装置、电子设备及存储介质 | |
CN113256484B (zh) | 一种对图像进行风格化处理的方法及装置 | |
CN113844034B (zh) | 三维模型打孔处理方法、打印方法、相关设备和存储介质 | |
CN112634444B (zh) | 一种基于三维信息的人体姿态迁移方法、装置、存储介质及终端 | |
CN113436300A (zh) | 爆炸动画的实现方法、装置、电子设备及存储介质 | |
CN116433809A (zh) | 表情驱动方法、以及模型训练方法 | |
CN108073899B (zh) | 基于骨骼信息的绊线检测的方法及装置 | |
CN111079643A (zh) | 基于神经网络的人脸检测方法、装置和电子设备 | |
EP4350570A1 (en) | Data processing method and apparatus and electronic device | |
EP4290469A1 (en) | Mesh model processing method and apparatus, electronic device, and medium |
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 |