CN113963028A - 一种碰撞检测方法、装置、计算机设备及存储介质 - Google Patents
一种碰撞检测方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN113963028A CN113963028A CN202111271875.1A CN202111271875A CN113963028A CN 113963028 A CN113963028 A CN 113963028A CN 202111271875 A CN202111271875 A CN 202111271875A CN 113963028 A CN113963028 A CN 113963028A
- Authority
- CN
- China
- Prior art keywords
- target detection
- detected
- target
- determining
- detection
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/215—Motion-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
Landscapes
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Image Analysis (AREA)
Abstract
本公开提供了一种碰撞检测方法、装置、计算机设备及存储介质,其中,该方法包括:基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的目标检测区域;其中,所述目标检测区域为对所述目标检测空间进行分块处理后的一个或多个检测区域;基于所述目标检测区域存在的除所述待检测物体外的目标检测物体,确定所述待检测物体对应的至少一个碰撞检测物体组合;针对任一碰撞检测物体组合,基于该碰撞检测物体组合中包含的各物体的位置信息,确定与该碰撞检测物体组合对应的碰撞检测结果。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种碰撞检测方法、装置、计算机设备及存储介质。
背景技术
几何模型间的碰撞检测是计算机动画、机器人、游戏设计等诸多领域的关键问题之一。快速而准确的碰撞检测对提高与人交互的真实感至关重要。
相关碰撞检测算法中,为了提高碰撞检测算法的准确性,一般采用暴力枚举的方法,对检测空间中的每个物体进行碰撞检测,然而这种方法所需要消耗的计算资源往往较大,碰撞检测效率较低。
发明内容
本公开实施例至少提供一种碰撞检测方法、装置、计算机设备及存储介质。
第一方面,本公开实施例提供了一种碰撞检测方法,包括:
基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的目标检测区域;其中,所述目标检测区域为对所述目标检测空间进行分块处理后的一个或多个检测区域;
基于所述目标检测区域存在的除所述待检测物体外的目标检测物体,确定所述待检测物体对应的至少一个碰撞检测物体组合;
针对任一碰撞检测物体组合,基于该碰撞检测物体组合中包含的各物体的位置信息,确定与该碰撞检测物体组合对应的碰撞检测结果。
一种可能的实施方式中,所述方法还包括根据以下步骤确定所述待检测物体:
确定所述目标检测空间中各待筛选物体的位置信息;
基于所述各待筛选物体的位置信息,确定各待筛选物体是否发生运动,并将发生运动的待筛选物体确定为所述待检测物体。
这样,通过将发生运动的待筛选物体作为待检测物体,更符合空间中物体发生碰撞的实际情况,从而能够提高碰撞检测效率和准确性。
一种可能的实施方式中,所述方法还包括根据以下步骤对所述目标检测空间进行分块处理:
基于所述目标检测空间中的物体的分布密度,确定所述目标检测空间在各个维度上进行分块处理的目标分块个数;
基于所述目标分块个数,从各个维度上对所述目标检测空间进行分块处理。
这样,根据物体的分布密度对目标检测空间进行分块,可以使得分块处理之后得到的检测区域的大小更符合目标检测空间当前场景下的实际碰撞检测需求,从而能够提高碰撞检测效率。
一种可能的实施方式中,在基于所述目标分块个数,从各个维度上对所述目标检测空间进行分块处理之后,所述方法还包括:
基于所述目标检测空间的预设目标维度,对所述分块处理后得到的检测区域进行合并,以对所述检测区域的目标维度进行维度压缩。
这样,通过对检测区域目标维度进行维度压缩,可以减少分块处理所需消耗的额外时间和空间损耗;另一方面,可以使得每个检测区域中可以存储更多的检测物体标识,且所需要维护的相应的数据结构也更为简单。
一种可能的实施方式中,所述方法还包括根据以下方法确定所述目标检测区域存在的除所述待检测物体外的目标检测物体:
基于所述目标检测区域对应的数据结构,确定所述目标检测区域存在的除所述待检测物体外的目标检测物体;其中,所述数据结构用于存储存在于该目标检测区域中的物体的标识。
一种可能的实施方式中,在基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的至少一个目标检测区域之前,所述方法还包括:
基于所述目标检测空间中的物体的形状类型的数量,确定所述待检测物体对应的目标包围盒算法;
基于所述目标包围盒算法确定所述待检测物体对应的包围盒,并根据所述包围盒在所述目标检测空间中的位置信息确定所述待检测物体在所述目标检测空间中的位置信息。
这样,由于物体形状类型的数量能够反映出当前目标检测空间中的物体数量和检测难度,因此基于目标检测空间中物体形状类型的数量,可以使得确定的所述待检测物体对应的目标包围盒算法更符合当前目标检测空间中的实际检测环境,从而使得碰撞检测结果更为准确。
一种可能的实施方式中,所述确定所述待检测物体对应的至少一个碰撞检测物体组合,包括:
基于各所述目标检测物体的边缘位置信息和预设搜索算法,确定所述待检测物体对应的至少一个碰撞检测物体组合。
第二方面,本公开实施例还提供一种碰撞检测装置,包括:
第一确定模块,用于基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的目标检测区域;其中,所述目标检测区域为对所述目标检测空间进行分块处理后的一个或多个检测区域;
第二确定模块,用于基于所述目标检测区域存在的除所述待检测物体外的目标检测物体,确定所述待检测物体对应的至少一个碰撞检测物体组合;
第三确定模块,用于针对任一碰撞检测物体组合,基于该碰撞检测物体组合中包含的各物体的位置信息,确定与该碰撞检测物体组合对应的碰撞检测结果。
一种可能的实施方式中,所述第一确定模块,还用于根据以下步骤确定所述待检测物体:
确定所述目标检测空间中各待筛选物体的位置信息;
基于所述各待筛选物体的位置信息,确定各待筛选物体是否发生运动,并将发生运动的待筛选物体确定为所述待检测物体。
一种可能的实施方式中,所述第一确定模块,还用于根据以下步骤对所述目标检测空间进行分块处理:
基于所述目标检测空间中的物体的分布密度,确定所述目标检测空间在各个维度上进行分块处理的目标分块个数;
基于所述目标分块个数,从各个维度上对所述目标检测空间进行分块处理。
一种可能的实施方式中,在基于所述目标分块个数,从各个维度上对所述目标检测空间进行分块处理之后,所述第一确定模块,还用于:
基于所述目标检测空间的预设目标维度,对所述分块处理后得到的检测区域进行合并,以对所述检测区域的目标维度进行维度压缩。
一种可能的实施方式中,所述第二确定模块,还用于根据以下方法确定所述目标检测区域存在的除所述待检测物体外的目标检测物体:
基于所述目标检测区域对应的数据结构,确定所述目标检测区域存在的除所述待检测物体外的目标检测物体;其中,所述数据结构用于存储存在于该目标检测区域中的物体的标识。
一种可能的实施方式中,在基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的至少一个目标检测区域之前,所述第一确定模块还用于:
基于所述目标检测空间中的物体的形状类型的数量,确定所述待检测物体对应的目标包围盒算法;
基于所述目标包围盒算法确定所述待检测物体对应的包围盒,并根据所述包围盒在所述目标检测空间中的位置信息确定所述待检测物体在所述目标检测空间中的位置信息。
一种可能的实施方式中,所述第二确定模块,在确定所述待检测物体对应的至少一个碰撞检测物体组合时,用于:
基于各所述目标检测物体的边缘位置信息和预设搜索算法,确定所述待检测物体对应的至少一个碰撞检测物体组合。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的碰撞检测方法、装置、计算机设备及存储介质,通过对目标检测空间进行分块处理,确定分块处理后的待检测物体所在的目标检测区域中所存在的其他目标检测物体,这样,其他目标检测物体即为可能与待检测物体发生碰撞的物体,这样在进行碰撞检测时,只需确定待检测物体是否与目标检测物体发生碰撞即可,无需对目标检测空间的其他物体进行处理,从而使得整个检测过程简洁高效,提高了碰撞检测的效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种碰撞检测方法的流程图;
图2示出了本公开实施例所提供的碰撞检测方法中,确定待检测物体对应的包围盒的具体方法的流程图;
图3示出了本公开实施例所提供的碰撞检测方法中,确定待检测物体的具体方法的流程图;
图4示出了本公开实施例所提供的碰撞检测方法中,对目标检测空间进行分块处理的具体方法的流程图;
图5示出了本公开实施例所提供的一种碰撞检测装置的示意图;
图6示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,相关碰撞检测算法中,为了提高碰撞检测算法的准确性,算法实现过程中所需要消耗的计算资源往往较大,从而提高了碰撞检测的成本,降低了碰撞检测的效率。
具体的,为了提高碰撞检测结果的准确性并避免遗漏,暴力枚举类的算法往往需要对检测空间中各物体进行检测,从而会增加碰撞检测所需消耗的计算资源;而针对特定场景优化的碰撞检测算法往往不具有快速部署到其他场景的能力,而当进行碰撞检测的搜索空间发生大量变化时,相关通用类碰撞检测算法的稳定性也较差,无法满足实际应用场景下所需的快速且稳定的碰撞检测需求。
基于上述研究,本公开提供了一种碰撞检测方法、装置、计算机设备及存储介质,通过对目标检测空间进行分块处理,确定分块处理后的待检测物体所在的目标检测区域中所存在的其他目标检测物体,这样,其他目标检测物体即为可能与待检测物体发生碰撞的物体,这样在进行碰撞检测时,只需确定待检测物体是否与目标检测物体发生碰撞即可,无需对目标检测空间的其他物体进行处理,从而使得整个检测过程简洁高效,提高了碰撞检测的效率。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种碰撞检测方法进行详细介绍,本公开实施例所提供的碰撞检测方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该碰撞检测方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例提供的碰撞检测方法的流程图,所述方法包括S101~S103,其中:
S101:基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的目标检测区域;其中,所述目标检测区域为对所述目标检测空间进行分块处理后的一个或多个检测区域。
S102:基于所述目标检测区域存在的除所述待检测物体外的目标检测物体,确定所述待检测物体对应的至少一个碰撞检测物体组合。
S103:针对任一碰撞检测物体组合,基于该碰撞检测物体组合中包含的各物体的位置信息,确定与该碰撞检测物体组合对应的碰撞检测结果。
以下是对上述步骤的详细介绍。
针对S101,所述目标检测空间为进行需要碰撞检测的区域,该区域可以为二维空间(即二维平面)、三维空间等多维空间,所述待检测物体即为所述目标检测空间中的物体。
一种可能的实施方式中,在基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的至少一个目标检测区域之前,如图2所示,可以通过以下步骤确定所述待检测物体对应的包围盒:
S201:基于所述目标检测空间中的物体的形状类型的数量,确定所述待检测物体对应的目标包围盒算法。
S202:基于所述目标包围盒算法确定所述待检测物体对应的包围盒,并根据所述包围盒在所述目标检测空间中的位置信息确定所述待检测物体在所述目标检测空间中的位置信息。
这里,可以确定出所述目标检测空间中物体形状类型的目标数量,并通过所述目标数量是否符合预设条件,在符合所述预设条件的情况下,确定所述目标检测空间中的目标包围盒算法为第一包围盒算法;以及,在所述目标数量不符合所述预设条件的情况下,确定所述目标检测空间中的目标包围盒算法为第二包围盒算法。
具体的,所述第一包围盒算法可以是精细化包裹算法,比如定向包围盒(OrientedBounding Box,OBB)算法;所述第二包围盒算法可以是非精细化包裹算法,比如轴对齐包围盒(Axis-Aligned Bounding Box,AABB)算法,在使用包围盒算法对待检测物体进行包裹之后,可以使用包围盒的各顶点坐标作为所述待检测物体在所述目标检测空间中的位置坐标,从而得到所述目标检测物体在所述目标检测空间中的位置信息。
示例性的,以所述预设条件为所述目标数量超过预设值3,目标检测空间中物体形状类型为球形、圆锥体、长方体、正方体为例,可以确定出所述目标检测空间中物体形状类型的目标数量为4,超过所述预设值,则可以使用OBB算法对所述待检测物体进行包裹,并将包裹之后得到的包围盒的边界坐标作为对应的待检测物体在所述目标检测空间中的位置信息。
这样,由于物体形状类型的数量能够反映出当前目标检测空间中的物体数量和检测难度,因此基于目标检测空间中物体形状类型的数量,可以使得确定的所述待检测物体对应的目标包围盒算法更符合当前目标检测空间中的实际检测环境,从而使得碰撞检测结果更为准确。
实际应用中,虽然目标检测空间中可能有很多物体,但不一定是所有的物体都会发生碰撞,在一些实施例中,可以将运动的物体作为待检测物体。
一种可能的实施方式中,如图3所示,可以根据以下步骤确定待检测物体:
S301:确定所述目标检测空间中各待筛选物体的位置信息。
S302:基于所述各待筛选物体的位置信息,确定各待筛选物体是否发生运动,并将发生运动的待筛选物体确定为所述待检测物体。
这里,可以每隔预设时长确定一次各待筛选物体的位置信息,在判断各待筛选物体是否发生运动时,可以将本次确定的位置信息与上一次确定的位置信息进行比对,判断是否有发生运动的物体,并将发生运动的物体确定为所述待检测物体。
这样,通过将发生运动的待筛选物体作为待检测物体,更符合空间中物体发生碰撞的实际情况,从而能够提高碰撞检测效率和准确性。
一种可能的实施方式中,如图4所示,可以通过以下步骤对所述目标检测空间进行分块处理:
S401:基于所述目标检测空间中的物体的分布密度,确定所述目标检测空间在各个维度上进行分块处理的目标分块个数。
S402:基于所述目标分块个数,从各个维度上对所述目标检测空间进行分块处理。
这里,所述目标空间中的物体可以是所述目标空间中的全部物体;或者,也可以是所述目标空间中预先设置的需要进行碰撞检测的物体,所述物体的分布密度,可以由所述目标检测空间的大小和所述目标检测空间中物体的数量确定。
示例性的,以所述目标检测空间为三维空间,空间大小为1立方米,所述目标检测空间中物体的数量为10,则所述物体的分布密度即为0.1立方米/个。
具体的,在基于所述目标检测空间中的物体的分布密度,确定所述目标分块个数时,可以根据所述物体的分布密度的数值,确定出分块处理后得到的检测区域的大小,并可以根据各检测区域的大小确定出所述目标分块个数,比如所述物体的分布密度为0.1立方米/个,则分块处理后的各检测区域的大小可以确定为0.1立方米(即可以与所述分布密度数值相同),根据0.1立方米可以确定需要为大小为2.7立方米的三维目标检测空间划分为27块,每个维度分别对应的目标分块个数为3个。
这样,根据物体的分布密度对目标检测空间进行分块,可以使得分块处理之后得到的检测区域的大小更符合目标检测空间当前场景下的实际碰撞检测需求,从而能够提高碰撞检测效率。
此外,在对所述目标检测空间进行分块时,还可以获取预设的目标分块个数,其中,该目标分块个数可以是针对当前的碰撞检测场景进行实验后得到的优选的分块个数,通过该分块个数可以使得整个碰撞检测流程的效率符合预设指标。
实际应用中,在对所述目标检测空间进行分块处理时,由于目标检测空间中的物体数量、各物体运动情况等信息的不确定性,因此在进行一次分块处理后,可以在预设时间间隔之后再次根据实际情况重新进行分块处理,以及相应的碰撞检测。
示例性的,以应用场景为游戏为例,在对游戏场景中当前帧的目标检测空间进行分块处理后,当游戏运行到下一帧时,可以根据场景内物体的变化情况(比如玩家操作等)以及游戏引擎的渲染信息(比如渲染预设的游戏事件的画面等),确定是否需要重新进行分块处理,并在确定需要进行重新分块处理的情况下,重新对所述目标检测空间进行分块处理。
这样,每次对目标检测空间进行分块处理时,由于都是根据所述目标检测空间当前的实际场景情况确定的,因此对每个检测区域进行数据结构维护时的复杂度都是相对稳定且可控的。
一种可能的实施方式中,在对所述目标检测空间进行分块处理之后,还可以基于所述目标检测空间的预设目标维度,对所述分块处理后得到的检测区域进行合并,以对所述检测区域的目标维度进行维度压缩。
这里,所述预设目标维度可以是所述目标检测空间中的任意一个维度;或者,所述预设目标维度也可以是所述目标检测空间中的多个维度,优选的,所述预设目标维度为预设的一个维度,目标维度的设置可以根据实际需求进行设置(比如碰撞检测的应用场景的维度数量),本公开实施例对此不做限定。
示例性的,以所述目标检测空间为三维空间,各维度分别为X、Y、Z对应的维度,每个维度分别对应的目标分块个数均为3为例,所述目标维度可以是Z轴对应的维度,维度压缩前所述目标检测空间中共有3×3×3个检测区域,维度压缩后所述目标检测空间中共有3×3个检测区域,每个检测区域由维度压缩前的3个检测区域构成,即维度压缩前的3个检测区域的信息存储在维度压缩后的1个检测区域对应的数据结构中。
这样,通过对检测区域目标维度进行维度压缩,可以减少分块处理所需消耗的额外时间和空间损耗;另一方面,可以使得每个检测区域中可以存储更多的检测物体标识,且所需要维护的相应的数据结构也更为简单。
S102:基于所述目标检测区域存在的除所述待检测物体外的目标检测物体,确定所述待检测物体对应的至少一个碰撞检测物体组合。
这里,所述碰撞检测物体组合中包括可能与待检测物体发生碰撞的检测物体标识。
一种可能的实施方式中,在确定所述目标检测区域存在的除所述待检测物体外的目标检测物体时,可以基于所述目标检测区域对应的数据结构,确定所述目标检测区域存在的除所述待检测物体外的目标检测物体;其中,所述数据结构用于存储存在于该目标检测区域中的物体的标识。
这里,在对所述目标检测空间进行分块处理后,可以针对各检测区域设置对应的数据结构以存储该目标检测区域的物体的标识,所述数据结构的结构类型可以是树结构(比如KD树)或者根据坐标进行排序的数组结构,针对任一检测区域,使用该检测区域对应的数据结构进行存储的过程,为将存在与该检测区域的物体的指针存储至该检测区域的数据结构中。
这样,通过上述过程中的分块处理和维度压缩处理,可以使得在维护各检测区域对应的数据结构时所需要维护的维度较少,从而可以提高进行碰撞检测的效率。
具体的,进行分块处理所带来的额外空间复杂度为O(n+p),其中n是目标检测空间中的物体个数,p为根据压缩处理后的数据结构确定的常数,由于进行了维度压缩处理,p的值相对较小,因此在维护数据结构时,能够降低由分块处理所带来的额外空间损耗的问题;另一方面,分块处理所带来的额外时间复杂度为O(km-n×log(P)),其中k表示每个维度上的分块个数,m表示目标检测空间的维度,n表示维度压缩处理的维度(一般为一维),P表示每个检测区域中期望的物体数量,由于分块个数可以根据物体数量(与所述分布密度相关)的变化而发生相应的调整,因此由分块处理所带来的额外时间消耗是稳定且可控的。
一种可能的实施方式中,在确定所述待检测物体对应的至少一个碰撞检测物体组合时,可以基于各所述目标检测物体的边缘位置信息和预设搜索算法,确定所述待检测物体对应的至少一个碰撞检测物体组合。
这里,所述预设搜索算法可以是与上述构建的KD树对应的KD树算法,以对所述KD树进行搜索;或者,所述预设搜索算法也可以是二分法等其他搜索算法,以对上述构建的数组进行搜索,通过所述搜索算法可以从所述目标检测空间对应的搜索空间中确定出与所述待检测物体可能发生碰撞的物体,从而确定出所述待检测物体对应的至少一个碰撞检测物体组合。
具体的,在使用二分法进行搜索时,需要先根据物体的坐标进行排序,得到待筛选的物体,以及筛选的先后顺序;在具体查询各个待筛选的物体时,可以根据所述筛选的先后顺序和二分法对应的查找策略,在所述目标检测空间对应的坐标轴中依次判断各个待筛选的物体是否存在与所述目标检测区域对应的目标范围内,当判断到不存于所述目标范围的物体时停止搜索,表征已完成对目标检测区域内物体的筛选,停止搜索前搜索到的各目标检测物体即为构成所述碰撞检测物体组合的目标检测物体;所述KD树算法的原理与所述二分法类似,在此不再赘述。需要说明的是,KD树算法适用于较高的维度(比如对三维空间进行所述维度压缩后的二维空间),而二分法适用于较低的维度(比如对二维空间进行所述维度压缩后的一维空间)。
S103:针对任一碰撞检测物体组合,基于该碰撞检测物体组合中包含的各物体的位置信息,确定与该碰撞检测物体组合对应的碰撞检测结果。
这里,针对任一碰撞检测物体组合,在确定该碰撞检测物体组合对应的碰撞检测结果时,可以针对该组碰撞检测物体组合中所包含的待检测物体和目标检测物体分别对应的几何形状,采用计算几何知识对应的检测算法进行检测,以判断该组碰撞检测物体组合中的目标检测物体是否与所述待检测物体发生碰撞。
具体的,在采用计算几何知识对应的检测算法进行检测时,可以根据目标检测物体和待检测物体的几何形状确定对应的检测算法,以判断所述目标检测物体是否与所述待检测物体发生碰撞。
示例性的,以所述待检测物体和所述目标检测物体的几何形状均为圆形为例,则对应的检测算法为判断所述待检测物体的圆心坐标和所述目标检测物体的圆心坐标之间的距离,是否大于所述待检测物体与所述目标检测物体分别对应的圆的半径之和,若大于半径之和,则表示没有发生碰撞,而若小于半径之和,则表示发生碰撞。
一种可能的实施方式中,本公开实施例所提供的碰撞检测方法可以应用在决策智能场景中,以作为该场景中智能体感知环境的手段,比如可以通过本申请所提供的碰撞检测方法对决策智能场景的环境中的物体进行碰撞检测,并根据碰撞检测结果对智能体进行相应的训练,从而使得训练后的智能体能够执行所述决策智能场景下的目标任务。
本公开实施例提供的碰撞检测方法,通过对目标检测空间进行分块处理,确定分块处理后的待检测物体所在的目标检测区域中所存在的其他目标检测物体,这样,其他目标检测物体即为可能与待检测物体发生碰撞的物体,这样在进行碰撞检测时,只需确定待检测物体是否与目标检测物体发生碰撞即可,无需对目标检测空间的其他物体进行处理,从而使得整个检测过程简洁高效,提高了碰撞检测的效率。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与碰撞检测方法对应的碰撞检测装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述碰撞检测方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图5所示,为本公开实施例提供的一种碰撞检测装置的架构示意图,所述装置包括:第一确定模块501、第二确定模块502、第三确定模块503;其中,
第一确定模块501,用于基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的目标检测区域;其中,所述目标检测区域为对所述目标检测空间进行分块处理后的一个或多个检测区域;
第二确定模块502,用于基于所述目标检测区域存在的除所述待检测物体外的目标检测物体,确定所述待检测物体对应的至少一个碰撞检测物体组合;
第三确定模块503,用于针对任一碰撞检测物体组合,基于该碰撞检测物体组合中包含的各物体的位置信息,确定与该碰撞检测物体组合对应的碰撞检测结果。
一种可能的实施方式中,所述第一确定模块501,还用于根据以下步骤确定所述待检测物体:
确定所述目标检测空间中各待筛选物体的位置信息;
基于所述各待筛选物体的位置信息,确定各待筛选物体是否发生运动,并将发生运动的待筛选物体确定为所述待检测物体。
一种可能的实施方式中,所述第一确定模块501,还用于根据以下步骤对所述目标检测空间进行分块处理:
基于所述目标检测空间中的物体的分布密度,确定所述目标检测空间在各个维度上进行分块处理的目标分块个数;
基于所述目标分块个数,从各个维度上对所述目标检测空间进行分块处理。
一种可能的实施方式中,在基于所述目标分块个数,从各个维度上对所述目标检测空间进行分块处理之后,所述第一确定模块501,还用于:
基于所述目标检测空间的预设目标维度,对所述分块处理后得到的检测区域进行合并,以对所述检测区域的目标维度进行维度压缩。
一种可能的实施方式中,所述第二确定模块502,还用于根据以下方法确定所述目标检测区域存在的除所述待检测物体外的目标检测物体:
基于所述目标检测区域对应的数据结构,确定所述目标检测区域存在的除所述待检测物体外的目标检测物体;其中,所述数据结构用于存储存在于该目标检测区域中的物体的标识。
一种可能的实施方式中,在基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的至少一个目标检测区域之前,所述第一确定模块501还用于:
基于所述目标检测空间中的物体的形状类型的数量,确定所述待检测物体对应的目标包围盒算法;
基于所述目标包围盒算法确定所述待检测物体对应的包围盒,并根据所述包围盒在所述目标检测空间中的位置信息确定所述待检测物体在所述目标检测空间中的位置信息。
一种可能的实施方式中,所述第二确定模块502,在确定所述待检测物体对应的至少一个碰撞检测物体组合时,用于:
基于各所述目标检测物体的边缘位置信息和预设搜索算法,确定所述待检测物体对应的至少一个碰撞检测物体组合。
本公开实施例提供的碰撞检测装置,通过对目标检测空间进行分块处理,确定分块处理后的待检测物体所在的目标检测区域中所存在的其他目标检测物体,这样,其他目标检测物体即为可能与待检测物体发生碰撞的物体,这样在进行碰撞检测时,只需确定待检测物体是否与目标检测物体发生碰撞即可,无需对目标检测空间的其他物体进行处理,从而使得整个检测过程简洁高效,提高了碰撞检测的效率。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图6所示,为本公开实施例提供的计算机设备600的结构示意图,包括处理器601、存储器602、和总线603。其中,存储器602用于存储执行指令,包括内存6021和外部存储器6022;这里的内存6021也称内存储器,用于暂时存放处理器601中的运算数据,以及与硬盘等外部存储器6022交换的数据,处理器601通过内存6021与外部存储器6022进行数据交换,当计算机设备600运行时,处理器601与存储器602之间通过总线603通信,使得处理器601在执行以下指令:
基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的目标检测区域;其中,所述目标检测区域为对所述目标检测空间进行分块处理后的一个或多个检测区域;
基于所述目标检测区域存在的除所述待检测物体外的目标检测物体,确定所述待检测物体对应的至少一个碰撞检测物体组合;
针对任一碰撞检测物体组合,基于该碰撞检测物体组合中包含的各物体的位置信息,确定与该碰撞检测物体组合对应的碰撞检测结果。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的碰撞检测方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的碰撞检测方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种碰撞检测方法,其特征在于,包括:
基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的目标检测区域;其中,所述目标检测区域为对所述目标检测空间进行分块处理后的一个或多个检测区域;
基于所述目标检测区域存在的除所述待检测物体外的目标检测物体,确定所述待检测物体对应的至少一个碰撞检测物体组合;
针对任一碰撞检测物体组合,基于该碰撞检测物体组合中包含的各物体的位置信息,确定与该碰撞检测物体组合对应的碰撞检测结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括根据以下步骤确定所述待检测物体:
确定所述目标检测空间中各待筛选物体的位置信息;
基于所述各待筛选物体的位置信息,确定各待筛选物体是否发生运动,并将发生运动的待筛选物体确定为所述待检测物体。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括根据以下步骤对所述目标检测空间进行分块处理:
基于所述目标检测空间中的物体的分布密度,确定所述目标检测空间在各个维度上进行分块处理的目标分块个数;
基于所述目标分块个数,从各个维度上对所述目标检测空间进行分块处理。
4.根据权利要求3所述的方法,其特征在于,在基于所述目标分块个数,从各个维度上对所述目标检测空间进行分块处理之后,所述方法还包括:
基于所述目标检测空间的预设目标维度,对所述分块处理后得到的检测区域进行合并,以对所述检测区域的目标维度进行维度压缩。
5.根据权利要求1~4任一所述的方法,其特征在于,所述方法还包括根据以下方法确定所述目标检测区域存在的除所述待检测物体外的目标检测物体:
基于所述目标检测区域对应的数据结构,确定所述目标检测区域存在的除所述待检测物体外的目标检测物体;其中,所述数据结构用于存储存在于该目标检测区域中的物体的标识。
6.根据权利要求1~5任一所述的方法,其特征在于,在基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的至少一个目标检测区域之前,所述方法还包括:
基于所述目标检测空间中的物体的形状类型的数量,确定所述待检测物体对应的目标包围盒算法;
基于所述目标包围盒算法确定所述待检测物体对应的包围盒,并根据所述包围盒在所述目标检测空间中的位置信息确定所述待检测物体在所述目标检测空间中的位置信息。
7.根据权利要求1~6任一所述的方法,其特征在于,所述确定所述待检测物体对应的至少一个碰撞检测物体组合,包括:
基于各所述目标检测物体的边缘位置信息和预设搜索算法,确定所述待检测物体对应的至少一个碰撞检测物体组合。
8.一种碰撞检测装置,其特征在于,包括:
第一确定模块,用于基于待检测物体在目标检测空间中的位置信息,确定待检测物体在所述目标检测空间中所处的目标检测区域;其中,所述目标检测区域为对所述目标检测空间进行分块处理后的一个或多个检测区域;
第二确定模块,用于基于所述目标检测区域存在的除所述待检测物体外的目标检测物体,确定所述待检测物体对应的至少一个碰撞检测物体组合;
第三确定模块,用于针对任一碰撞检测物体组合,基于该碰撞检测物体组合中包含的各物体的位置信息,确定与该碰撞检测物体组合对应的碰撞检测结果。
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的碰撞检测方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的碰撞检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111271875.1A CN113963028A (zh) | 2021-10-29 | 2021-10-29 | 一种碰撞检测方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111271875.1A CN113963028A (zh) | 2021-10-29 | 2021-10-29 | 一种碰撞检测方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113963028A true CN113963028A (zh) | 2022-01-21 |
Family
ID=79468266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111271875.1A Pending CN113963028A (zh) | 2021-10-29 | 2021-10-29 | 一种碰撞检测方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113963028A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114529604A (zh) * | 2022-01-25 | 2022-05-24 | 广州极点三维信息科技有限公司 | 一种空间物体定向碰撞检测方法、系统装置及介质 |
-
2021
- 2021-10-29 CN CN202111271875.1A patent/CN113963028A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114529604A (zh) * | 2022-01-25 | 2022-05-24 | 广州极点三维信息科技有限公司 | 一种空间物体定向碰撞检测方法、系统装置及介质 |
CN114529604B (zh) * | 2022-01-25 | 2022-12-13 | 广州极点三维信息科技有限公司 | 一种空间物体定向碰撞检测方法、系统装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109523621B (zh) | 对象的加载方法和装置、存储介质、电子装置 | |
JP6480606B2 (ja) | リアルタイムの仮想シーン内の円柱コライダと凸体との間の衝突を検出するための方法および端末およびストレージ媒体 | |
EP1746541B1 (en) | Rendering by using object symmetry | |
US20150109290A1 (en) | Device and method for removing noise points in point clouds | |
CN105953773B (zh) | 斜坡坡度角获取方法及装置 | |
CN114255160B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113963028A (zh) | 一种碰撞检测方法、装置、计算机设备及存储介质 | |
CN113656670A (zh) | 面向飞行数据的时空轨迹数据管理分析方法和装置 | |
CN109242973A (zh) | 一种碰撞测试方法、装置、电子设备及存储介质 | |
US8717382B2 (en) | Method of detecting collisions in graphics processing unit | |
CA1286409C (en) | Method for enhancing three-dimensional interference checking | |
Zadravec et al. | An almost distribution-independent incremental Delaunay triangulation algorithm | |
Wenzel et al. | Accelerating navigation in the VecGeom geometry modeller | |
Wong et al. | Continuous collision detection for deformable objects using permissible clusters | |
CN115238837A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN115511731A (zh) | 一种噪声处理方法和噪声处理设备 | |
CN114119846A (zh) | 分层层次细节模型生成方法及装置 | |
CN113052131A (zh) | 点云数据处理、自动驾驶车辆控制方法及装置 | |
Gissler et al. | Efficient Uniform Grids for Collision Handling in Medical Simulators. | |
Liu et al. | A continuous matching algorithm for interest management in distributed virtual environments | |
Cruz-Matías et al. | Compact union of disjoint boxes: An efficient decomposition model for binary volumes | |
Du et al. | DCCD: Distributed N-Body Rigid Continuous Collision Detection for Large-Scale Virtual Environments | |
Gregor et al. | Empirical evaluation of dissimilarity measures for 3d object retrieval with application to multi-feature retrieval | |
CN116416137B (zh) | 图像拼接方法、装置、设备和存储介质 | |
Abam et al. | Kinetic collision detection for convex fat objects |
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 |