当前位置: 首页 > 专利查询>南昌大学专利>正文

基于GPU加速的改进Marchingcubes算法的实时血液与水融合仿真方法技术

技术编号:37237926 阅读:15 留言:0更新日期:2023-04-20 23:19
本发明专利技术公开了基于GPU加速的改进Marching cubes算法的实时血液与水融合仿真方法,针对在重建和渲染大量不同种类的粒子表面时,Marching cubes算法会出现效率低下、实时性不佳、逼真度不够等问题,为解决此问题本发明专利技术提出首先通过考虑不同液体粒子的各向异性特征,建立各向异性核函数来计算隐式曲面,然后在GPU线程内为水和血液两种粒子分别建立一个数据结构来加速搜索,最后利用GPU来加速Marching cubes构建三角形网格,并利用OpenGL进行渲染的方法。该方法能够从不同的混合粒子数据中快速准确的重建出三角形网格,显著的提高传统Marching cubes算法曲面重建的效率和准确度,可以更好地满足虚拟手术中血液与水的仿真实时和逼真的要求。仿真实时和逼真的要求。仿真实时和逼真的要求。

【技术实现步骤摘要】
基于GPU加速的改进Marching cubes算法的实时血液与水融合仿真方法


[0001]本专利技术属于实时流体模拟
,具体涉及一种基于GPU加速的改进Marching cubes算法的实时血液与水融合仿真方法。

技术介绍

[0002]在现实生活中,水是牛顿流体,而血液主要由血细胞和血浆组成,是一种粘性系数不为常数的非牛顿流体,即其剪切应变率与剪应力间不符合线性关系,这使得血液与水的融合比普通的流体混合物理特性要复杂的多,如果不考虑血液的非牛顿特性,而直接将血液当作牛顿流体来简化处理,则会导致血液与水的物理真实性大大降低。在虚拟手术中,除了真实感的要求,血液与水融合的模拟仿真还必须要达到实时性要求,而传统的基于物理的流体模拟方法由于计算的复杂性,会导致计算效率低下,很难达到实时性的要求。
[0003]国内外研究者们对于实现两种液体混合的仿真,提出了很多方法,然而这些所提出的方法对于血液与水混合这种非牛顿流体特殊性质的模拟仿真普遍出现计算量大、存储费用高、模型粗糙等缺点,难以实现实时性和真实感兼具的仿真效果。此外,两种不同物理性质的液体混合时的密度、粘性等物理性质的变化细节也决定了最终渲染效果是否逼真,所以国内外学者们一直在努力探索模拟不同流体混合现象的新方法。
[0004]早期流体模拟的方法为了避免流体表面的提取和渲染,大部分采用了二维高度场方法,近期这种高度场的方法已经能应用于模拟海浪、实现与粒子系统结合模拟浪花飞溅的现象。Fedkiw等人运用基于网格的表面跟踪技术在实现烟雾的模拟取得了成功。但是要对真正流体表面的流动现象进行渲染,不仅需要使用基于流体动力学的方法,而且还要根据不同的流体动力学模型对流体表面来进行表面重建与渲染。
[0005]对基于不同的流体动力学模拟的液体表面进行渲染的方法主要有两种——基于欧拉方法的表面跟踪方法和基于拉格朗日粒子的表面渲染。
[0006]基于欧拉方法的表面跟踪方法是通过更新一个标量场来定义流体的隐含表面。一般来说,这个标量场通过规则的网格来进行离散化取值,由此标量场进行判断欧拉网格的固定点是处于流体之内还是流体之外。基于拉格朗日方法的流体模拟的最经典的方法是运用大量粒子去模拟流体的运动状态,因为粒子是已经模拟好了流体的各种物理性质,会跟随流体的物理性质去流动,这就使得流体的运动变得简单而且不会出现稳定性的问题。但是,由拉格朗日粒子来创造出一个理想的闭合液体表面是一个具有挑战性的课题。
[0007]随着国内外对混合流体渲染模拟仿真研究的不断深入,与其相匹配的各种绘制方法也不断的经历发展和进步,渲染仿真难点也从最开始的稳定性、准确性逐步转移到对混合流体表面的提取和渲染工作。M
ü
ller等人提出了在基于拉格朗日粒子的表面渲染上,通过定义一个标量场将流体的内部与外部分离开来,再通过Marching cubes算法将流体的表面提取出来,进行表面重建。
[0008]虽然目前对流体渲染仿真模拟存在着多种方法,其中比较经典的方法包括体绘制
的光线追踪算法、屏幕域抛雪球算法,以及面绘制的Marching Cubes算法,但血液以及血液和水混合后的液体是一种透明度较低,对于层次感和光影感要求都不要,且更注重表面的平滑度的液体,除此之外,作为虚拟手术系统的一个模块,其实时性要求较高,因此基于面绘制的Marching Cubes算法更适用于本专利技术。

技术实现思路

[0009]为了解决现有技术中对真实感和实时性的平衡问题,本专利技术提出了一种提升计算效率和优化渲染真实度的实时血液与水融合模拟仿真方法。实验证明该专利技术在视觉和指标上都有比较优秀的效果。
[0010]本专利技术采用的技术方案为:
[0011]一种基于GPU加速的Marching cubes算法的实时血液与水融合仿真方法,其特征在于:包括以下步骤:
[0012]S1、对两种不同粒子的加权主成分和各向异性特征进行分析,采用一种对一些核进行插值的改进方法对血液与水混合液体隐式曲面进行计算;
[0013]S2、对于大量不同种类的粒子,在GPU中为不同粒子分别单独构建一个哈希网格和空间AABB搜索结果来进行搜索;
[0014]S3、利用GPU来加速Marching cubes构建混合液体粒子的三角形网格;
[0015]S4、利用OpenGL来渲染最后计算得到的三角形面片。
[0016]所述步骤S1具体为:针对目前隐式曲面计算方法会造成提取的曲面不够光滑,从而导致渲染效果不够逼真等问题,本专利技术采用对粒子核进行插值的改进方法对血液与水混合液体的隐式曲面进行计算,可以有效提取出更加光滑的曲面。本专利技术根据该方法来计算血液与水混合液体的隐式曲面具体方法如下:
[0017]通过空间位置和两种粒子球半径定义一个球的核函数,如下公式(1)
[0018][0019]式中,x
i
为粒子的坐标,h为可调整的核半径,x是空间中的点坐标。每个粒子核的影响范围受到h的限制,这意味着一个粒子只影响本身附近空间中的一个固定区域。
[0020]在网格上的累计值计算后,采用Marching cubes算法从空间网格的隐式曲面表示中检索出三角形网格,但是这种方法会受到粒子采样和核函数球形形状的影响而造成的凹凸的曲面,因此采用主成分分析法来提取一组样本的主分布,通过将样本设置为一组点的位置,利用该方法可以获取一些主要维度的坐标。每个粒子核的加权协方差矩阵是通过每个临近加权协方差矩阵的相加来进行计算的,加权协方差矩阵是利用粒子到临近的粒子的距离来计算的。通过对协方差矩阵进行SVD分解,可以计算出椭圆核函数的三个轴,如下公式(2):
[0021][U,S,V]=svd(CovarianceM) (2)
[0022]公式(2)中,Covariance M是每个粒子的协方差矩阵,U是一个矩阵,其列是协方差矩阵的特征向量,S是一个对角线矩阵,其对角线上的元素是特征值,V是一个矩阵,其行是协方差矩阵的特征向量。
[0023]之后对S进行修改,使得充满临近粒子核的W的积分为常数。所以需要对S进行标准
化。对于之前标准化修改后的S、U、V矩阵,计算出一个能将原球核函数变化为椭圆核函数的矩阵G,并可以用此矩阵G的到各向异性核函数。
[0024]W(r,G)=det(G)P(||Gr||)
ꢀꢀꢀꢀ
(3)
[0025]利用这个核函数来计算隐式曲面,可以得到一个光滑的解。
[0026]所述步骤S2具体为:由于粒子的种类不同且数量庞大,传统的搜索方法会浪费大量时间。针对此问题,本专利技术利用空间哈希网格和AABB盒数据结构并使用GPU进行加速搜索可以节省大量的计算时间。加速搜索的数据结构最常用的是KD树和空间哈希网格两种方式,而对于同构粒子来说,节点分布均匀的空间哈希网格更具优势。对于水和血液两种各向异性的粒子,两种粒子的每个粒子核的形状不同,但归一化的操作使得核的范围可以限制在一个固定大小的圆内本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于GPU加速的改进Marching cubes算法的实时血液与水融合仿真方法,其特征在于,所述方法包括以下步骤:S1、对两种不同粒子的加权主成分和各向异性特征进行分析,采用对粒子核进行插值的改进方法对血液与水混合液体隐式曲面进行计算;S2、对于大量不同种类的粒子,在GPU中为不同粒子分别单独构建一个哈希网格和空间AABB搜索结果来进行搜索;S3、利用GPU来加速Marching cubes构建混合液体粒子的三角形网格;S4、利用OpenGL来渲染最后计算得到的三角形面片。2.根据权利要求1所述的基于GPU加速的改进Marching cubes算法的实时血液与水融合仿真方法,其特征在于,所述步骤S1具体为:S1

1、通过空间位置和两种粒子球半径定义一个球的核函数;S1

2、在对网格上的累计值计算后,采用Marching cubes算法从空间网格的隐式曲面表示中检索出三角形网格,并采用主成分分析法来消除受例子采样和核函数球形形状的影响而造成的凹凸曲面;S1

3、利用所述核函...

【专利技术属性】
技术研发人员:邹艳妮张泽龙刘小平
申请(专利权)人:南昌大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1