碰撞检测方法、装置、设备及存储介质与流程

文档序号:25132423发布日期:2021-05-21 08:49阅读:来源:国知局

技术特征:

1.一种碰撞检测方法,其特征在于,包括:

获取场景数据,根据所述场景数据中的各实体数据建立碰撞检测模型;

其中,所述碰撞检测模型的个数为两个以上,两个以上的所述碰撞检测模型与所述场景数据中的实体相对应;且

所述碰撞检测模型的数据结构为二叉树结构;各所述碰撞检测模型中每层节点中的包围盒中的数据均为整型数据;

由所建立的两个以上的碰撞检测模型中提取出当前需要进行碰撞检测的第一碰撞模型和第二碰撞模型;

由所述第一碰撞模型的首层节点和所述第二碰撞模型的首层节点开始,逐层对所述第一碰撞模型和所述第二碰撞模型中处于同一层节点的包围盒之间的距离进行计算,并根据计算得到的距离结果得到相应的碰撞检测结果。

2.根据权利要求1所述的方法,其特征在于,根据所述场景数据中的各实体数据建立碰撞检测模型,包括:

由所述场景数据中读取各实体数据中的点数据和三角面索引;

基于所述点数据和所述三角面索引,建立各实体所对应的原始碰撞树;

对所述原始碰撞树进行优化,得到所述碰撞检测模型;

其中,对所述原始碰撞树进行优化,包括节点收敛和数据量化中的至少一种:

所述节点收敛,包括:

收敛所述原始碰撞树中的叶节点,以叶节点包含的三角面索引替代在根节点中的指针,并将所述原始碰撞树中的当前叶节点所包含的三角形收录到当前节点的上一层节点中;

所述数据量化,包括:

获取所述原始碰撞树中各层节点的包围盒的数据,通过量化方式将所述原始碰撞树中各层节点的包围盒的数据由浮点型数据转换为整型数据。

3.根据权利要求2所述的方法,其特征在于,基于所述点数据和所述三角面索引,建立各实体所对应的原始碰撞树,包括:

基于所述点数据和所述三角面索引,建立各所述实体的三维模型;

对各所述三维模型的包围盒进行至少一次空间分割,得到多个包围盒,并根据得到的多个所述包围盒建立所述原始碰撞树;

其中,对各所述三维模型的包围盒进行至少一次空间分割,包括:

获取所述三维模型的包围盒在三维坐标系中的最长轴,按照所述最长轴方向对所述三维模型的包围盒进行初级分割,得到多个一级包围盒;

根据各所述一级包围盒内的三角形个数以及预设个数的大小关系,基于各所述一级包围盒进行逐级分割,直至分割后得到的包围盒内的三角形个数小于或等于预设个数为止;

其中,在按照所述最长轴方向不能对所述三维模型的包围盒进行初级分割时,按照次长轴方向对所述三维模型的包围盒进行初级分割;

在对所述三维模型的包围盒进行分割时,分割位置通过遍历所述包围盒内所有三角形,获取沿分割方向上的极大值和极小值并对所述极大值和所述极小值进行平均值计算的方式得到;

所述预设个数的取值为2。

4.根据权利要求1至3任一项所述的方法,其特征在于,根据计算得到的距离结果得到相应的碰撞检测结果,包括:

在所述距离结果均大于预设数值时,确定所述碰撞检测结果为未碰撞;

在所述距离结果中存在小于或等于所述预设数值的结果时,获取所述第一碰撞模型中当前节点所包含的第一包围盒和所述第二碰撞模型中当前节点所包含的第二包围盒,并基于所述第一包围盒内的三角形和所述第二包围盒内的三角形进行三角形碰撞检测,得到相应的碰撞检测结果;

其中,所述当前节点为小于或等于所述预设数值的距离结果所对应的节点;所述预设数值的取值为2。

5.根据权利要求4所述的方法,其特征在于,基于所述第一包围盒内的三角形和所述第二包围盒内的三角形进行三角形碰撞检测,包括:

依次由所述第一包围盒内选取第一三角形,并由所述第二包围盒内选取第二三角形;其中,所述第一三角形为所述第一包围盒内的所有三角形中的任意一个,所述第二三角形为所述第二包围盒内的所有三角形中的任意一个;

运用离合轴定理对当前选取出的所述第一三角形和所述第二三角形进行三角形碰撞检测。

6.根据权利要求4所述的方法,其特征在于,在所述距离结果中存在小于或等于所述预设数值时,还包括:

确定所述距离结果所对应的当前节点是否为叶节点;

在所述当前节点为叶节点时,获取所述第一碰撞模型中当前节点所包含的第一包围盒和所述第二碰撞模型中当前节点所包含的第二包围盒,并基于所述第一包围盒内的三角形和所述第二包围盒内的三角形进行三角形碰撞检测,得到相应的碰撞检测结果;

在所述当前节点为根节点时,对所述第一碰撞模型和所述第二碰撞模型中当前节点的下一层节点包含的包围盒之间的距离进行计算。

7.一种碰撞检测装置,其特征在于,包括模型建立模块、模型提取模块和碰撞检测模块;

所述模型建立模块,被配置为获取场景数据,根据所述场景数据中的各实体数据建立碰撞检测模型;

其中,所述碰撞检测模型与所述场景数据中的实体相对应;且

所述碰撞检测模型的数据结构为二叉树结构;各所述碰撞检测模型中每层节点中的包围盒中的数据均为整型数据;

所述模型提取模块,被配置为由所建立的碰撞检测模型中提取第一碰撞模型和第二碰撞模型;

所述碰撞检测模块,被配置为由所述第一碰撞模型的首层节点和所述第二碰撞模型的首层节点开始,逐层对所述第一碰撞模型和所述第二碰撞模型中处于同一层节点的包围盒之间的距离进行计算,并根据计算得到的距离结果得到相应的碰撞检测结果。

8.根据权利要求7所述的装置,其特征在于,所述模型建立模块包括数据读取子模块、原始树建立子模块和原始树优化子模块;

所述数据读取子模块,被配置为由所述场景数据中读取各实体数据中的点数据和三角面索引;

所述原始树建立子模块,被配置为基于所述点数据和所述三角面索引,建立各实体所对应的原始碰撞树;

所述原始树优化子模块,被配置为对所述原始碰撞树进行优化,得到所述碰撞检测模型;

其中,所述原始树优化子模块包括节点收敛单元和数据量化单元;

所述节点收敛单元,被配置为收敛所述原始碰撞树中的叶节点,以叶节点包含的三角面索引替代在根节点中的指针,并将所述原始碰撞树中的当前叶节点所包含的三角形收录到当前节点的上一层节点中;

所述数据量化单元,被配置为获取所述原始碰撞树中各层节点的包围盒的数据,通过量化方式将所述原始碰撞树中各层节点的包围盒的数据由浮点型数据转换为整型数据。

9.一种碰撞检测设备,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行所述可执行指令时实现权利要求1至6中任意一项所述的方法。

10.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至6中任意一项所述的方法。


技术总结
本申请一种碰撞检测方法,包括:获取场景数据,根据所述场景数据中的各实体数据建立碰撞检测模型;由所建立的两个以上的碰撞检测模型中提取出当前需要进行碰撞检测的第一碰撞模型和第二碰撞模型;由所述第一碰撞模型的首层节点和所述第二碰撞模型的首层节点开始,逐层对所述第一碰撞模型和所述第二碰撞模型中处于同一层节点的包围盒之间的距离进行计算,并根据计算得到的距离结果得到相应的碰撞检测结果。其通过对场景数据中的各实体建立相应的碰撞检测模型,所建立的碰撞检测模型均采用二叉树的数据结构,同时各碰撞检测模型中每层节点所包含的包围盒的数据均量化为整型数据,从而在保证精度的同时降低了内存占用量。

技术研发人员:王亮;肖鹏;张赛
受保护的技术使用者:北京博超时代软件有限公司
技术研发日:2019.11.20
技术公布日:2021.05.21
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1