CN105205289B - 一种基于人脑变形仿真的快速连续碰撞检测方法 - Google Patents
一种基于人脑变形仿真的快速连续碰撞检测方法 Download PDFInfo
- Publication number
- CN105205289B CN105205289B CN201510731110.XA CN201510731110A CN105205289B CN 105205289 B CN105205289 B CN 105205289B CN 201510731110 A CN201510731110 A CN 201510731110A CN 105205289 B CN105205289 B CN 105205289B
- Authority
- CN
- China
- Prior art keywords
- node
- bvh
- flag
- collision
- deformation
- 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.)
- Expired - Fee Related
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于人脑变形仿真的快速连续碰撞检测方法,使用层次包围盒(BVH)与包围盒测试树(BVTT)来进行碰撞检测,利用脑部变形的局部性特征,使用了一种增量的BVH更新算法并优化了前线分解算法,最终利用混合CPU/GPU的计算架构对整个算法进行加速,满足了人脑变形仿真中的精度与速度要求。本发明充分利用了人脑变形中的细微性以及时空连续性特点,给出一种优化后的并行算法,可以在计算机构造的虚拟环境中真实地模拟脑部变形过程中的碰撞。
Description
技术领域
本发明涉及一种模拟脑部变形过程中的快速连续碰撞检测方法,属于计算机虚拟现实领域。
背景技术
碰撞检测(Collision Detection,CD)的目标是确定两个或者多个物体两两之间是否发生接触。物体之间之所以需要进行碰撞检测,是基于现实生活中一个普遍存在的事实:两个不可穿透的对象不能共享相同的空间区域。
碰撞检测根据时间域划分为三类:静态碰撞检测、离散碰撞检测(DiscreteCollision Detection,DCD)以及连续碰撞检测(Continuous Collision Detection,CCD);根据碰撞检测对象的性质,分为刚体的碰撞检测与可变形体的碰撞检测,其中刚体的情况较为简单,然而由于可变形体在场景中的结构不断变化,需要不断地更新物体的结构,同时还要考虑到可变形体的自碰撞情况。大部分现有的碰撞检测算法需要较多的时间来完成物体结构的更新以及自碰撞检测(Self-Collision Detection,SCD),很难保证实时性的要求。人脑属于可变性软组织,且由于人脑复杂的结构以及在人脑虚拟手术中对精度的高要求,需要基于其特征研究一种能同时满足速度和精度要求的碰撞检测算法。
由于精度的问题本质是计算量的问题,目前主流的对碰撞检测的加速集中在以下两个方面:
(1)基于邻接关系的剔除算法,利用网格的拓扑信息,减少基元检测中的重复计算。文献1——S.Curtis,R.Tamstorf and D.Manocha,Fast collision detection fordeformable models using representative-triangles.,Proc.acm Symp.interactivedGraphics&Games(2008),61-69.利用网格拓扑信息中的邻接信息构建了一个邻接三角形的孤集(Orphan set),在进行基元检测时,通过孤集过滤掉邻接的三角形对,避免了重复的检测。
(2)基于不同硬件体系的并行加速。其中主要分为利用多核CPU加速与利用GPU进行加速。文献2——M.Tang,D.Manocha and R.Tong,MCCD:Multi-core collisiondetection between deformable models using front-based decomposition,GRAPHMODELS 72(2010),no.2,7-23.提出了一种前线分解(Front-based decompose,FBD)的方法,将碰撞检测中的BVTT树遍历转化为对前线列表的遍历,并将其分配到多核CPU上执行。文献3——C.Lauterbach,Q.Mo and D.Manocha,GProximity:Hierarchical GPU‐basedoperations for collision and distance queries,COMPUT GRAPH FORUM 29(2010),no.2,419-428.提出了一种在GPU上并行的碰撞检测算法,并针对GPU的细粒度特性进行了设计。文献4——S.Pabst,A.Koch and W.Straβer,Fast and scalable CPU/GPUcollision detection for rigid and deformable surfaces,COMPUT GRAPH FORUM 29(2010),no.5,1605-1612.则利用混合CPU/GPU来对碰撞检测进行加速。
目前的碰撞检测技术精度高、通用性强,但脑部变形有以下特点:网格精细且分布在较小区域内,变形细微且局限在局部区域。这些特点导致当前的主流方法存在着大量的冗余计算。
发明内容
本发明要解决的技术问题是:克服现有技术的不足,提供一种基于人脑变形仿真的快速连续碰撞检测方法,该方法基于现有的前线分解算法,充分利用脑部变形的细微性与局部性特征,设计了增量的BVH更新算法及负载均衡更好的前线分解算法,同时针对现有的多核CPU/GPU架构进行了并行实现。在满足碰撞结果精度的情况下,能够有效降低时间开销,满足实时性的要求。
本发明采取的技术解决方案是:一种基于人脑变形仿真的快速连续碰撞检测方法,实现步骤如下:
(1)读入人脑模型的数据,分析模型三角网格的拓扑结构关系,得到人脑模型中邻接三角形的集合:孤集(Orphan Set)并分别对人脑模型的头骨部分、人脑部分构建层次包围盒BVH(bounding volume hierarchies,BVH);
(2)以外部变形程序输入的顶点坐标更新BVH,利用人脑变形的细微性特征,采用增量的BVH更新算法,并在GPU端并行实现;
(3)进行碰撞检测,遍历包围盒层次树(bounding volume test tree,BVTT)得到包围盒相交的三角形对,利用孤集剔除掉其中相邻的三角形对;在BVTT的遍历中,利用变形的时空连续性,采用前线(front line)分解的技术来减少BVTT的遍历,再根据脑部变形的局部性特征,优化前线任务分解算法,由连续分解任务变为离散分解任务,并在多核CPU上并行实现;
(4)对包围盒相交的三角形对进行进一步的基元检测,根据实际需要采用离散碰撞检测或连续碰撞检测,计算出精确的碰撞位置并将结果输出给外部的碰撞响应程序。
步骤(2)中利用人脑变形的细微性特征,采用增量的更新算法,包括步骤如下:
(2.1)为人脑模型三角网格中的每一个三角形及BVH中的每一个节点设置一个标志位flag;
(2.2)比较输入的新顶点坐标与原顶点坐标,对变形程度达到阈值e的三角形,设置其flag=1,否则设置其flag=0;
(2.3)利用变形后的三角形坐标更新BVH的叶节点,若该三角形的flag=1,则更新该叶节点,并置该叶节点的flag=1,否则不更新该叶节点并置该叶节点的flag=0;
(2.4)自底向上按层更新BVH,对每一个非叶节点的BVH节点,判断该节点左右子节点中是否存在flag=1的节点,若存在,则更新节点,并设置节点的flag=1,否则不更新节点,并设置flag=0,循环更新每层,直至整个BVH更新完毕。
步骤(3)中前线分解的技术,包括步骤如下:
(3.1)初始化:遍历BVTT,构建前线,所述前线是满足以下条件的BVTT节点:节点中的两个包围盒(bounding volume,BV)不相交,或其中的BV均为BVH中的叶子节点;
(3.2)前线任务分解:为了每个核的负载均衡,达到更高的效率,将前线列表(front line list)中的前线节点(即计算任务)以离散的方式分解到多核CPU的不同核中;CPU核对分配到的前线节点执行碰撞检测;
(3.3)前线更新:在前线任务分解后并在多核中执行碰撞检测的同时,依据(3.1)中所述的约束条件更新前线列表。
本发明与现有技术相比的优点在于:该方法基于现有的前线分解算法,充分利用脑部变形的细微性与局部性特征,设计了增量的BVH更新算法及负载均衡更好的前线分解算法,同时针对现有的多核CPU/GPU架构进行了并行实现。在满足碰撞结果精度的情况下,能够有效降低时间开销,满足实时性的要求。
附图说明
图1为本发明基于人脑变形仿真的快速连续碰撞检测方法的流程图;
图2为本发明中的BVH存储结构,BVH按层存储在连续数组中,同时存储对应的flag位用于增量更新算法;
图3为本发明中的前线分解算法示意图,其中图3a为上一帧的前线,图3b为更新后的前线。如图3b下侧所示,为了达到多个线程间更好的负载均衡,本发明采用了离散的前线分解策略;
图4为本发明中的碰撞检测并行算法示意图,为了在并行中达到数据的lock-free,为每个线程开辟一块结果空间,计算完毕后再将结果汇总到结果空间中;
图5为计算完碰撞检测后将碰撞区域标记上色后的显示结果。
具体实施方法
如图1所示,本发明的具体步骤如下:
(1)初始化,读入人脑模型三角网格数据,分析三角网格中的拓扑结构关系得到邻接三角形的集合:孤集,并如图2所示对人脑模型的头骨三角网格、人脑三角网格部分分别构建BVH。
(2)外部变形程序输出新的顶点坐标,利用新的顶点坐标与旧的顶点坐标更新BVH,如图2所示,根据三角形顶点坐标的位移是否达到阈值来设置flag位:若达到阈值,则flag为1,否则为0。这样就得到了BVH中叶节点的flag位情况,然后利用flag位来判断某一节点是否需要更新,使用按层存储的BVH按自底向上的方式更新每层的BVH节点,由于同一层的BVH节点更新计算是彼此独立的,因此可以对其进行并行化计算。
(3)如图3中的a所示,遍历BVTT,构建前线,前线是满足以下条件的BVTT节点:其中的两个BV节点包围盒不相交,或其中的两个BV节点均为BVH中的叶子节点。同时利用前文中通过邻接关系得到的孤集,可以剔除前线中由两个邻接三角形组成的节点。如图3中的b所示,更新前线,得到新的前线,同时得到碰撞的BVTT叶节点,将其三角形对编号输出。由于变形存在时空连续性,每一个前线节点展开后的计算任务是不均衡的,若采用原来的连续任务分解策略,不同核上的计算线程负载不均衡,并导致计算资源的浪费。因此这个过程中使用了离散的前线任务分解算法,在多核CPU上达到了更好的负载均衡。
(4)整个算法是在混合CPU/GPU上并行实现的,如图4的上部所示,首先将前线遍历的计算任务采用离散任务分解的方式分配到多核CPU上,汇总各个核的计算结果后,得到包围盒产生碰撞的三角形对信息。然后如图4的下部所示,通过总线(bus)将CPU端计算结果传递至GPU端,然后将三角形基元检测任务映射到GPU端的多处理器上,并行进行基元检测的计算,计算出精确的碰撞位置后合并结果并输出。由于并行计算中需要为共同访问的数据进行加锁,而锁操作耗时大,为了在并行中达到数据的lock-free,本方法为每个线程开辟一块结果空间,计算完毕后再将结果汇总到结果空间中。
(5)如图5所示为脑部变形中的碰撞检测实例,图中对脑部与头骨间的碰撞、脑部沟回间的自碰撞进行了检测。碰撞检测执行完后,将碰撞结果输出给外部的碰撞响应程序,响应程序进行处理后,调用绘制函数绘制结果。图5中对发生了碰撞的脑部模型三角面片进行了着色区分。其中前两幅图为正面视图,后两幅图为侧面视图,为了方便观察变形与碰撞,第二幅图与第四幅图中为头骨模型设置了一定的透明度。
本发明中未详细阐述的部分属于本领域技术人员的公知技术。
Claims (2)
1.一种基于人脑变形仿真的快速连续碰撞检测方法,其特征在于包括如下步骤:
(1)读入人脑模型数据,分析模型三角网格的拓扑结构关系,得到人脑模型中邻接三角形的集合:孤集(Orphan Set),并分别对人脑模型的头骨部分、人脑部分构建层次包围盒(bounding volume hierarchies,BVH);
(2)以外部变形程序输入的顶点坐标更新BVH,利用人脑变形的细微性特征,采用增量的BVH更新算法,并在GPU端并行实现;
(3)进行碰撞检测,遍历包围盒测试树(bounding volume test tree,BVTT)得到包围盒相交的三角形对,利用孤集剔除掉其中相邻的三角形对;在BVTT的遍历中,利用变形的时空连续性,采用前线(front line)分解的技术来减少BVTT的遍历,再根据脑部变形的局部性特征,优化前线任务分解算法,由连续分解任务变为离散分解任务,并在多核CPU上并行实现;
(4)对包围盒相交的三角形对进行进一步的基元检测,根据实际需要采用离散碰撞检测或连续碰撞检测,计算出精确的碰撞位置并将结果输出给外部的碰撞响应程序;
步骤(2)中利用人脑变形的细微性特征,采用增量的更新算法,包括步骤如下:
(2.1)为人脑模型三角网格中的每一个三角形及BVH中的每一个节点设置一个标志位flag;
(2.2)比较输入的新顶点坐标与原顶点坐标,对变形程度达到阈值e的三角形,设置其flag=1,否则设置其flag=0;
(2.3)利用变形后的三角形坐标更新BVH的叶节点,若该三角形的flag=1,则更新该叶节点,并置该叶节点的flag=1,否则不更新该叶节点并置该叶节点的flag=0;
(2.4)自底向上按层更新BVH,对每一个非叶节点的BVH节点,判断该节点左右子节点中是否存在flag=1的节点,若存在,则更新节点,并设置节点的flag=1,否则不更新节点,并设置flag=0,循环更新每层,直至整个BVH更新完毕。
2.根据权利要求1所述的基于人脑变形仿真的快速连续碰撞检测方法,其特征在于:步骤(3)中前线分解的技术,包括步骤如下:
(3.1)初始化:遍历BVTT,构建前线,所述前线是满足以下条件的BVTT节点:节点中的两个包围盒(bounding volume,BV)不相交,或其中的BV均为BVH中的叶子节点;
(3.2)前线任务分解:为了每个核的负载均衡,达到更高的效率,将前线列表(frontlinelist)中的前线节点即计算任务,以离散的方式分解到多核CPU的不同核中;CPU核对分配到的前线节点执行碰撞检测;
(3.3)前线更新:在前线任务分解后并在多核中执行碰撞检测的同时,依据(3.1)中所述的约束条件更新前线列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510731110.XA CN105205289B (zh) | 2015-11-02 | 2015-11-02 | 一种基于人脑变形仿真的快速连续碰撞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510731110.XA CN105205289B (zh) | 2015-11-02 | 2015-11-02 | 一种基于人脑变形仿真的快速连续碰撞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105205289A CN105205289A (zh) | 2015-12-30 |
CN105205289B true CN105205289B (zh) | 2018-04-06 |
Family
ID=54952968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510731110.XA Expired - Fee Related CN105205289B (zh) | 2015-11-02 | 2015-11-02 | 一种基于人脑变形仿真的快速连续碰撞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105205289B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106875491A (zh) * | 2017-02-13 | 2017-06-20 | 华东师范大学 | 一种面向gpu的三角网格碰撞检测方法 |
CN109834713A (zh) * | 2019-03-13 | 2019-06-04 | 上海飒智智能科技有限公司 | 仿人脑机器人控制中枢及仿人脑行走机器人控制中枢 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193837A (zh) * | 2011-04-26 | 2011-09-21 | 浙江大学 | 一种基于前线的包围盒碰撞检测方法 |
CN102393826A (zh) * | 2011-07-15 | 2012-03-28 | 浙江大学 | 一种基于多核并行处理的柔性场景连续碰撞检测方法 |
CN102609992A (zh) * | 2012-02-12 | 2012-07-25 | 北京航空航天大学 | 基于三角网格变形体的自碰撞检测方法 |
-
2015
- 2015-11-02 CN CN201510731110.XA patent/CN105205289B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193837A (zh) * | 2011-04-26 | 2011-09-21 | 浙江大学 | 一种基于前线的包围盒碰撞检测方法 |
CN102393826A (zh) * | 2011-07-15 | 2012-03-28 | 浙江大学 | 一种基于多核并行处理的柔性场景连续碰撞检测方法 |
CN102609992A (zh) * | 2012-02-12 | 2012-07-25 | 北京航空航天大学 | 基于三角网格变形体的自碰撞检测方法 |
Non-Patent Citations (5)
Title |
---|
《Fast Collision Detection for Deformable Models using Representative-Triangles》;Sean Curtis等;《Proceedings of the 2008 symposium on Interactive 3D graphics and games》;20080215;第61-69页 * |
《MCCD: Multi-core collision detection between deformable models using front-based decomposition》;Min Tang等;《Graphical Models》;20100301;第72卷(第2期);第7-23页 * |
《图形硬件加速的柔性物体连续碰撞检测》;唐敏等;《计算机学报》;20101015;第33卷(第10期);第2024-2028页第3-5节 * |
《多核加速的并行碰撞检测》;杜鹏等;《计算机辅助设计与图形学学报》;20110515;第23卷(第5期);第833-838页 * |
《并行连续碰撞检测算法综述》;朱亚辉等;《计算机时代》;20150615(第6期);第4-6、9页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105205289A (zh) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bédorf et al. | A sparse octree gravitational N-body code that runs entirely on the GPU processor | |
Mok et al. | A robust adaptive clustering analysis method for automatic identification of clusters | |
US7266534B2 (en) | System and method and product of manufacture for automated test generation via constraint satisfaction with duplicated sub-problems | |
Zhang et al. | Collision detection for clothed human animation | |
Feito et al. | Fast and accurate evaluation of regularized Boolean operations on triangulated solids | |
Jorstad et al. | NeuroMorph: a software toolset for 3D analysis of neurite morphology and connectivity | |
Chen et al. | Modeling growth curve of fractal dimension of urban form of Beijing | |
CN106875492A (zh) | 一种面向gpu包围盒碰撞检测方法 | |
CN103366401B (zh) | 多层次虚拟服饰试穿的快速显示方法 | |
CN105205289B (zh) | 一种基于人脑变形仿真的快速连续碰撞检测方法 | |
Sioutis et al. | An efficient approach for tackling large real world qualitative spatial networks | |
CN102193837A (zh) | 一种基于前线的包围盒碰撞检测方法 | |
de Cougny et al. | Parallel three-dimensional mesh generation on distributed memory MIMD computers | |
CN105956605B (zh) | 基于并行k-means聚类的三维结构相似性聚类方法 | |
CN105243238B (zh) | 一种一体化快速产品迭代成形装置及其方法 | |
Douglass et al. | Current views on grid generation: summaries of a panel discussion | |
Strodthoff et al. | Horizontal decomposition of triangulated solids for the simulation of dip-coating processes | |
CN105787020A (zh) | 图数据划分方法及装置 | |
Rodrigues et al. | Parallel and distributed kmeans to identify the translation initiation site of proteins | |
Qi et al. | An enhanced sweep and prune algorithm for multi-body continuous collision detection | |
Nie et al. | A survey of continuous collision detection | |
KR101013784B1 (ko) | Cpu와 gpu를 이용한 하이브리드 병렬 연속 충돌 검출 방법 | |
CN114297929A (zh) | 融合机器学习的径向基函数曲面复杂矿体建模方法和装置 | |
CN106569472A (zh) | 基于bdd的企业车间死锁的快速预防方法 | |
Meng et al. | Anisotropic Cartesian grid generation strategy for arbitrarily complex geometry based on a fully threaded tree |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180406 Termination date: 20201102 |