[发明专利]一种基于GPU的海量模型并行碰撞检测方法在审
申请号: | 201810403041.3 | 申请日: | 2018-04-28 |
公开(公告)号: | CN108615262A | 公开(公告)日: | 2018-10-02 |
发明(设计)人: | 郭茂耘;安翼尧;梁皓星;武艺 | 申请(专利权)人: | 重庆大学 |
主分类号: | G06T19/00 | 分类号: | G06T19/00 |
代理公司: | 北京同恒源知识产权代理有限公司 11275 | 代理人: | 赵荣之 |
地址: | 400044 重*** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 碰撞检测 并行碰撞检测 场景 广域 包围盒获取 编程架构 场景渲染 多处理器 模型数据 通用计算 遍历 异构 真实性 并行 保证 | ||
1.一种基于GPU的海量模型并行碰撞检测方法,其特征在于:该方法步骤为:利用适用于广域场景中海量模型碰撞检测方法,进行广域场景包围盒遍历获取海量模型数据并利用显示存储器进行模型数据提取与存储,通过基于图形处理器GPU的通用计算方法,简化碰撞检查处理过程,允许海量模型同时进行碰撞检测处理;
具体为:
S1:设置两个位置存储器,分别用于存储当前模型所在位置及移动后模型所在位置,为后续碰撞检测作为支撑;
S2:根据当前模型当前移动速度与朝向,计算出移动后模型所在位置,并存储于移动后模型所在位置存储器中;
S3:在移动前后两点间构建连线段,判断在连线段上是否有模型与之相交,并将检测结果存储于碰撞检测结果存储器中;
S4:根据结果存储器中的结果,判断是否在模型移动的过程中存在碰撞;若不存在,则意味着移动可以发生,将移动后模型所在位置存储器中的结果返回到当前模型所在位置,实现模型移动;若存在,则意味着移动不能发生,返回当前模型所在位置存储器中的值,模型不发生移动。
2.根据权利要求1所述的一种基于GPU的海量模型并行碰撞检测方法,其特征在于:所述适用于广域场景中海量模型碰撞检测方法为:根据模型在发生模型移动的前后,模型的质心初始点与终止点之间的连线,是否会与其他模型出现碰撞,阻挡模型移动,从而建立一种适用于广域场景中海量模型的碰撞检测方法。
3.根据权利要求1所述的一种基于GPU的海量模型并行碰撞检测方法,其特征在于:所述广域场景包围盒遍历获取海量模型数据并利用显示存储器进行模型数据提取与存储为:在主机端,首先通过对整个场景进行遍历获取场景中海量模型数据,再将待处理的模型数据存储在高速存储器中,当进行碰撞检测时,直接从纹理寄存器中提取和调用数据。
4.根据权利要求1所述的一种基于GPU的海量模型并行碰撞检测方法,其特征在于:所述基于图形处理器GPU的通用计算方法为:根据异构通用计算编程架构,进行数据结构的安排,每对模型对应一个单一的线程块Block,而各线程块有统一的构成一个网格,在进行碰撞检测时,每个Thread均对应于Kernel程序,从而使各个线程并行完成各模型对的碰撞检测。
5.基于权利要求1-4中任一项所述方法的CUDA技术广域场景中海量模型数据并行碰撞检测方法,其特征在于:该方法包括以下步骤:
S51:在主机端对场景包围树进行遍历,获取整个场景中的模型数据,拷贝到设备端等待处理;
S52:根据模型数量,在设备端分配存储空间,即按照模型对数分配存储块,设碰撞检测模型对数为n,在设备端分配n个存储块,每一个存储块对应存储一对模型;由CUDA中线程与存储块的关系得到,每一个存储块对应一个线程块;每一对模型都对应一个存储块,每一个存储块对应一个线程块,一模型质心移动轨迹与另一模型的各结点对应于线程块中的一个处理线程;
S53:当设备端存储空间分配结束,利用适用于广域场景中海量模型碰撞检测的相关算法,对每个处理线程进行计算,以完成相关的图像处理操作;
S54:待碰撞检测处理结束,将设备端的实验结果拷贝回主机端,并在广域场景仿真过程中显示结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆大学,未经重庆大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810403041.3/1.html,转载请声明来源钻瓜专利网。