CN116681857A - 一种空间碰撞检测方法、装置及电子设备 - Google Patents

一种空间碰撞检测方法、装置及电子设备 Download PDF

Info

Publication number
CN116681857A
CN116681857A CN202210167881.0A CN202210167881A CN116681857A CN 116681857 A CN116681857 A CN 116681857A CN 202210167881 A CN202210167881 A CN 202210167881A CN 116681857 A CN116681857 A CN 116681857A
Authority
CN
China
Prior art keywords
model
bounding box
target
collision detection
bounding boxes
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
Application number
CN202210167881.0A
Other languages
English (en)
Inventor
赵家元
周桂春
马浩源
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210167881.0A priority Critical patent/CN116681857A/zh
Priority to PCT/CN2022/110157 priority patent/WO2023159882A1/zh
Publication of CN116681857A publication Critical patent/CN116681857A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Image Analysis (AREA)

Abstract

本申请提供了一种空间碰撞检测方法、装置及电子设备,涉及人工智能技术领域。方法包括:对目标3D模型进行空间划分,得到至少两个区域,每个区域中均包括至少一个模型零件;确定每个区域的包围盒,确定每个区域中包含的各个模型零件的包围盒;对至少两个区域中的每两个区域的包围盒进行碰撞检测;当任意两个区域的包围盒间存在碰撞时,将在任意两个区域中所包含的各个模组零件的包围盒混合在一起进行碰撞检测;当任意两个区域的包围盒间不存在碰撞时,分别单独对任意两个区域中每个区域所包含的模型零件的包围盒进行碰撞检测;输出碰撞检测结果。由此,通过逐层检测的方式去除掉一些不必要的检测,降低了数据计算量和资源消耗,提升了检测效率。

Description

一种空间碰撞检测方法、装置及电子设备
技术领域
本申请涉及人工智能技术领域,尤其涉及一种空间碰撞检测方法、装置及电子设备。
背景技术
随着数字孪生技术的蓬勃发展,数字孪生技术在智慧城市、交通、电信、水利、工程、工业生产、能源、自动驾驶、公共应急等领域均可以提供应用服务。以对站点(site)数字孪生为例,其是将物理站点映射到数字世界,最终实现站点等基础设施从规划、设计、部署到运维的全生命周期的数字化的管理。在对站点实现数字孪生过程中,主要包括从物理世界采集数据,到物理世界全景构建、三维(3-dimension,3D)建模等数字资产构建,再到基于数字资产的数字孪生平台,为客户提供现场站点高效勘测、高效建模、建模质量检验、基于模型和全景的一整套数字孪生,从而帮助客户合理高效管理资产、站点设计规划、站点空间预评估、周边环境电磁波仿真等,减少客户上站次数,提高运营管理效率。
在数字孪生过程中,3D数字模型给空间信息提供了更为丰富的空间展示,使得可以将抽象的空间信息直观化和可视化,因此,3D数字模型是进行数字孪生的一个基础。在分析3D数字模型时,往往涉及3D建模、3D模型质量校验与3D场景空间应用分析等,这些应用常依赖复杂的空间评估能力。对于海量的站点交付,高效的空间碰撞检测能力是上述应用的基本能力,该能力的性能的强弱将直接影响项目的竞争力。因此,如何提升空间碰撞检测能力的性能是目前亟需解决的技术问题。
发明内容
本申请提供了一种空间碰撞检测方法、装置、电子设备、计算机存储介质及计算机程序产品,通过逐层对3D模型进行碰撞检测,提升了空间碰撞检测的效率和性能。
第一方面,本申请提供一种空间碰撞检测方法,方法包括:对目标3D模型进行空间划分,以得到至少两个区域,每个区域中均包括至少一个模型零件;确定每个区域的包围盒,确定每个区域中所包含的各个模型零件的包围盒;对至少两个区域中的每两个区域的包围盒进行碰撞检测;当任意两个区域的包围盒间存在碰撞时,将在任意两个区域中所包含的各个模组零件的包围盒混合在一起进行碰撞检测;当任意两个区域的包围盒间不存在碰撞时,分别单独对任意两个区域中每个区域所包含的模型零件的包围盒进行碰撞检测;输出碰撞检测结果。
这样,先对3D模型进行空间划分,得到多个区域,在对区域和模型零件进行碰撞检测,当两个区域间不存在碰撞时,分别单独对各个区域中的模型零件进行碰撞检测,当两个区域间存在碰撞时,将这两个区域中所包含的模型零件混合在一起进行碰撞检测。由此,通过分区域检测的方式可以去除掉一些不必要的检测(比如不存在碰撞的两个区域时,不对两个区域中所包含的模型零件的混合检测),降低了数据计算量和资源消耗,提升了检测效率。
在一种可能的实现方式中,方法还包括:当任意两个区域中每个区域均包括一个模型零件时,在对任意两个区域的包围盒进行碰撞检测后,停止对任意两个区域中所包含的模型零件的包围盒进行碰撞检测。这样,由于进行碰撞检测的两个区域的每个区域中均包括一个模型零件,因此,当两个区域间不存在碰撞时,可以确定这两个区域中的模型零件不存在碰撞,当两个区域间存在碰撞时,可以确定这两个区域中的模型零件存在碰撞;也即是说,此时由区域的碰撞检测结果,即可以获知到模型零件的碰撞检测结果,且两个碰撞检测结果相同,所以在完成这两个区域间的碰撞检测后,则不需要再对这两个区域中的模型零件进行碰撞检测,从而达到了降低数据计算量和资源消耗的目的,提升了检测效率。
在一种可能的实现方式中,每个模型零件中均包括至少一个模型组件,方法还包括:确定每个模型零件中所包含的各个模型组件的包围盒;当任意两个模型零件的包围盒间存在碰撞时,将在任意两个模型零件中所包含的各个模组组件的包围盒混合在一起进行碰撞检测;当任意两个模型零件的包围盒间不存在碰撞时,分别单独对任意两个模型零件中每个模型零件所包含的模型组件的包围盒进行碰撞检测。由此,在需要对模型组件进行碰撞检测时,通过逐层检测的方式可以去除掉一些不必要的检测,降低了数据计算量和资源消耗,提升了检测效率。
在一种可能的实现方式中,方法还包括:当任意两个模型零件中每个模型零件均包括一个模型组件时,在对任意两个模型零件的包围盒进行碰撞检测后,停止对任意两个模型零件中所包含的模型组件的包围盒进行碰撞检测。这样,由于进行碰撞检测的两个模型零件的每个模型零件中均包括一个模型组件,因此,当两个模型零件间不存在碰撞时,可以确定这两个模型零件中的模型组件不存在碰撞,当两个模型零件间存在碰撞时,可以确定这两个模型零件中的模型组件存在碰撞;也即是说,此时由模型零件的碰撞检测结果,即可以获知到模型组件的碰撞检测结果,且两个碰撞检测结果相同,所以在完成这两个模型零件间的碰撞检测后,则不需要再对这两个模型零件中的模型组件进行碰撞检测,从而达到了降低数据计算量和资源消耗的目的,提升了检测效率。
在一种可能的实现方式中,对目标3D模型进行空间划分,具体包括:确定目标3D模型的空间分布特点为稠密型,构建目标3D模型的第一包围盒;根据第一包围盒所围成的区域的空间复杂度,对第一包围盒所围成的区域进行划分。
在一种可能的实现方式中,对目标3D模型进行空间划分,具体包括:确定目标3D模型的空间分布特点为稀疏型,将目标3D模型中各个空间分布为稠密型的区域分别划分为一个单独的区域,以得到x个区域,x≥2;分别构建x个区域各自的包围盒,以得到x个第二包围盒;根据x个第二包围盒中各个第二包围盒所围成的区域的空间复杂度,对各个第二包围盒所围成的区域进行划分。
在一种可能的实现方式中,根据目标包围盒所围成的区域的空间复杂度,对目标包围盒所围成的区域进行划分,具体包括:判断目标包围盒所围成的区域的空间复杂度是否大于预设阈值,目标包围盒为第一包围盒或第二包围盒;若大于预设阈值,将目标包围盒所围成的区域均分为预设数量的区域,以及基于划分后得到的预设数量的区域进行空间划分;若小于或等于预设阈值,限制对目标包围盒所围成的区域进行划分。这样,通过设定分区的计算量阈值(即预设阈值)作为迭代的终止条件,解决了因模型复杂度不平均导致的数据倾斜,实现了计算任务的负载均衡,提高了内存计算进行分布式计算的效率。
在一种可能的实现方式中,目标包围盒所围成的区域的空间复杂度至少基于目标包围盒中所包含的模型组件的数量、顶点个数和目标包围盒的包络的大小确定,目标包围盒为第一包围盒或第二包围盒。
第二方面,本申请提供一种空间碰撞检测装置,装置包括:处理模块,用于对目标3D模型进行空间划分,以得到至少两个区域,每个区域中均包括至少一个模型零件;处理模块,还用于确定每个区域的包围盒,确定每个区域中所包含的各个模型零件的包围盒;处理模块,还用于对至少两个区域中的每两个区域的包围盒进行碰撞检测;其中,当任意两个区域的包围盒间存在碰撞时,将在任意两个区域中所包含的各个模组零件的包围盒混合在一起进行碰撞检测;当任意两个区域的包围盒间不存在碰撞时,分别单独对任意两个区域中每个区域所包含的模型零件的包围盒进行碰撞检测;输出模块,用于输出碰撞检测结果。
在一种可能的实现方式中,处理模块,还用于:当任意两个区域中每个区域均包括一个模型零件时,在对任意两个区域的包围盒进行碰撞检测后,停止对任意两个区域中所包含的模型零件的包围盒进行碰撞检测。
在一种可能的实现方式中,每个模型零件中均包括至少一个模型组件,处理模块,还用于:确定每个模型零件中所包含的各个模型组件的包围盒;当任意两个模型零件的包围盒间存在碰撞时,将在任意两个模型零件中所包含的各个模组组件的包围盒混合在一起进行碰撞检测;当任意两个模型零件的包围盒间不存在碰撞时,分别单独对任意两个模型零件中每个模型零件所包含的模型组件的包围盒进行碰撞检测。
在一种可能的实现方式中,处理模块,还用于:当任意两个模型零件中每个模型零件均包括一个模型组件时,在对任意两个模型零件的包围盒进行碰撞检测后,停止对任意两个模型零件中所包含的模型组件的包围盒进行碰撞检测。
在一种可能的实现方式中,在对目标3D模型进行空间划分时,处理模块具体用于:确定目标3D模型的空间分布特点为稠密型,构建目标3D模型的第一包围盒;根据第一包围盒所围成的区域的空间复杂度,对第一包围盒所围成的区域进行划分。
在一种可能的实现方式中,在对目标3D模型进行空间划分时,处理模块具体用于:确定目标3D模型的空间分布特点为稀疏型,将目标3D模型中各个空间分布为稠密型的区域分别划分为一个单独的区域,以得到x个区域,x≥2;分别构建x个区域各自的包围盒,以得到x个第二包围盒;根据x个第二包围盒中各个第二包围盒所围成的区域的空间复杂度,对各个第二包围盒所围成的区域进行划分。
在一种可能的实现方式中,在根据目标包围盒所围成的区域的空间复杂度,对目标包围盒所围成的区域进行划分时,处理模块具体用于:判断目标包围盒所围成的区域的空间复杂度是否大于预设阈值,目标包围盒为第一包围盒或第二包围盒;若大于预设阈值,将目标包围盒所围成的区域均分为预设数量的区域,以及基于划分后得到的预设数量的区域进行空间划分;若小于或等于预设阈值,限制对目标包围盒所围成的区域进行划分。
在一种可能的实现方式中,目标包围盒所围成的区域的空间复杂度至少基于目标包围盒中所包含的模型组件的数量、顶点个数和目标包围盒的包络的大小确定,目标包围盒为第一包围盒或第二包围盒。
第三方面,申请提供一种电子设备,该电子设备包括至少一个用于存储程序的存储器和至少一个用于执行存储器存储的程序的处理器。其中,当存储器存储的程序被执行时,处理器用于执行如第一方面中所提供的方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行如第一方面中所提供的方法。
第五方面,本申请提供一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行如第一方面中所提供的方法。
第六方面,本申请实施例提供了一种空间碰撞检测装置,包括至少一个处理器和接口;至少一个处理器通过接口获取程序指令或者数据;至少一个处理器用于执行程序行指令,以实现第一方面中提供的方法。
可以理解的是,上述第二方面至第六方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1是本申请实施例提供的一种系统架构的示意图;
图2是本申请实施例提供的一种数字孪生平台的硬件结构示意图;
图3是本申请实施例提供的一种空间碰撞检测方法的流程示意图;
图4是图3中对目标3D模型进行空间划分的步骤示意图;
图5是图4中根据各个包围盒对应的空间复杂度,对各个包围盒所围成的区域进行空间划分的步骤示意图;
图6是本申请实施例提供的一种对目标3D模型进行空间几何划分的过程示意图;
图7是本申请实施例提供的一种空间碰撞检测装置的结构示意图;
图8是本申请实施例提供的另一种空间碰撞检测装置的结构示意图。
具体实施方式
本文中术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中符号“/”表示关联对象是或者的关系,例如A/B表示A或者B。
本文中的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一响应消息和第二响应消息等是用于区别不同的响应消息,而不是用于描述响应消息的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或者两个以上,例如,多个处理单元是指两个或者两个以上的处理单元等;多个元件是指两个或者两个以上的元件等。
在对本申请实施例进行详细介绍之前,首先对本申请实施例涉及的名词进行解释。
(1)数字孪生
数字孪生是利用物理模型、传感器、运行记录等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完成映射,从而反映对应的实体装备的全生命周期过程。
(2)碰撞检测
碰撞检测是在3D环境中实现不同边界体积碰撞检测的技术。
(3)包围盒
包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。最常见的包围盒算法有:轴对齐包围盒(axis-aligned bounding box,AABB),球形包围盒(sphere),方向包围盒(oriented bounding box,OBB)。对象的AABB被定义为包含该对象,且边平行于坐标轴的最小六面体。描述一个AABB,仅需六个标量。对象的包围球被定义为包含该对象的最小的球体。对象的OBB被定义为包含该对象且相对于坐标轴方向任意的最小的长方体。其中,OBB包围盒比AABB包围盒和包围球更加紧密地逼近物体,能显著地减少包围体的个数。
(4)模型组件
模型组件是3D模型中拆分的最小单位。其中,3D模型可以是由各种模型组件拼装而成。
(5)模型零件
模型零件是在3D模型中由多个模型组件构成的零件。
(6)数据倾斜
数据倾斜是指在进行计算时,因数据分散度不够,而导致大量数据集中到了一台或者几台机器上计算,这些数据的计算速度远低于平均计算速度,从而导致整个计算过程过慢。
(7)分布式计算
分布式计算是将数据分解成许多小的部分,分配给多台计算机进行处理。
接下来对本申请实施例中的技术方案进行描述。
一般的,在进行空间碰撞检测时,主要采用两种方式。一种是基于单机工具针对模型组件包围盒进行预检测,再针对组件层进行顶点与面片的细致检测,最终得到结果集。另一种是利用分布式直接对组件层(顶点和面片)进行碰撞检测,其首先是将所有预处理过的模型数据保存到分布式弹性数据集合(resilient distributed dataset,RDD)中,然后再根据模型的几何位置,通过映射操作计算出每个模型的分区,最后可以通过筛选条件对组件层(顶点和面片)进行过滤得到结果集。
但第一种方式中,仅采用单层模型包围盒,其未对包围盒进行分区域分层,因此其不支持海量模型碰撞检测。第二种方式中,虽然采用分布式进行分区碰撞检测,实现了一定程度上的并行计算,但是其未采用包围盒进行预检测,全部采用顶点与面片的碰撞检测,占用大量的计算资源,随着空间内几何体数量的增加,计算量会以平方级别指数增加,当面对海量模型对象处理海量模型的场景时,其难以迅速解决检测问题。
进一步地,为了提升空间碰撞检测的性能,本申请实施例还提供了一种空间碰撞检测方法。该方案主要通过根据计算量进行空间划分,然后通过模型->零件->组件的包围盒分层,并逐层对包围盒和空间几何对象做碰撞检测,由此解决数据倾斜,模型分布稀疏,分配密度不均匀等导致的并行计算效果不佳的问题,降低数据计算量,降低资源消耗,提高检测效率。
示例性的,图1示出了本申请实施例提供的一种系统架构图。如图1所示,该系统架构主要包括3D建模系统100、数字孪生平台200和客户应用系统300。
3D建模系统100主要用于使用三维建模软件对数据采集装置采集到的数据构建3D数字模型(以下简称“3D模型”)。示例性的,数据采集装置可以包括全景相机、无人机与激光扫描仪等中的一种或多种。数据采集装置采集到的数据可以包括基站、机房等站点的全景照片、高精度图片、点云等信息,如站点的建筑结构及部署的设施设备等。
数字孪生平台200主要用于对3D建模系统100输入的3D模型进行分析,比如:对3D模型中的对象进行碰撞检测等,从而为运营商规划设计业务提供空间评估,无线仿真,模型质量校验等基础能力。示例性的,数字孪生平台200可以用于执行本申请实施例中提供的空间碰撞检测方法。示例性的,数字孪生平台200可以集成有分布式集群,以实现分布式计算,其中,该分布式集群可以但不限于是基于Spark的分布式内存计算框架与Hbase RDD存储框架的集群。在一些实施例中,3D建模系统100可以集成在数字孪生平台200上,此外,两者之间也可以单独布置。
客户应用系统300主要是用于空间计算、质量检测、仿真计算等的系统。在一些实施例中,客户应用系统300可以集成在数字孪生平台200上,此外,两者之间也可以单独布置。
示例性的,图2示出了本申请实施例提供的一种数字孪生平台200的硬件结构示意图。如图2所示,数字孪生平台200可以包括模型预处理模块210、碰撞区域划分模块220和分层碰撞检测模块230。
模型预处理模块210主要是用于获取并分析3D建模系统100输入到数字孪生平台200的3D模型,以及基于3D模型中的组件、零件、区域分层提取包围盒。在一些实施例中,模型预处理模块210可以读取3D建模系统100输入到数字孪生平台200的3D模型的信息,以获取到3D模型中模型组件的信息和模型零件的信息。示例性的,3D模型的信息可以为BIM(building information modeling)/OBJ(Object)/DAE(digital asset exchange)/CAD(computer aided design)等格式的文件。示例性的,模型组件的信息可以包括模型组件的顶点、面片、几何参数等信息;模型零件的信息可以包括组成模型零件的各个模型组件的信息,以及这些模型组件间的关联关系。
在一些实施例中,模型预处理模块210还可以基于包围盒提取方法(比如,AABB、OBB、Sphere等),按照不同场景的精细度要求,抽取不同类型的包围盒。例如,其可以基于OBB的包围盒提取方法构建3D模型中模型组件的包围盒,基于AABB的包围盒提取方法构建3D模型中模型零件的包围盒,基于AABB的包围盒提取方法构建整个3D模型的包围盒(该包围盒可以理解为是3D模型的最大的区域的包围盒)等等。
碰撞区域划分模块220主要是用于对经模型预处理模块210处理后的3D模型进行空间几何划分,以将模型组件和/或模型零件等分配到不同区域。在一些实施例中,碰撞区域划分模块220可以使用k-d树(k-dimensional树,kd-tree),R树(R-tree),8叉树等方式对3D模型进行空间几何划分。
分层碰撞检测模块230主要是用于对经碰撞区域划分模块220划分后的区域的包围盒、模型零件包围盒和/或模型组件包围盒逐层进行碰撞检测,以及输出碰撞检测结果。
接下来基于上文所描述的内容,对本申请实施例提供的空间碰撞检测方法进行介绍。
示例性的,图3示出了本申请实施例提供的空间碰撞检测方法的流程。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。例如,该方法可以但不限于由图1或2中所示的数字孪生平台200执行。如图3所示,该空间碰撞检测方法,可以包括以下步骤:
S301、对目标3D模型进行空间划分,以得到至少两个区域,每个区域中均包括至少一个模型零件。
具体地,在进行空间碰撞检测时,可以先对待进行空间碰撞检测的目标3D模型进行空间划分,以得到至少两个区域,其中,每个区域中均包括至少一个模型零件。示例性的,目标3D模型可以是由图1中所示的3D建模系统输入至数字孪生平台200。
S302、确定每个区域的包围盒,确定每个区域中所包含的各个模型零件的包围盒。
具体地,在对目标3D模型进行空间划分后,可以通过基于包围盒提取方法(比如,AABB、OBB、Sphere等),确定每个区域的包围盒,确定每个区域中所包含的各个模型零件的包围盒。
S303、对至少两个区域中的每两个区域的包围盒进行碰撞检测。
具体地,在确定出划分后的区域中的至少两个区域的包围盒后,可以开始进行碰撞检测。其中,可以对至少两个区域中的每两个区域的包围盒进行碰撞检测。例如,当划分后的区域为区域A、区域B和区域C时,可以对区域A的包围盒和区域B的包围盒进行碰撞检测,对区域A的包围盒和区域C的包围盒进行碰撞检测,区域B的包围盒和区域C的包围盒进行碰撞检测。
S304、当任意两个区域的包围盒间存在碰撞时,将在任意两个区域中所包含的各个模组零件的包围盒混合在一起进行碰撞检测;当任意两个区域的包围盒间不存在碰撞时,分别单独对任意两个区域中每个区域所包含的模型零件的包围盒进行碰撞检测。
具体地,在对任意两个区域的包围盒进行碰撞检测时,当该任意两个区域的包围盒间存在碰撞(例如,两个包围盒间存在公共部分等)时,可以将该任意两个区域中所包含的各个模组零件的包围盒混合在一起进行碰撞检测。当该任意两个区域的包围盒间不存在碰撞(例如,两个包围盒间不存在公共部分等)时,可以分别单独对该任意两个区域中每个区域所包含的模型零件的包围盒进行碰撞检测。由此以去除掉不必要的检测,提升检测效率。
举例来说,该任意两个区域为区域A和区域B,区域A中包含有模型零件a1和模型零件a2,区域B中包含有模型零件b1和模型零件b2。当区域A和区域B的包围盒间存在碰撞时,则需要将模型零件a1、模型零件a2、模型零件b1和模型零件b2混合在一起进行碰撞,此时需要进行碰撞的检测对为“模型零件a1和模型零件a2”、“模型零件b1和模型零件b2”、“模型零件a1和模型零件b1”、“模型零件a1和模型零件b2”、“模型零件a2和模型零件b1”、“模型零件a2和模型零件b2”。当区域A和区域B的包围盒间不存在碰撞时,则可以对模型零件a1和模型零件a2进行碰撞检测,以及对模型零件b1和模型零件b2进行碰撞检测,此时需要进行碰撞的检测对为“模型零件a1和模型零件a2”、“模型零件b1和模型零件b2”。
在一些实施例中,当该任意两个区域中每个区域均包括一个模型零件时,还可以确定每个模型零件中所包含的各个模型组件的包围盒,以及在对任意两个区域的包围盒进行碰撞检测后,可以停止对任意两个区域中所包含的模型零件的包围盒进行碰撞检测,以及将该任意两个区域的碰撞检测结果作为该任意两个区域中所包含的模型零件的检测结果。由于进行碰撞检测的两个区域的每个区域中均包括一个模型零件,因此,当两个区域间不存在碰撞时,可以确定这两个区域中的模型零件不存在碰撞,当两个区域间存在碰撞时,可以确定这两个区域中的模型零件存在碰撞;也即是说,此时由区域的碰撞检测结果,即可以获知到模型零件的碰撞检测结果,且两个碰撞检测结果相同,所以在完成这两个区域间的碰撞检测后,则不需要再对这两个区域中的模型零件进行碰撞检测,从而达到了降低数据计算量和资源消耗的目的,提升了检测效率。
在一些实施例中,每个模型零件中均包括至少一个模型组件,当任意两个模型零件的包围盒间存在碰撞时,将在任意两个模型零件中所包含的各个模组组件的包围盒混合在一起进行碰撞检测。当任意两个模型零件的包围盒间不存在碰撞时,分别单独对任意两个模型零件中每个模型零件所包含的模型组件的包围盒进行碰撞检测。此时的碰撞检测方式可以参考上述的碰撞检测方式,此处不再一一赘述。
另外,当任意两个模型零件中每个模型零件均包括一个模型组件时,在对任意两个模型零件的包围盒进行碰撞检测后,停止对任意两个模型零件中所包含的模型组件的包围盒进行碰撞检测。
S305、输出碰撞检测结果。
具体地,在碰撞检测完毕后,可以输出碰撞检测结果。在一些实施例中,碰撞检测结果可以包括区域间的碰撞检测结果和模型零件间的碰撞检测结果。另外,碰撞检测结果可以包括区域间的碰撞检测结果、模型零件间的碰撞检测结果,以及模型组件间的碰撞检测结果。
这样,先对3D模型进行空间划分,得到多个区域,在逐层对区域和模型零件进行碰撞检测,当两个区域间不存在碰撞时,分别单独对各个区域中的模型零件进行碰撞检测,当两个区域间存在碰撞时,将这两个区域中所包含的模型零件混合在一起进行碰撞检测。由此,通过逐层检测的方式可以去除掉一些不必要的检测,降低了数据计算量和资源消耗,提升了检测效率。
下面结合图4,对本申请实施例提供的空间碰撞检测方法中,对目标3D模型进行空间划分的步骤(即S301)进行详细说明。示例性的,图4为本申请实施例提供的空间碰撞检测方法中,对目标3D模型进行空间划分的步骤示意图。如图4所示,包括以下步骤:
S401、根据目标3D模型的空间分布特点,选择空间划分方法。
具体地,由3D建模系统输入的目标3D模型的信息中可以获知到该目标3D模型的空间分布特点,例如,该目标3D模型的空间分布是稀疏的还是稠密的。当目标3D模型的空间分布较为稀疏时,可以采用第一空间划分方法,当目标3D模型的空间分布较为稠密时,可以采用第二空间划分方法。当采用第一空间划分方法时,执行S402;当采用第二空间划分方法时,执行S403。
其中,第一空间划分方法是先对目标3D模型中的空间进行筛选,将目标3D模型中各个空间分布较为稠密的区域(比如模型零件和/或模型组件较多的区域)均划分为一个单独的区域,并构建各个单独的区域的包围盒,最后再分别对各个单独的区域的包围盒进行空间划分。由于各个单独的区域之间相隔较远,因此这些区域之间不会产生空间碰撞,所以在后续可以不对这些区域进行区域碰撞检测,由此以减少后续进行区域碰撞检测时的计算量。
示例性的,第一空间划分方法可以是先使用k-d树(k-dimensional树,kd-tree)和/或R树(R-tree)对目标3D模型进行处理,在使用8叉树分别对得到的不同的区域的包围盒进行处理。
第二空间划分方法是直接对整个目标3D模型的包围盒进行处理。示例性的,第二空间划分方法可以是使用8叉树直接对整个目标3D模型的包围盒进行处理。
S402、将目标3D模型中各个空间分布较为稠密的区域均划分为一个单独的区域,并构建各个单独的区域的包围盒。示例性的,可以基于AABB的包围盒提取方法构建各个单独的区域的包围盒。
S403、构建整个目标3D模型的包围盒。示例性的,可以基于AABB的包围盒提取方法构建整个目标3D模型的包围盒。
S404、确定各个包围盒所围成的区域的空间复杂度。
具体地,可以根据包围盒中所包含的模型组件的数量、顶点个数、包围盒的大小等,确定包围盒所围成的区域的空间复杂度。示例性的,可以通过以下公式确定包围盒所围成的区域的空间复杂度,该公式为:
其中,T表示空间复杂度,n表示模型组件的数量,v表示模型组件的顶点的个数的总和,S表示包围盒的包络的大小。
S405、根据各个包围盒对应的空间复杂度,对各个包围盒所围成的区域进行空间划分。
具体地,得到各个包围盒对应的空间复杂度后,可以对各个包围盒所围成的区域进行空间划分。其中,当包围盒对应的空间复杂度大于预设阈值时,可以使用第二空间划分方法继续对该包围盒所围成的区域进行划分,并继续计算划分后的各个包围盒对应的空间复杂度,以及继续由获取到的空间复杂度对这些包围盒所围成的区域进行空间划分。当包围盒对应的空间复杂度小于或等于预设阈值时,可以停止对该包围盒所围成的区域进行划分。由此以实现对目标3D模型进行空间几何划分,并将模型组件和/或模型零件等分配到不同区域,以及通过设定分区的计算量阈值(即预设阈值)作为迭代的终止条件,解决了因模型复杂度不平均导致的数据倾斜,实现了计算任务的负载均衡,提高了内存计算进行分布式计算的效率。示例性的,划分后的每个区域中均可以但不限于至少包含有一个模型组件。在一些实施例中,预设阈值可以根据分布式系统中各个节点的计算资源确定,由此以使得划分后的区域能够与当前的分布式系统中的各个节点的计算资源相匹配,提升碰撞检测效率。
作为一种可能的实现方式,当包围盒的总数为N个时,如图5所示,对N个包围盒所围成的区域进行空间划分,可以包括以下步骤:
S501、判断N个包围盒中第i个包围盒对应的空间复杂度是否大于预设阈值,i的初始值为1。
具体地,将N个包围盒中第i个包围盒对应的空间复杂度与预设阈值进行对比,即可以确定出两者之间的大小关系。当第i个包围盒对应的空间复杂度大于预设阈值时,执行S502;否则,执行S503。
S502、使用第二空间划分方法对第i个包围盒所围成的区域进行划分,以及构建划分后的各个区域的包围盒,以得到K个包围盒,并计算得到的K个包围盒对应的空间复杂度,且i=i+1,N=N+K。
具体地,当第i个包围盒对应的空间复杂度大于预设阈值时,可以使用第二空间划分方法对第i个包围盒所围成的区域进行划分,以及构建划分后的各个区域的包围盒,以得到K个包围盒,并计算得到的K个包围盒对应的空间复杂度,且i=i+1,N=N+K;以及,执行S504。
S503、停止对第i个包围盒所围成的区域进行划分,且i=i+1。
具体地,当第i个包围盒对应的空间复杂度小于或等于预设阈值时,可以停止对第i个包围盒所围成的区域进行划分,且i=i+1;以及,执行S504。
S504、判断i是否大于N。其中,当i大于N时,结束;否则,返回执行S501。
以上是对目标3D模型进行空间几何划分的过程,为便于理解,下面举例进行说明。
示例性的,如图6所示,假设整个目标3D模型的包围盒为包围盒41,且第二空间划分方法为8叉树划分方法。若计算得到的包围盒41所围成的区域复杂度大于预设阈值,则对该包围盒41所围成的区域进行平均切分,得到8个区域,每个区域均有各自对应的包围盒,其中,图中42所指的位置的图可以理解为是划分后的区域所对应的包围盒,图中A层的数字1至8可以理解为是划分后的区域1至8。接着,根据这8个包围盒所围成的区域的空间复杂度,再分别对这8个包围盒所围成的区域进行划分。其中,包围盒1、2、4、5、6和8所围成的区域的空间复杂度均小于预设阈值,因此,可以停止对这些包围盒所围成的区域进行划分。包围盒3和7所围成的区域的空间复杂度大于预设阈值,因此,可以分别对包围盒3和7所围成的区域进行划分,并分别得到8个区域,每个区域均有各自对应的包围盒,其中,图中43所指的位置的图可以理解为是划分后的区域所对应的包围盒,图中B层的数字1至8可以理解为是对包围盒3所围成的区域进行划分后得到的区域1至8,B层空白的圆圈可以理解为是对包围盒7所围成的区域进行划分后得到的区域1至8。
继续参阅图6,对应划分后得到的区域A3B1和A3B1,具体的区域及包围盒关系可以如表1所示。区域A3B1中包括的模型零件为射频拉远(Radio Remote Unit,RRU)装置,其对应的包围盒为RRU装置包围盒,组成RRU装置的模型组件可以包括RRU设备,RRU抱杆和连接件,这些模型零件对应包围盒分别为RRU设备包围盒,RRU抱杆包围盒和连接件包围盒。区域A3B2中包括的模型零件为天线装置,其对应的包围盒为天线装置包围盒,组成天线装置的模型组件可以包括天线设备,该模型零件对应包围盒为天线设备包围盒。
表1
区域 零件 组件 零件包围盒 组件包围盒
A3B1 RRU装置 RRU设备 RRU装置包围盒 RRU设备包围盒
A3B1 RRU装置 RRU抱杆 RRU装置包围盒 RRU抱杆包围盒
A3B1 RRU装置 连接件 RRU装置包围盒 连接件包围盒
A3B2 天线装置 天线设备 天线装置包围盒 天线设备包围盒
在一些实施例中,在对3D模型进行空间划分后,可以得到区域-零件-组件-包围盒的关系列表,比如上述表1所示的列表。
接下来,以碰撞检测的最小目标为模型组件为例,对本申请实施例提供的空间碰撞检测方法中,逐层进行碰撞检测的过程进行说明。
示例性的,在进行碰撞检测时,可以先构建碰撞检测对列表,再进行碰撞检测。碰撞检测对列表中可以包括区域碰撞检测对,零件碰撞检测对和组件碰撞检测对。其中,区域碰撞检测对可以将划分后得到的每两个区域作为一个区域碰撞检测对,零件碰撞检测对可以将3D模型中所包含的模型零件中每两个模型零件作为一个零件碰撞检测对,组件碰撞检测对可以将3D模型中所包含的模型组件中每两个模型组件作为一个组件碰撞检测对。
示例性的,对于构建出的碰撞检测对列表,可以如表2所示。其中,表2最后一列可根据实际情况进行选择,此处不做限定。
表2
在一些实施例中,构建出碰撞检测对列表后,可以将碰撞检测对列表发送到分布式集群系统,以由分布式集群系统进行碰撞检测,进而获取到碰撞检测报告(即碰撞检测结果)。示例性的,由上述表2得到的碰撞检测报告可以如表3所示。
表3
检测对ID 检测结果
GUID1 有碰撞
GUID2 有碰撞
GUID3 无碰撞
在一些实施例中,在构建出碰撞检测对后,可以进行碰撞检测。示例性的,可以先选取一个区域碰撞检测对进行碰撞检测,当这个区域碰撞检测对中的两个区域间存在碰撞时,从这两个区域所包含的模型零件所组成的零件碰撞检测对中选取一个零件碰撞检测对进行碰撞检测。当这个区域碰撞检测对中的两个区域间不存在碰撞时,可以由这两个区域中的一个区域所包含的模型零件得到一些零件碰撞检测对,以及由另一个区域所包含的模型零件得到一些零件碰撞检测对,然后,从这些零件碰撞检测对中选取一个零件碰撞检测对进行碰撞检测。
当选取的零件碰撞检测对中的两个模型零件间存在碰撞时,将从这两个模型零件所包含的模型组件所组成的组件碰撞检测对中选取一个组件碰撞检测对进行碰撞检测。当选取的零件碰撞检测对中的两个模型零件间不存在碰撞时,可以由这两个模型零件中的一个模型零件所包含的模型组件得到一些零件碰撞检测对,以及由另一个模型零件所包含的模型组件得到一些组件碰撞检测对,然后,从这些组件碰撞检测对中选取一个组件碰撞检测对进行碰撞检测。
在一些实施例中,可以先构建区域碰撞检测对和零件碰撞检测对,当需要进行模型组件的碰撞检测时,再构建组件碰撞检测对。由此以减少计算量,减低资源消耗。
可以理解的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。此外,在一些可能的实现方式中,上述实施例中的各步骤可以根据实际情况选择性执行,可以部分执行,也可以全部执行,此处不做限定。
基于上述实施例中的描述的方法,本申请实施例还提供了一种空间碰撞检测装置。如图7所示,该空间碰撞检测装置700包括:处理模块701,用于对目标3D模型进行空间划分,以得到至少两个区域,每个区域中均包括至少一个模型零件;处理模块701,还用于确定每个区域的包围盒,确定每个区域中所包含的各个模型零件的包围盒;处理模块701,还用于对至少两个区域中的每两个区域的包围盒进行碰撞检测;其中,当任意两个区域的包围盒间存在碰撞时,将在任意两个区域中所包含的各个模组零件的包围盒混合在一起进行碰撞检测;当任意两个区域的包围盒间不存在碰撞时,分别单独对任意两个区域中每个区域所包含的模型零件的包围盒进行碰撞检测;输出模块702,用于输出碰撞检测结果。
在一些实施例中,处理模块701,还用于:当任意两个区域中每个区域均包括一个模型零件时,在对任意两个区域的包围盒进行碰撞检测后,停止对任意两个区域中所包含的模型零件的包围盒进行碰撞检测。
在一些实施例中,每个模型零件中均包括至少一个模型组件,处理模块701,还用于:当任意两个模型零件的包围盒间存在碰撞时,将在任意两个模型零件中所包含的各个模组组件的包围盒混合在一起进行碰撞检测;当任意两个模型零件的包围盒间不存在碰撞时,分别单独对任意两个模型零件中每个模型零件所包含的模型组件的包围盒进行碰撞检测。
在一些实施例中,处理模块701,还用于:当任意两个模型零件中每个模型零件均包括一个模型组件时,在对任意两个模型零件的包围盒进行碰撞检测后,停止对任意两个模型零件中所包含的模型组件的包围盒进行碰撞检测。
在一些实施例中,在对目标3D模型进行空间划分时,处理模块701具体用于:确定目标3D模型的空间分布特点为稠密型,构建目标3D模型的第一包围盒;根据第一包围盒所围成的区域的空间复杂度,对第一包围盒所围成的区域进行划分。
在一些实施例中,在对目标3D模型进行空间划分时,处理模块701具体用于:确定目标3D模型的空间分布特点为稀疏型,将目标3D模型中各个空间分布为稠密型的区域分别划分为一个单独的区域,以得到x个区域,x≥2;分别构建x个区域各自的包围盒,以得到x个第二包围盒;根据x个第二包围盒中各个第二包围盒所围成的区域的空间复杂度,对各个第二包围盒所围成的区域进行划分。
在一些实施例中,在根据目标包围盒所围成的区域的空间复杂度,对目标包围盒所围成的区域进行划分时,处理模块701具体用于:判断目标包围盒所围成的区域的空间复杂度是否大于预设阈值,目标包围盒为第一包围盒或第二包围盒;若大于预设阈值,将目标包围盒所围成的区域均分为预设数量的区域,以及基于划分后得到的预设数量的区域进行空间划分;若小于或等于预设阈值,限制对目标包围盒所围成的区域进行划分。
在一些实施例中,目标包围盒所围成的区域的空间复杂度至少基于目标包围盒中所包含的模型组件的数量、顶点个数和目标包围盒的包络的大小确定,目标包围盒为第一包围盒或第二包围盒。
应当理解的是,上述装置用于执行上述实施例中的方法,装置中相应的程序模块,其实现原理和技术效果与上述方法中的描述类似,该装置的工作过程可参考上述方法中的对应过程,此处不再赘述。
基于上述实施例中的描述的方法,本申请实施例还提供了一种电子设备,该电子设备包括至少一个用于存储程序的存储器和至少一个用于执行存储器存储的程序的处理器。其中,当存储器存储的程序被执行时,处理器用于执行上述实施例中的方法。
基于上述实施例中的描述的方法,本申请实施例还提供了一种空间碰撞检测装置。请参阅图8,图8为本申请实施例提供的一种空间碰撞检测装置的结构示意图。如图8所示,空间碰撞检测装置800包括一个或多个处理器801以及接口电路802。可选的,空间碰撞检测装置800还可以包含总线803。其中:
处理器801可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器801中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器801可以是通用处理器、神经网络处理器(Neural Network Processing Unit,NPU)、数字通信器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
接口电路802可以用于数据、指令或者信息的发送或者接收,处理器801可以利用接口电路802接收的数据、指令或者其它信息,进行加工,可以将加工完成信息通过接口电路802发送出去。
可选的,空间碰撞检测装置800还包括存储器,存储器可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(NVRAM)。其中,该存储器可以与处理器801耦合。
可选的,存储器存储了可执行软件模块或者数据结构,处理器801可以通过调用存储器存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
可选的,接口电路802可用于输出处理器801的执行结果。
需要说明的,处理器801、接口电路802各自对应的功能既可以通过硬件设计实现,也可以通过软件设计来实现,还可以通过软硬件结合的方式来实现,这里不作限制。
应理解,上述方法实施例的各步骤可以通过处理器中的硬件形式的逻辑电路或者软件形式的指令完成。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。

Claims (19)

1.一种空间碰撞检测方法,其特征在于,所述方法包括:
对目标3D模型进行空间划分,以得到至少两个区域,每个所述区域中均包括至少一个模型零件;
确定每个所述区域的包围盒,确定每个所述区域中所包含的各个模型零件的包围盒;
对所述至少两个区域中的每两个区域的包围盒进行碰撞检测;
当任意两个所述区域的包围盒间存在碰撞时,将在所述任意两个所述区域中所包含的各个模组零件的包围盒混合在一起进行碰撞检测;
当所述任意两个所述区域的包围盒间不存在碰撞时,分别单独对所述任意两个所述区域中每个区域所包含的模型零件的包围盒进行碰撞检测;
输出碰撞检测结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述任意两个所述区域中每个区域均包括一个模型零件时,在对所述任意两个所述区域的包围盒进行碰撞检测后,停止对所述任意两个所述区域中所包含的模型零件的包围盒进行碰撞检测。
3.根据权利要求1或2所述的方法,其特征在于,每个所述模型零件中均包括至少一个模型组件,所述方法还包括:
确定每个所述模型零件中所包含的各个模型组件的包围盒;
当任意两个所述模型零件的包围盒间存在碰撞时,将在所述任意两个所述模型零件中所包含的各个模组组件的包围盒混合在一起进行碰撞检测;
当所述任意两个所述模型零件的包围盒间不存在碰撞时,分别单独对所述任意两个所述模型零件中每个模型零件所包含的模型组件的包围盒进行碰撞检测。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述任意两个所述模型零件中每个模型零件均包括一个模型组件时,在对所述任意两个所述模型零件的包围盒进行碰撞检测后,停止对所述任意两个所述模型零件中所包含的模型组件的包围盒进行碰撞检测。
5.根据权利要求1-4任一所述的方法,其特征在于,所述对目标3D模型进行空间划分,具体包括:
确定所述目标3D模型的空间分布特点为稠密型,构建所述目标3D模型的第一包围盒;
根据所述第一包围盒所围成的区域的空间复杂度,对所述第一包围盒所围成的区域进行划分。
6.根据权利要求1-4任一所述的方法,其特征在于,所述对目标3D模型进行空间划分,具体包括:
确定所述目标3D模型的空间分布特点为稀疏型,将所述目标3D模型中各个空间分布为稠密型的区域分别划分为一个单独的区域,以得到x个区域,x≥2;
分别构建所述x个区域各自的包围盒,以得到x个第二包围盒;
根据所述x个第二包围盒中各个第二包围盒所围成的区域的空间复杂度,对各个所述第二包围盒所围成的区域进行划分。
7.根据权利要求5或6所述的方法,其特征在于,根据目标包围盒所围成的区域的空间复杂度,对所述目标包围盒所围成的区域进行划分,具体包括:
判断所述目标包围盒所围成的区域的空间复杂度是否大于预设阈值,所述目标包围盒为所述第一包围盒或所述第二包围盒;
若大于所述预设阈值,将所述目标包围盒所围成的区域均分为预设数量的区域,以及基于划分后得到的所述预设数量的区域进行空间划分;
若小于或等于所述预设阈值,限制对所述目标包围盒所围成的区域进行划分。
8.根据权利要求5-7任一所述的方法,其特征在于,目标包围盒所围成的区域的空间复杂度至少基于所述目标包围盒中所包含的模型组件的数量、顶点个数和所述目标包围盒的包络的大小确定,所述目标包围盒为所述第一包围盒或所述第二包围盒。
9.一种空间碰撞检测装置,其特征在于,所述装置包括:
处理模块,用于对目标3D模型进行空间划分,以得到至少两个区域,每个所述区域中均包括至少一个模型零件;
所述处理模块,还用于确定每个所述区域的包围盒,确定每个所述区域中所包含的各个模型零件的包围盒;
所述处理模块,还用于对所述至少两个区域中的每两个区域的包围盒进行碰撞检测;其中,当任意两个所述区域的包围盒间存在碰撞时,将在所述任意两个所述区域中所包含的各个模组零件的包围盒混合在一起进行碰撞检测;当所述任意两个所述区域的包围盒间不存在碰撞时,分别单独对所述任意两个所述区域中每个区域所包含的模型零件的包围盒进行碰撞检测;
输出模块,用于输出碰撞检测结果。
10.根据权利要求9所述的装置,其特征在于,所述处理模块,还用于:
当所述任意两个所述区域中每个区域均包括一个模型零件时,在对所述任意两个所述区域的包围盒进行碰撞检测后,停止对所述任意两个所述区域中所包含的模型零件的包围盒进行碰撞检测。
11.根据权利要求9或10所述的装置,其特征在于,每个所述模型零件中均包括至少一个模型组件,所述处理模块,还用于:
确定每个所述模型零件中所包含的各个模型组件的包围盒;
当任意两个所述模型零件的包围盒间存在碰撞时,将在所述任意两个所述模型零件中所包含的各个模组组件的包围盒混合在一起进行碰撞检测;
当所述任意两个所述模型零件的包围盒间不存在碰撞时,分别单独对所述任意两个所述模型零件中每个模型零件所包含的模型组件的包围盒进行碰撞检测。
12.根据权利要求11所述的装置,其特征在于,所述处理模块,还用于:
当所述任意两个所述模型零件中每个模型零件均包括一个模型组件时,在对所述任意两个所述模型零件的包围盒进行碰撞检测后,停止对所述任意两个所述模型零件中所包含的模型组件的包围盒进行碰撞检测。
13.根据权利要求9-12任一所述的装置,其特征在于,在对目标3D模型进行空间划分时,所述处理模块具体用于:
确定所述目标3D模型的空间分布特点为稠密型,构建所述目标3D模型的第一包围盒;
根据所述第一包围盒所围成的区域的空间复杂度,对所述第一包围盒所围成的区域进行划分。
14.根据权利要求9-12任一所述的装置,其特征在于,在对目标3D模型进行空间划分时,所述处理模块具体用于:
确定所述目标3D模型的空间分布特点为稀疏型,将所述目标3D模型中各个空间分布为稠密型的区域分别划分为一个单独的区域,以得到x个区域,x≥2;
分别构建所述x个区域各自的包围盒,以得到x个第二包围盒;
根据所述x个第二包围盒中各个第二包围盒所围成的区域的空间复杂度,对各个所述第二包围盒所围成的区域进行划分。
15.根据权利要求13或14所述的装置,其特征在于,在根据目标包围盒所围成的区域的空间复杂度,对所述目标包围盒所围成的区域进行划分时,所述处理模块具体用于:
判断所述目标包围盒所围成的区域的空间复杂度是否大于预设阈值,所述目标包围盒为所述第一包围盒或所述第二包围盒;
若大于所述预设阈值,将所述目标包围盒所围成的区域均分为预设数量的区域,以及基于划分后得到的所述预设数量的区域进行空间划分;
若小于或等于所述预设阈值,限制对所述目标包围盒所围成的区域进行划分。
16.根据权利要求12-15任一所述的装置,其特征在于,目标包围盒所围成的区域的空间复杂度至少基于所述目标包围盒中所包含的模型组件的数量、顶点个数和所述目标包围盒的包络的大小确定,所述目标包围盒为所述第一包围盒或所述第二包围盒。
17.一种电子设备,其特征在于,包括:
至少一个存储器,用于存储程序;
至少一个处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行如权利要求1-8任一所述的方法。
18.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1-8任一所述的方法。
19.一种计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行如权利要求1-8任一所述的方法。
CN202210167881.0A 2022-02-23 2022-02-23 一种空间碰撞检测方法、装置及电子设备 Pending CN116681857A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210167881.0A CN116681857A (zh) 2022-02-23 2022-02-23 一种空间碰撞检测方法、装置及电子设备
PCT/CN2022/110157 WO2023159882A1 (zh) 2022-02-23 2022-08-04 一种空间碰撞检测方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210167881.0A CN116681857A (zh) 2022-02-23 2022-02-23 一种空间碰撞检测方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN116681857A true CN116681857A (zh) 2023-09-01

Family

ID=87764549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210167881.0A Pending CN116681857A (zh) 2022-02-23 2022-02-23 一种空间碰撞检测方法、装置及电子设备

Country Status (2)

Country Link
CN (1) CN116681857A (zh)
WO (1) WO2023159882A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117518880B (zh) * 2024-01-05 2024-03-26 北京圜晖科技有限公司 一种数字孪生模式下的碰撞检测方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10106023A1 (de) * 2001-02-09 2002-08-29 Fraunhofer Ges Forschung Verfahren und Vorrichtung zur Kollisionserkennung von Objekten
CN105205867B (zh) * 2015-09-06 2017-12-26 大连理工大学 一种微创虚拟腹主动脉血管手术中的碰撞检测方法
CN111652908A (zh) * 2020-04-17 2020-09-11 国网山西省电力公司晋中供电公司 一种虚拟现实场景的操作碰撞检测方法
CN113961460A (zh) * 2021-10-25 2022-01-21 北京构力科技有限公司 基于轻量化技术的碰撞检测方法、装置、电子设备和计算机可读存储介质

Also Published As

Publication number Publication date
WO2023159882A1 (zh) 2023-08-31

Similar Documents

Publication Publication Date Title
CN112669463B (zh) 三维点云的曲面重建方法、计算机设备和计算机可读存储介质
CN111400555B (zh) 图数据查询任务处理方法、装置、计算机设备和存储介质
CN109683858B (zh) 数据处理方法及装置
Morozov et al. Efficient delaunay tessellation through KD tree decomposition
CN112100450A (zh) 一种图计算数据分割方法、终端设备及存储介质
CN116628123B (zh) 基于空间数据库的动态切片生成方法和系统
Mundani et al. A sliding window technique for interactive high-performance computing scenarios
CN111161331A (zh) 一种bim模型和gis模型配准方法
CN112991547A (zh) 模型简化处理方法、装置以及电子设备、介质
CN115908715A (zh) 建筑信息模型的加载方法及装置、设备、存储介质
CN112053440A (zh) 单体化模型的确定方法及通信装置
CN116681857A (zh) 一种空间碰撞检测方法、装置及电子设备
CN115270500A (zh) 一种布尔求差运算方法、装置及电子设备
CN111367649B (zh) 高精地图数据并行处理方法和装置
CN112363837A (zh) 基于集群环境的点云数据并行处理方法和装置、设备及存储介质
EP1583008A2 (en) Distributed CAD apparatus
CN111652163A (zh) 一种输电线路杆塔线段匹配方法以及设备
CN115292793A (zh) 一种户型设计方法及相关装置
CN112337093B (zh) 一种虚拟对象的分簇方法、装置、存储介质和电子装置
CN114912336B (zh) 量子比特仿真模型的建立方法、装置以及可读存储介质
CN115081122A (zh) 板壳结构几何中面的自动抽取方法、设备及介质
JP6634769B2 (ja) ボクセル処理方法、ボクセル処理プログラム及び情報処理装置
CN114522420A (zh) 游戏数据处理方法、装置、计算机设备及存储介质
CN113989680A (zh) 建筑三维场景自动构建方法及系统
CN113761293A (zh) 图数据强连通分量挖掘方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication