一种基于数据分块及并行处理的碰撞检测方法

文档序号:10725201阅读:299来源:国知局
一种基于数据分块及并行处理的碰撞检测方法
【专利摘要】本发明公开了一种基于数据分块及并行处理的碰撞检测方法,通过构建虚拟物体的包围盒树,以各节点的包围盒为数据库,根据计算机流程数将数据库进行分块;通过数据分块,可以有效减少每个处理器处理的任务数,避免数据分配不均匀造成的延误。流水线方法为一种典型的并行处理方法,将问题分为若干个解决步骤,各步骤由独立的处理器执行,通过加速各处理器从而提高整条流水线速度。
【专利说明】
一种基于数据分块及并行处理的碰撞检测方法
技术领域
[0001] 本发明涉及一种碰撞检测方法,具体是一种基于数据分块及并行处理的碰撞检测 方法。
【背景技术】
[0002] 碰撞检测是虚拟现实技术的重要组成部分,其主要任务是检测各种物体模型之间 是否发生碰撞,如果发生碰撞则给出碰撞信息,同时指导系统进行下一步的操作。碰撞检测 的基础是现实生活中两个不可穿透的对象不能同时共享同一片空间区域的事实。目前,按 照检测对象的性质,碰撞检测可以分为基于时间域和基于空间域的检测算法,在此基础上 又可以进一步划分为不同的种类。
[0003] 随着网络技术的发展和虚拟现实技术的兴起,碰撞检测问题再一次成为研究的热 点。虚拟场景的规模不断扩大,模型的精度也越来越高,通过减少碰撞检测的次数来加快算 法成为研究的重点方向。

【发明内容】

[0004] 针对上述现有技术存在的问题,本发明提供一种基于数据分块及并行处理的碰撞 检测方法,数据分块和并行技术引入碰撞检测中,提高了物体碰撞检测速度,快速识别碰撞 结果。
[0005] 为了实现上述目的,本发明采用的技术方案是:该种基于数据分块及并行处理的 碰撞检测方法,包括以下步骤:
[0006] (1)以虚拟物体几何全集的包围盒作为根节点,根据与分裂平面的位置将所有元 素分为数量相当的两部分,分别建立包围盒;其中,以包围盒在此方向上最长轴为方向轴选 择分裂平面;
[0007] (2)以上述这两部分为根节点自顶向下进行递归分治,叶节点的个数满足条件2m <M,m为包围盒层数,Μ为处理器数;
[0008] (3)采用数据分块技术分割包围盒树,以每个叶节点的包围盒为一个数据块组成 数据库,各层的每个数据块由计算机对应的一个处理器负责,将各物体的碰撞问题细分为 数据块中几何元素的碰撞检测;
[0009] (4)检测环境中两虚拟物体几何全集的包围盒,若发生碰撞,对物体的边界进行预 处理,以各自叶节点为当前节点;
[0010] (5)取两物体的当前结点的包围盒逐一配对进行碰撞测试,若不发生碰撞,则停止 遍历,若发生碰撞,则将当前节点存入链表中,链表中各数据相互独立,由各处理器并行进 行访问调用,并作为下次碰撞检测的初选范围;
[0011] (6)以当前节点的上层根节点为当前结点,递归执行步骤(5)。
[0012 ] 进一步,所述包围盒为轴对齐包围盒ΑΑΒΒ或者方向包围盒0ΒΒ或者k-dop包围盒。
[0013]进一步,所述各叶节点包围盒的碰撞测试均为相互独立,无直接相关联,存储在数 据链表中,各处理器并行进行访问。
[0014] 进一步,所述步骤(5)中根据物体运动的连续性,下次检测链表中的各节点,由各 节点碰撞状态变化确定检测范围;可避免后续的冗余检测。
[0015] 与现有技术相比,本发明采用数据分块和并行处理相结合的方式,通过数据分块, 可以有效减少每个处理器处理的任务数,避免数据分配不均匀造成的延误。流水线处理为 一种典型的并行处理方法,将问题分为若干个解决步骤,各步骤由独立的处理器执行,通过 加速各处理器从而提高整条流水线速度。
【附图说明】
[0016] 图1是本发明的流程图;
[0017] 图2是本发明中包围盒树的示意图。
【具体实施方式】
[0018] 下面将对本发明作进一步说明。
[0019] 如图1和图2所示,本发明包括以下步骤:
[0020] (1)以虚拟物体几何全集的包围盒作为根节点,根据与分裂平面的位置将所有元 素分为数量相当的两部分,分别建立包围盒;其中,以包围盒在此方向上最长轴为方向轴选 择分裂平面;
[0021] (2)以上述这两部分为根节点自顶向下进行递归分治,叶节点的个数满足条件2m <M,m为包围盒层数,Μ为处理器数;
[0022] (3)采用数据分块技术分割包围盒树,以每个叶节点的包围盒为一个数据块组成 数据库,各层的每个数据块由计算机对应的一个处理器负责,将各物体的碰撞问题细分为 数据块中几何元素的碰撞检测(碰撞检测即为检测各包围盒是否有交集);
[0023] (4)检测环境中两虚拟物体几何全集的包围盒,若发生碰撞,对物体的边界进行预 处理,以各自叶节点为当前节点;
[0024] (5)取两物体的当前结点的包围盒逐一配对进行碰撞测试,若不发生碰撞,则停止 遍历,若发生碰撞,则将当前节点存入链表中,链表中各数据相互独立,由各处理器并行进 行访问调用,并作为下次碰撞检测的初选范围;
[0025] (6)以当前节点的上层根节点为当前节点,递归执行步骤(5)。
[0026]进一步,所述包围盒为轴对齐包围盒ΑΑΒΒ或者方向包围盒0ΒΒ或者k-dop包围盒。
[0027] 进一步,所述各叶节点包围盒的碰撞测试均为相互独立,无直接相关联,存储在数 据链表中,各处理器并行进行访问。
[0028] 进一步,所述步骤(5)中根据物体运动的连续性,下次检测链表中的各节点,由各 节点碰撞状态变化确定检测范围。
[0029] 整个检测过程中,需要多次执行操作各数据块,各节点包围盒的碰撞测试是相互 独立、算法相同的,没有直接相关联,应用流水线技术动态划分总任务进程,避免数据分配 不均匀造成的延误,操作同步执行,不需要对任务加锁,加速检测速度。算法如下:
【主权项】
1. 一种基于数据分块及并行处理的碰撞检测方法,其特征在于,包括以下步骤: (1) 以虚拟物体几何全集的包围盒作为根节点,根据与分裂平面的位置将所有元素分 为数量相当的两部分,分别建立包围盒; (2) 以上述这两部分为根节点自顶向下进行递归分治,叶节点的个数满足条件2m<M,m 为包围盒层数,Μ为处理器数; (3) 采用数据分块技术分割包围盒树,以每个叶节点的包围盒为一个数据块组成数据 库,各层的每个数据块由计算机对应的一个处理器负责,将各物体的碰撞问题细分为数据 块中几何元素的碰撞检测; (4) 检测环境中两虚拟物体几何全集的包围盒,若发生碰撞,对物体的边界进行预处 理,以各自叶节点为当前节点; (5) 取两物体的当前结点的包围盒逐一配对进行碰撞测试,若不发生碰撞,则停止遍 历,若发生碰撞,则将当前节点存入链表中,链表中各数据相互独立,由各处理器并行进行 访问调用,并作为下次碰撞检测的初选范围; (6) 以当前节点的上层根节点为当前节点,递归执行步骤(5)。2. 根据权利要求1所述的一种基于数据分块及并行处理的碰撞检测方法,其特征在于, 所述包围盒为轴对齐包围盒ΑΑΒΒ或者方向包围盒ΟΒΒ或者k-dop包围盒。3. 根据权利要求1所述的一种基于数据分块及并行处理的碰撞检测方法,其特征在于, 所述各叶节点包围盒的碰撞测试均为相互独立,无直接相关联,存储在数据链表中,各处理 器并行进行访问。4. 根据权利要求1所述的一种基于数据分块及并行处理的碰撞检测方法,其特征在于, 所述步骤(5)中根据物体运动的连续性,下次检测链表中的各节点,由各节点碰撞状态变化 确定检测范围。
【文档编号】G06F17/50GK106096082SQ201610368306
【公开日】2016年11月9日
【申请日】2016年5月24日
【发明人】许启金, 于启万, 别长报, 吴翔, 叶辉, 郑浩, 吴伟, 廖志斌
【申请人】国网安徽省电力公司宿州供电公司, 国家电网公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1