本发明涉及构件的碰撞类型检测,尤其涉及一种包围盒碰撞类型的检测方法、装置、终端设备和存储介质。
背景技术:
1、一般可视化界面对bim模型的进行展示的同时,还需要对bim模型中的构件的碰撞类型进行检测并输出碰撞类型的检测结果,而基于包围盒碰撞的检测算法,是用一个简单的几何形体即包围盒将虚拟场景中复杂的几何物体围住形成包围盒,然后包围盒进行检测的算法。基于包围盒碰撞的检测算法通过对包围盒构造树状层次结构可以来使得树状层次结构越来越逼近真实的物体,而对两个构件检测时,首先检查两者的包围盒是否相交,若不相交,则说明两个物体未发生碰撞,否则说明两个物体发生碰撞,因为基于包围盒碰撞的检测算法的求交算法比物体求交算法要简单得多,所以可以快速排除很多不相交的物体(即构件),从而大大加快和简化了碰撞检测算法。但是现有技术在采用基于包围盒碰撞的检测算法来进行检测包围盒是否发生碰撞时,并不能对发生碰撞的包围盒的碰撞类型进行判断。
技术实现思路
1、本发明实施例提供,能有效解决现有技术中不能对发生碰撞的包围盒的碰撞类型进行判断的问题。
2、本发明一实施例提供一种包围盒碰撞类型的检测方法,包括:
3、提取bim模型中相互碰撞的构件,生成构件集合;
4、提取所述构件集合中每一构件的三角形区域,构建每一三角形区域所对应的第一包围盒;
5、判断各相邻的第一包围盒之间的三角形区域是否相交;
6、若是,则将相邻的两第一包围盒的碰撞类型判定为硬碰撞;
7、若否,则计算相邻的两第一包围盒的三角形区域的距离,在所述距离大于预设距离阈值时,将相邻的两第一包围盒的碰撞类型判定为接触碰撞,在所述距离小于或等于预设距离阈值时,将相邻两第一包围盒的碰撞类型判定为软碰撞。
8、优选的,所述提取bim模型中相互碰撞的构件,生成构件集合,具体包括:
9、创建一个线程;
10、基于所述线程对bim模型中相互碰撞的构件进行提取生成构件集合。
11、优选的,所述判断各相邻第一包围盒之间的三角形区域是否相交,具体包括:
12、创建一个子线程;
13、基于所述子线程对各相邻第一包围盒之间的三角形区域是否相交进行判断。
14、优选的,所述基于所述线程对bim模型中相互碰撞的构件进行提取生成构件集合,具体包括:
15、构建bim模型中每一构件对应的第二包围盒;
16、判断各相邻的第二包围盒是否存在第一重叠区域;
17、提取存在第一重叠区域的各相邻的第二包围盒,并计算所述第一重叠区域的第一区域面积;
18、将第一区域面积不大于第一预设面积的第二包围盒对应的构件作为相互碰撞的构件;
19、提取所有相互碰撞的构件,生成构件集合。
20、优选的,所述提取所有相互碰撞的构件,生成构件集合,具体包括:
21、提取所有相互碰撞的构件后生成待定构件集合;
22、提取所述待定构件集合中每一构件的三角形区域,构建每一三角形区域所对应的第三包围盒;
23、判断各相邻的第三包围盒是否存在第二重叠区域;
24、提取存在第二重叠区域的各相邻的第三包围盒,并计算所述第二重叠区域的第二区域面积;
25、将第二区域面积不大于第二预设面积的第三包围盒对应的构件进行提取,生成构件集合。
26、优选的,判断相邻的第二包围盒是否存在第一重叠区域,具体包括:
27、将相邻的第二包围盒中的一个第二包围盒作为基准第二包围盒;
28、在所述基准第二包围盒的一平面上作坐标原点,生成所述基准第二包围盒对应的x坐标轴、y坐标轴和z坐标轴;
29、在所述基准第二包围盒对应的x坐标轴、y坐标轴和z坐标轴上检测到存在相邻的第二包围盒所对应的边时,则判定相邻的第二包围盒存在第一重叠区域。
30、优选的,判断相邻的第三包围盒是否存在第二重叠区域,具体包括:
31、将相邻的第三包围盒中的一个第三包围盒作为基准第三包围盒;
32、在所述基准第三包围盒的一平面上作坐标原点,生成所述基准第三包围盒对应的x坐标轴、y坐标轴和z坐标轴;
33、在所述基准第三包围盒对应的x坐标轴、y坐标轴和z坐标轴上检测到存在相邻的第三包围盒所对应的边时,则判定相邻的第三包围盒存在第二重叠区域。
34、在上述的方法实施例的基础上,本发明对应提供了装置项实施例。
35、本发明一实施例提供了一种包围盒碰撞类型的检测装置,包括:构件集合生成模块、第一包围盒构建模块和碰撞类型确定模块;
36、所述构件集合生成模块,用于提取bim模型中相互碰撞的构件,生成构件集合;
37、所述第一包围盒构建模块,用于提取所述构件集合中每一构件的三角形区域,构建每一三角形区域所对应的第一包围盒;
38、所述碰撞类型确定模块,用于判断各相邻的第一包围盒之间的三角形区域是否相交;若是,则将相邻的两第一包围盒的碰撞类型判定为硬碰撞;若否,则计算相邻两第一包围盒的三角形区域的距离,在所述距离大于预设距离阈值时,将相邻两第一包围盒的碰撞类型判定为接触碰撞,在所述距离小于或等于预设距离阈值时,将相邻两第一包围盒的碰撞类型判定为软碰撞。
39、在上述的方法实施例的基础上,本发明对应提供了终端设备项实施例。
40、本发明另一实施例提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述发明实施例所述的一种包围盒碰撞类型的检测方法。
41、在上述的方法实施例的基础上,本发明对应提供了存储介质项实施例。
42、本发明另一实施例提供了一种,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述发明实施例所述的一种包围盒碰撞类型的检测方法。
43、通过实施本发明具有如下有益效果:
44、本发明实施例提供了一种包围盒碰撞类型的检测方法、装置、终端设备和存储介质,所述包围盒碰撞类型的检测方法,提取bim模型中相互碰撞的构件,生成构件集合;提取所述构件集合中每一构件的三角形区域,构建每一三角形区域所对应的第一包围盒;判断各相邻的第一包围盒之间的三角形区域是否相交;若是,则将相邻的两第一包围盒的碰撞类型判定为硬碰撞;若否,则计算相邻的两第一包围盒的三角形区域的距离,在所述距离大于预设距离阈值时,将相邻的两第一包围盒的碰撞类型判定为接触碰撞,在所述距离小于或等于预设距离阈值时,将相邻两第一包围盒的碰撞类型判定为软碰撞。与现有技术相比,通过提取bim模型中相互碰撞的构件,生成构件集合后,对构件集合中的每一构件的三角形区域进行构建每一三角形区域所对应的第一包围盒,即得到了已知发生碰撞的包围盒,从而可以对第一包围盒的碰撞类型进行判定;首先判断各相邻第一包围盒之间的三角形区域是否相交,若相交则将存在相交状态的第一包围盒的碰撞类型判定为硬碰撞,若不相交则继续计算每一不存在相交状态的相邻两第一包围盒的三角形区域的距离,并根据距离来进行进一步的碰撞类型判断,将距离大于预设距离阈值对应的第一包围盒的碰撞类型判定为接触碰撞,将所述距离小于或等于预设距离阈值第一包围盒的碰撞类型判定为软碰撞。即本发明可以在提取bim模型中相互碰撞的构件后生成构件集合,然后对构件集合中的每一构件的三角形区域进行构件包围盒,然后通过判断包围盒是否存在相交或计算包围盒中的三角形的距离来确定包围盒的碰撞类型,从而可以对发生碰撞的包围盒的碰撞类型进行判断,并输出对应的碰撞类型。