CN108615262A - 一种基于gpu的海量模型并行碰撞检测方法 - Google Patents
一种基于gpu的海量模型并行碰撞检测方法 Download PDFInfo
- Publication number
- CN108615262A CN108615262A CN201810403041.3A CN201810403041A CN108615262A CN 108615262 A CN108615262 A CN 108615262A CN 201810403041 A CN201810403041 A CN 201810403041A CN 108615262 A CN108615262 A CN 108615262A
- Authority
- CN
- China
- Prior art keywords
- model
- magnanimity
- collision
- memory
- scene
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及一种基于GPU的海量模型并行碰撞检测方法,属于碰撞检测领域。本方法主要提供如下功能:通过遍历广域场景包围盒获取海量模型数据,之后利用适用于广域场景中海量模型碰撞检测方法,通过异构通用计算编程架构在GPU中进行碰撞检测处理,以实现对海量模型并行进行碰撞检测的目的,以保证场景真实性,提高场景渲染效率,充分利用GPU多处理器资源。
Description
技术领域
本发明属于碰撞检测领域,涉及一种基于GPU的海量模型并行碰撞检测方法。
背景技术
随着计算机技术的发展与成熟,虚拟现实技术蓬勃发展,越来越多的应用到了航空航天、生物医学、机械制造等多方面领域。为保障场景模拟的真实性,碰撞检测的准确性及效率极其重要。在广域场景中可能包含着成千上万个模型,如何有效地对广域场景中海量模型进行碰撞检测处理,提高检测效率,降低资源利用率,提高场景仿真的执行效率。这就对高性能数据处理能力提出了较高的要求。
传统的模型碰撞检测处理是基于层次包围树进行的多线程处理,在多处理器和云计算技术兴起后,以上处理进行了并行化,提高了处理速度。但是,由于广域场景中海量模型的碰撞检测处理的精度要求,同时海量模型碰撞检测具有密集数值计算特点,将这类数据用多处理器和云计算技术进行处理,浪费了以上计算设施的大量逻辑分析资源。
随着微电子技术的发展,新型计算技术也层出不穷,基于GPU的通用异构计算技术,为处理密集型数值计算提供一种高效的并行处理手段。实质上,GPU的通用异构计算技术是一种SIMD处理技术,非常适合虚拟现实仿真过程中相关的处理操作,如海量模型的碰撞检测。
传统的碰撞检测是通过逐层的对模型进行遍历构建层次包围树,直至各包围盒中只包含基本的几何元素。可是传统方法并不适用于广域场景中,由于大规模环境仿真中,许多模型的碰撞检测的精确度要求不高。
发明内容
有鉴于此,本发明的目的在于提供一种基于GPU的海量模型并行碰撞检测方法。
为达到上述目的,本发明提供如下技术方案:
一种基于GPU的海量模型并行碰撞检测方法,该方法步骤为:利用适用于广域场景中海量模型碰撞检测方法,进行广域场景包围盒遍历获取海量模型数据并利用显示存储器进行模型数据提取与存储,通过基于图形处理器GPU的通用计算方法,简化碰撞检查处理过程,允许海量模型同时进行碰撞检测处理。
具体为:
S1:设置两个位置存储器,分别用于存储当前模型所在位置及移动后模型所在位置,为后续碰撞检测作为支撑;
S2:根据当前模型当前移动速度与朝向,计算出移动后模型所在位置,并存储于移动后模型所在位置存储器中;
S3:在移动前后两点间构建连线段,判断在连线段上是否有模型与之相交,并将检测结果存储于碰撞检测结果存储器中;
S4:根据结果存储器中的结果,判断是否在模型移动的过程中存在碰撞;若不存在,则意味着移动可以发生,将移动后模型所在位置存储器中的结果返回到当前模型所在位置,实现模型移动;若存在,则意味着移动不能发生,返回当前模型所在位置存储器中的值,模型不发生移动。
进一步,所述适用于广域场景中海量模型碰撞检测方法为:根据模型在发生模型移动的前后,模型的质心初始点与终止点之间的连线,是否会与其他模型出现碰撞,阻挡模型移动,从而建立一种适用于广域场景中海量模型的碰撞检测方法。
进一步,所述广域场景包围盒遍历获取海量模型数据并利用显示存储器进行模型数据提取与存储为:在主机端,首先通过对整个场景进行遍历获取场景中海量模型数据,再将待处理的模型数据存储在高速存储器中,当进行碰撞检测时,直接从纹理寄存器中提取和调用数据。
进一步,所述基于图形处理器GPU的通用计算方法为:根据异构通用计算编程架构,进行数据结构的安排,每对模型对应一个单一的线程块Block,而各线程块有统一的构成一个网格,在进行碰撞检测时,每个Thread均对应于Kernel程序,从而使各个线程并行完成各模型对的碰撞检测。
基于所述方法的CUDA技术广域场景中海量模型数据并行碰撞检测方法,包括以下步骤:
S51:在主机端对场景包围树进行遍历,获取整个场景中的模型数据,拷贝到设备端等待处理;
S52:根据模型数量,在设备端分配存储空间,即按照模型对数分配存储块,设碰撞检测模型对数为n,在设备端分配n个存储块,每一个存储块对应存储一对模型;由CUDA中线程与存储块的关系得到,每一个存储块对应一个线程块;每一对模型都对应一个存储块,每一个存储块对应一个线程块,一模型质心移动轨迹与另一模型的各结点对应于线程块中的一个处理线程;
S53:当设备端存储空间分配结束,利用适用于广域场景中海量模型碰撞检测的相关算法,对每个处理线程进行计算,以完成相关的图像处理操作;
S54:待碰撞检测处理结束,将设备端的实验结果拷贝回主机端,并在广域场景仿真过程中显示结果。
本发明的有益效果在于:本发明利用GPU的多处理器特点,适用于广域场景中海量模型的并行碰撞检测。
附图说明
为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:
图1为适用于广域场景中海量模型的碰撞检测方法流程图;
图2为基于CUDA算法的大量图像并行处理流程简图;
图3为设备端存储空间分配;
图4为具体实施运用示意图。
具体实施方式
下面将结合附图,对本发明的优选实施例进行详细的描述。
1.如图1所示,为适用于广域场景中海量模型的碰撞检测方法流程图。
首先,设置两个位置存储器,分别用于存储当前模型所在位置及移动后模型所在位置,为后续碰撞检测作为支撑。
其次,根据当前模型当前移动速度与朝向,计算出移动后模型所在位置,并存储于移动后模型所在位置存储器中。
之后,在移动前后两点间构建连线段,判断在连线段上是否有模型与之相交,并将检测最后,根据结果存储器中的结果,判断是否在模型移动的过程中存在碰撞。若不存在则意味着移动可以发生,将移动后模型所在位置存储器中的结果返回到当前模型所在位置,实现模型移动。若存在则意味着移动不能发生,返回当前模型所在位置存储器中的值,模型不发生移动。
2.如图2所示,基于CUDA技术的广域场景中海量模型数据并行碰撞检测流程简图
首先,在主机端(一般为CPU)对场景包围树进行遍历,获取整个场景中的模型数据,拷贝到设备端(一般为GPU)等待处理。
之后,根据模型数量,在设备端分配存储空间,即按照模型对数分配存储块,为便于叙述,这里设碰撞检测模型对数为n。因此可以在设备端分配n个存储块。每一个存储块对应存储一对模型。由CUDA中线程与存储块的关系可以知道,每一个存储块对应一个线程块。由图3可以知道,每一对模型都对应一个存储块,每一个存储块对应一个线程块,一模型质心移动轨迹与另一模型的各结点对应于线程块中的一个处理线程。
然后,当设备端存储空间分配结束,利用适用于广域场景中海量模型碰撞检测的相关算法,对每个处理线程进行计算,以完成相关的图像处理操作。
最后,待碰撞检测处理结束,将设备端的实验结果拷贝回主机端,并在广域场景仿真过程中显示结果。
首先,对广域场景包围盒进行遍历,获取各模型结点信息,之后,将海量模型数据从主机端拷贝到设备端等待处理。在设备端,首先根据待处理的模型对数目进行存储空间分配,每一对模型对应一个线程块,从而进行碰撞检测处理。待处理结束后,将处理结果反送回主机端,之后,在广域场景仿真中显示碰撞检测结果,具体的流程如图4所示。
最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。
Claims (5)
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:待碰撞检测处理结束,将设备端的实验结果拷贝回主机端,并在广域场景仿真过程中显示结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810403041.3A CN108615262A (zh) | 2018-04-28 | 2018-04-28 | 一种基于gpu的海量模型并行碰撞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810403041.3A CN108615262A (zh) | 2018-04-28 | 2018-04-28 | 一种基于gpu的海量模型并行碰撞检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108615262A true CN108615262A (zh) | 2018-10-02 |
Family
ID=63661401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810403041.3A Pending CN108615262A (zh) | 2018-04-28 | 2018-04-28 | 一种基于gpu的海量模型并行碰撞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108615262A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110379018A (zh) * | 2019-07-24 | 2019-10-25 | 重庆航天火箭电子技术有限公司 | 一种基于异构并行架构的运载器安控管道呈现方法 |
CN110807831A (zh) * | 2019-09-18 | 2020-02-18 | 重庆大学 | 一种基于最小单元碰撞检测的传感器覆盖范围计算方法 |
WO2020073977A1 (en) * | 2018-10-11 | 2020-04-16 | Huawei Technologies Co., Ltd. | Arithmetic logic unit (alu) -centric operations in graphics processing units (gpus) |
CN112825199A (zh) * | 2019-11-20 | 2021-05-21 | 北京博超时代软件有限公司 | 碰撞检测方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120079884A (ko) * | 2011-01-06 | 2012-07-16 | 이화여자대학교 산학협력단 | Gpu에서 충돌 감지를 수행하는 방법 |
CN102663825A (zh) * | 2012-02-29 | 2012-09-12 | 中山大学 | 一种三维碰撞检测方法 |
CN104408774A (zh) * | 2014-12-11 | 2015-03-11 | 中国科学院合肥物质科学研究院 | 一种基于gpu加速的实体面片模型间碰撞检测方法 |
CN106228506A (zh) * | 2016-07-14 | 2016-12-14 | 重庆大学 | 一种基于gpu的多帧图像并行处理的方法 |
CN106875492A (zh) * | 2017-02-13 | 2017-06-20 | 华东师范大学 | 一种面向gpu包围盒碰撞检测方法 |
-
2018
- 2018-04-28 CN CN201810403041.3A patent/CN108615262A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120079884A (ko) * | 2011-01-06 | 2012-07-16 | 이화여자대학교 산학협력단 | Gpu에서 충돌 감지를 수행하는 방법 |
CN102663825A (zh) * | 2012-02-29 | 2012-09-12 | 中山大学 | 一种三维碰撞检测方法 |
CN104408774A (zh) * | 2014-12-11 | 2015-03-11 | 中国科学院合肥物质科学研究院 | 一种基于gpu加速的实体面片模型间碰撞检测方法 |
CN106228506A (zh) * | 2016-07-14 | 2016-12-14 | 重庆大学 | 一种基于gpu的多帧图像并行处理的方法 |
CN106875492A (zh) * | 2017-02-13 | 2017-06-20 | 华东师范大学 | 一种面向gpu包围盒碰撞检测方法 |
Non-Patent Citations (3)
Title |
---|
FERNANDO TSUDA等: "A Technique for Collision Detection and 3D Interaction Based on Parallel GPU and CPU Processing", 《IEEE XPLORE》 * |
田园等: "基于CUDA的并行碰撞检测算法研究", 《甘肃科技》 * |
石其: "基于GPU的碰撞检测算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020073977A1 (en) * | 2018-10-11 | 2020-04-16 | Huawei Technologies Co., Ltd. | Arithmetic logic unit (alu) -centric operations in graphics processing units (gpus) |
US10726516B2 (en) | 2018-10-11 | 2020-07-28 | Futurewei Technologies, Inc. | Arithmetic logic unit (ALU)-centric operations in graphics processing units (GPUs) |
CN110379018A (zh) * | 2019-07-24 | 2019-10-25 | 重庆航天火箭电子技术有限公司 | 一种基于异构并行架构的运载器安控管道呈现方法 |
CN110807831A (zh) * | 2019-09-18 | 2020-02-18 | 重庆大学 | 一种基于最小单元碰撞检测的传感器覆盖范围计算方法 |
CN112825199A (zh) * | 2019-11-20 | 2021-05-21 | 北京博超时代软件有限公司 | 碰撞检测方法、装置、设备及存储介质 |
CN112825199B (zh) * | 2019-11-20 | 2023-09-19 | 北京博超时代软件有限公司 | 碰撞检测方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108615262A (zh) | 一种基于gpu的海量模型并行碰撞检测方法 | |
US10810784B1 (en) | Techniques for preloading textures in rendering graphics | |
Wang et al. | Efficient BVH‐based collision detection scheme with ordering and restructuring | |
Halyo et al. | GPU Enhancement of the Trigger to Extend Physics Reach at the LHC | |
US11847733B2 (en) | Performance of ray-traced shadow creation within a scene | |
US11010963B2 (en) | Realism of scenes involving water surfaces during rendering | |
Zhang et al. | Scalable collision detection using p-partition fronts on many-core processors | |
US20220392145A1 (en) | Graphics processing | |
US10559125B2 (en) | System and method of constructing bounding volume hierarchy tree | |
CN108652661A (zh) | 使用capi加速的fpga医学超声成像系统 | |
US11397615B2 (en) | Methods and apparatuses for coalescing function calls for ray-tracing | |
Lee et al. | Real-time ray tracing on coarse-grained reconfigurable processor | |
CN106991638A (zh) | 一种基于序列影像Harris‑DOG特征提取的多粒度并行优化的方法 | |
Qi et al. | An enhanced sweep and prune algorithm for multi-body continuous collision detection | |
Wong et al. | Continuous collision detection for deformable objects using permissible clusters | |
Kim et al. | Optimizing seam carving on multi-GPU systems for real-time content-aware image resizing | |
Wong et al. | Virtual subdivision for GPU based collision detection of deformable objects using a uniform grid | |
Yin et al. | Fast BVH construction and refit for ray tracing of dynamic scenes | |
Mainzer et al. | Collision detection based on fuzzy scene subdivision | |
Wong et al. | GPU-based radial view-based culling for continuous self-collision detection of deformable surfaces | |
CN107301398A (zh) | 一种基于gpu实现的合成孔径雷达图像目标识别方法 | |
de Gomensoro Malheiros et al. | Spatial sorting: an efficient strategy for approximate nearest neighbor searching | |
Schmidtke et al. | Chunked bounding volume hierarchies for fast digital prototyping using volumetric meshes | |
Woop | A programmable hardware architecture for realtime ray tracing of coherent dynamic scenes | |
Salazar et al. | Cloth simulation using AABB hierarchies and GPU parallelism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181002 |
|
RJ01 | Rejection of invention patent application after publication |