首页 / 专利库 / 图形技术 / 压缩失真 / 一种基于SPH的真实感湍流模拟方法

一种基于SPH的真实感湍流模拟方法

阅读:298发布:2020-05-12

专利汇可以提供一种基于SPH的真实感湍流模拟方法专利检索,专利查询,专利分析的服务。并且本 发明 是一种基于SPH的真实感 湍流 模拟方法,针对传统SPH方法在模拟湍流时由于其扰动剧烈导致的涡不稳定问题,提出了一种具体改进方法,从而获得更稳定、持久的涡。首先,基于纳维-斯托克斯方程建立SPH湍流模型,并针对 碰撞检测 计算代价过大的问题,引入PBF理论方法进行 加速 ,通过直接矫正粒子 位置 来减少传统方法中计算碰撞 力 的花销,但是该方法会引入额外的阻尼,导致涡易消散;其次,针对涡易消散的问题,额外引入了涡约束,使用表面离散度来指引湍流表面涡生成的位置,通过湍流力修正粒子的运动方向。实验结果表明,应用该方法模拟湍流能保证较好的 稳定性 与真实感,平均 帧 率能够达到30.10fps的实时模拟速度,涡现象较传统模型更为完整。,下面是一种基于SPH的真实感湍流模拟方法专利的具体信息内容。

1.本发明是一种基于SPH的真实感湍流模拟方法,针对传统方法在模拟湍流时由于其扰动剧烈导致的涡不稳定问题,提出了一种具体改进方案,从而获得更稳定、持久的涡。在传统基于位置流体(Position Based Fluids,PBF)的基础上引入涡约束,通过增加旋转,通过涡度加速粒子的自旋运动,这种方式可以保持整个系统的旋度。
湍流由于其流速快、具有破碎细节的特点,通常采用SPH方法来进行模拟。SPH方法是一种用于求解连续介质动力学方程的无网格方法,它通过引入空间场函数和核函数的概念,对纳维-斯托克斯(Navier-Stokes,N-S)方程进行求解,将流体控制方程离散化。本发明模型是经典N-S方程的推广,但区别于经典的N-S模型,湍流场景具有更加细致的微观结构(尤其与海面、波等场景相比),因此需要考虑流体粒子的旋转运动,也就是自身的旋转场。
SPH方法模拟湍流时,粒子属性会受到N-S方程中扩散项的影响,导致湍流细节损失与涡不持久,最终导致不太逼真的结果。为了解决这个问题,本发明提出基于表面涡约束的涡细节模拟,来正确模拟湍流中的涡并放大细节。
相较传统模型,本发明具体包括如下步骤:
1、基于表面离散度的涡度生成
对于粒子涡度在SPH流体中的拉伸与扩散,本发明的计算遵循粒子涡度解析式的求解。
但涡并非是一直存在的,如何初始化SPH粒子的涡度是本发明生成湍流细节的关键。
本发明首先要区分流体粒子的离散度。先以高度值对流体表面进行采样,求出每个粒子光滑半径范围内高度大于ε的粒子数量x;然后再对该粒子光滑半径内邻居粒子的x求平均,即可得到当前粒子的离散度c。该值反映了当前粒子所在位置流体表面的复杂程度,该值越大,说明此处表面变化越剧烈。湍流只会在离散度小于阈值cthreshold的地方产生。
初始化粒子pi的涡度值ωi,如式(1)所示。
ωi=μ·(ui×xij)                         (1)
其中,μ为涡放大系数,ui为粒子i的速度,xij=xi-xj。
2、基于涡度的湍流力生成
根据权利要求1所述方法,在生成涡度之后,可以通过基础运动方程的涡度形式来将涡度拓展成整个受控流体区域的湍流。在本发明的方法中,生成湍流的旋转力如式(2)所示。
f=∑jμ(xij×ωj)                      (2)
通过应用该公式可以生成表面湍流,但是该方法存在明显的缺陷,如图5所示。如果当前SPH粒子在低离散度表面远离周围粒子时(如飞溅的水花),SPH粒子会生成比之前大得多的涡度,这将导致在下一时间步长后,粒子运动轨迹发生强烈偏移。另一方面,与基于网格的方法不同的是,基于粒子的方法对于粒子的控制受限于光滑核半径,如果控制粒子的速度过快,已经脱离流体表面的粒子会不受控的运动,导致模拟失真。受这两方面的影响,本发明在进行流体粒子兔子入水实验时,得到错误的实验结果如图6所示。
为了解决该类问题,本发明提出了一种可以用于流体控制的涡约束方法。基本原理是如果一个流体粒子大幅度远离原始表面,弹簧约束会将流体粒子拉向原位置。如果流体粒子受到控制,则弹簧约束基本不会影响流体粒子的流动。这种方法也不会引起新的人工粘性。如式(3)所示。
其中,β是弹簧约束的参数,因为该方法是基于形状约束算法的,因此ri是参照控制粒子(用于形状约束场景的特有粒子)的位置,也就是距离当前粒子xi最近的被约束的流体粒子的位置。缩放函数f()如式(4)所示。
式(4)中的a取1.5,b取8.0。但是本发明是针对快速运动的湍流仿真场景,因此需要使用离散值(Cp+di)代替参照控制粒子的位置ri,将式(3)改进如式(5)所示。
其中,Cp是当前粒子光滑半径范围内离散值最大的粒子位置,di是上一时刻粒子位置,xi为当前粒子位置。在SPH粒子脱离水面,会受到该力的影响拉回可控范围内。
但式(5)可能导致流体粒子的加速度变化过大,如果 过大将使流体粒子在水面附近反复波荡。因此本发明用速度差|Vij|来代替β,从而加入对当前粒子所处流体表面剧烈程度的参考,最后该约束方法如式(6)所示。
使用|Vij|即Cp处粒子与当前粒子的速度之差,若当前流体表面较为平缓,则|Vij|较小,约束力将进一步减小,以此避免了反复波荡的问题。
实验结果表明,本发明提出的基于SPH的真实感湍流模拟方法,在湍流场景下,稳定性和真实感均优于改进前的标准不可压缩SPH方法,且仍能够保证实时性。

说明书全文

一种基于SPH的真实感湍流模拟方法

技术领域

[0001] 本发明涉及计算机图形学领域,具体涉及一种基于SPH(Smoothed Particle Hydrodynamics,光滑粒子流体学)的真实感湍流模拟方法,包含两个具体步骤,即基于表面离散度的涡度生成、基于涡度的湍流力生成,最终获得更稳定、真实的湍流。

背景技术

[0002] 本发明的研究目标是,研究基于SPH构建框架来模拟真实感湍流,采用基于位置的流体(Position Based Fluids,PBF)方法对湍流模拟进行加速,同时采用基于表面涡约束的涡细节模拟来增加并增强涡细节,并实现多场景湍流仿真。
[0003] SPH方法是一种用于求解连续介质动力学方程的无网格方法,它通过引入空间场函数和核函数的概念,对纳维-斯托克斯(Navier-Stokes,N-S)方程进行求解,将流体控制方程离散化。该方法避免了网格方法中存在的网格缠绕和扭曲问题,在计算机物理动画中主要用来进行流体的运动模拟。这种方法克服了基于网格的方法中网格划分实施困难以及求解过程发生网格突变的问题。
[0004] 湍流由于其流速快、具有破碎细节的特点,通常采用SPH方法来进行模拟。本发明模型是经典N-S方程的推广,但区别于经典的N-S模型,湍流场景具有更加细致的微观结构(尤其与海面、波等场景相比),因此需要考虑流体粒子的旋转运动,也就是自身的旋转场。SPH方法模拟湍流时,粒子属性会受到N-S方程中扩散项的影响,导致湍流细节损失与涡不持久,最终导致不太逼真的结果。为了解决这个问题,本发明提出基于表面涡约束的涡细节模拟,来产生涡,并保留涡的稳定性
[0005] 考虑到SPH方法模拟湍流时,粒子属性变化剧烈,本发明在构建基于SPH的湍流模拟框架时,引入PBF理论方法对湍流框架进行加速。PBF方法是近年来从基于位置的动力学(Position Based Dynamics,PBD)方法延伸出来的,PBD方法是为模拟固体碰撞设计的,Miles等人将它与流体结合,提出了基于PBD框架的PBF理论方法,该方法通过直接矫正粒子位置来减少传统方法中计算碰撞力的花销。但由于传统的PBF是直接矫正位置,而非基于碰撞力的,所以会引入额外的阻尼,不适用于湍流场景的构造,湍流中的细节会快速消失。因此本发明将传统的SPH方法与PBF理论方法结合,并额外引入表面涡约束,来增加、增强湍流中的涡现象。(参考文件1:Macklin,Miles,and Matthias Müller.Position based fluids.ACM Transactions on Graphics(TOG)32.4(2013):104.)
[0006] 在基于PBF方法高效模拟不可压缩流体方面,国内外很多大学和研究机构都进行了全面而深入的研究,并取得了突破性进展。
[0007] 2015年,Clavet等人使用该方法模拟粘性流体,取得了非常好的效果。(参考文件2:Clavet S,Beaudoin P,Poulin P.Particle-based viscoelastic fluid simulation[C]//Acm Siggraph/eurographics Symposium on Computer Animation.2015:219.)[0008] 2018年,卿伟对PBF理论框架的可扩展性和先进性进行了综述,并列举实验数据说明了该方法对仿真效率的提升。(参考文件3:卿伟.基于PBD框架的流体模拟[J].现代计算机(专业版),2018(07):66-70.)
[0009] 以上方法提供了基于PBF加速湍流模拟的基础。与此同时,近年来,更多的研究人员开始重视如何利用简单高效的方法,模拟湍流中的涡细节。
[0010] 涡细节的产生主要有两种方法:噪声函数法及涡粒子法(Vortex Partide,VP)。早期的湍流模拟主要采取噪声函数法。
[0011] 2007年,Bridson等人提出了无旋噪声函数在湍流合成中的应用,这类方法利用快速的噪声函数来产生流场中紊乱的但又符合Komoglov分布规律的湍流,十分适合计算机图形学的应用。(参考文件4:Robert Bridson,Jim Houriham,and Marcus Nordenstam.Curl-noise for procedural fluid flow.ACM Transactions.Graphic,26(3):46,2012.)[0012] 2012年,Narain等人把这个方法与湍流动能的分布方程相结合,成功模拟出了具有湍流细节的烟雾效果。(参考文件5:Rahul Narain,Sewall,Mark Carlson,and Ming C.Lin.Fast animation of turbulence using energy transport and procedural synthesis.In S/PH Asia 08:AC SIGGRAPH Asia 200 S papers,pages 1-8,2012)[0013] 2013年,Schechter等人利用湍流在网格中的传递规律结合噪声函数实现了类似的高精度烟雾模拟效果。(参考文件6:H.Schechter and Rt.Bridson.Evolving sub-grid turbulence for smoke animation.In Eurographics/ACA SIGGRAPH Symposium on Computer Animation,2013)
[0014] 噪声函数法的优势在于其计算效率高、易于与其他流体框架进行耦合;缺点在于当模拟大量剧烈运动的流体粒子时,容易出现粒子抖动的问题从而引起失真。
[0015] 另一类细节合成方法是涡粒子方法。这是一类结合粒子的方法,与噪声函数方法不同,涡粒子方法并不直接求解N-S方程,而是求解N-S方程的涡形式。这类方法把涡约束携带在粒子上,然后通过在流场中的被动对流粒子使整个流场中保持旋度。
[0016] 2015年,Shao等人首次给出一种基于边界层理论模型的漩涡合成方法以恢复SPH流体中固流交互产生的涡度场,并对其进行稳定演化。但该类方法产生的旋涡无法脱离固体单独存在。(参考文件7:Shao,X.,Zhou,Z.,Zhang,J.and Wu,W.(2015)Realistic and Stable Simulation of Turbulent Details behind Objects in Smoothed-Particle Hydrodynamics Fluids.Computer Animation and Virtual Worlds,26,79-94)[0017] 2017年,Jan等人使用涡度限制模拟水中的泡沫。通过加入扰流模型,将气泡作为SPH颗粒,该方法对颗粒使用了涡约束,以实现更详细的运动。(参考文件8:Dan Koschier and Jan Bender.2017.Density Maps for Improved SPH Boundary Handling.In ACM SIGGRAPH/Eurographics Symposium on Computer Animation.ACM,1–10.3)[0018] 噪声函数法和涡粒子法各有优劣。但是考虑到本发明是基于PBF方法的,PBF方法在直接改变相交粒子位置的时候,会引入额外的阻尼,导致整个系统的能量损耗,使湍流中的涡快速消失,所以本发明通过涡约束的方法,向系统重新注入能量。该方法通过更新涡约束来加速流体粒子自旋转,产生旋转力保持流体系统的旋度。

发明内容

[0019] 本发明提出一种基于SPH的真实感湍流模拟方法,通过SPH湍流模型计算速度场、速度场实现湍流加速模型,再通过表面涡约束模拟涡细节,最终获得更稳定、真实的湍流。
[0020] 具体来讲,本发明基于粒子的SPH方法,引入改进的PBF理论框架,对光滑半径内的邻近粒子近似积分,得到粒子的物理参数及其空间导数。在此基础上,提出基于表面涡约束的涡细节模拟,针对涡易消散的问题,额外引入了涡约束,使用表面离散度来指引湍流表面涡生成的位置,通过湍流力修正粒子的运动方向,最终实现湍流仿真的目的;并对湍流运动场景进行丰富和优化,实现如水池注水、溃坝等真实场景模拟。
[0021] 接下来,先对基础理论加以说明。
[0022] 纳维-斯托克斯(Navier-Stokes,N-S)方程是用于描述不可压缩流体动量守恒的运动方程。该方程主要用来描述自然界中的流体运动规律,例如水体、烟雾、气流等流体,其本质上是依据顿第二定律的,也可以表述为:无穷小体积流体的动量变化是其重力、粘力、压力以及其他作用力的效果总和。
[0023] N-S方程的三维表现形式如式(1)和式(2)所示
[0024]
[0025]
[0026] 其中,ρ为密度,v为速度向量,t为时间,f为特定外力。T为应力张量。其中T×表示如下。
[0027] [T×]i=∑i∑kεijkTjk   (3)
[0028]
[0029] ε为三维Levi-Civita符号(常见于张量分析)。θ为微惯性力系数,微惯性力系数的物理解释是每个无穷小的流体粒子对旋转加速度具有一定的惯性阻力,经验值为2,这个值与粒子大小无关。ω为粒子旋转角速度。C为耦合应力张量,用来模拟角运动产生的应力。τ为外部扭矩(也就是切向约束)。
[0030] 式(1)代表线性动量守恒,是针对速度的,也是N-S方程的一般形式,本质是ma=F。式(2)代表考虑涡流具有的涡度,表征了旋转自由度。T作为对称张量不能满足现有条件,所以类推式(1),得到角动量守恒方程式(2)。
[0031] 本发明针对不可压缩流体建模,因此流体的密度不得随时间而变化。不可压缩性条件可以直接从连续性方程导出。该方程在不可压缩条件下有一个推论,即速度场v必须是无散度的。散度用于表征空间各店矢量场发散的强弱程度,物理上,散度的意义是场的有源性。散度作用于向量场,如果某一点处速度的散度为正,代表该点速度是向外发散的,即某一方向上数值的拉伸也会引起另一方向上数值的拉伸。速度无散度,则代表某一方向上数值的拉伸,会引起另一方向上数值的收缩。一些可压缩流体,比如粘弹性流体(如蜂蜜、融化的黄油等),其速度的散度就不为0。
[0032]
[0033]
[0034] 接下来只需要对应力张量T和耦合张量C求解,即可得出最终的运动方程。应力张量T,由外力产生内力,单位面积内力即为应力,分析单元体(假设无限小的平行六面体)上九个应力分量可以描述某点应力状态,就是应力张量。应力张量本质是一个3×3的矩阵。耦合张量C,即外力张量,涡流的外力张量主要是旋转场造成的。
[0035]
[0036]
[0037] 其中,[ω×]jk=∑iεijkωi
[0038] 式(7)的应力张量中各项,p是压力,I是单位矩阵,中间两项梯度分量,代表粘度项。μ是粘度系数,μt是动态粘度系数。最后一项可以理解为从旋转到线性运动(切向力会在运动过程中慢慢耗散)的转换,可以在物理上解释为流体中的无穷小颗粒之间的摩擦项。
[0039] 式(8)的耦合张量中各项,c为动态旋转系数,为常量,经验值为1.0。 为微旋转算子转置的梯度。
[0040] 应力张量描述内力,耦合张量描述外力。将两者带入守恒方程式(1)和式(2),并应用不可压缩条件式(6),即可推导出运动方程式(9)和(10)。
[0041]
[0042]
[0043] ν(希腊字母nu)、νt和ζ分别表示运动粘度、运动传递系数和运动旋转粘度。当νt=-ν,ζ=0,t=0时,公式可以简化为N-S方程,这也能一定程度说明模型是N-S模型的推广形式。经典N-S方程不考虑旋转加速度,即式(2.10)恒为0,而本发明是考虑旋转角速度的,所以式(10)不为0。由于本发明只考虑非粘性流体,仍然可以选择ν=0且ζ=0来简化公式。简化后公式如式(11)、式(12)所示。
[0044]
[0045]
[0046] 由此,就得到了湍流模型的数学运动方程,即粒子每个属性之间的关系。接下来论述单个属性(如速度、压力、涡度等)是如何随着时间步长迭代计算的。除对碰撞检测的处理以外,迭代计算过程是严格按照传统SPH方法进行演算的。
[0047] 下面将依次介绍基于PBF方法对湍流模拟进行加速,以及如何通过表面涡约束产生稳定的涡细节。
[0048] SPH方法作为一种无网格的基于粒子的拉格朗日质点方法,每个粒子的属性迭代主要分为两个步骤:首先对核函数的积分表达式进行求解,然后对粒子近似过程中的方程进行求解,两个步骤的求解过程即SPH方法的近似过程。下文中的x是不同属性的泛指。
[0049] (1)核函数积分法的求解
[0050] 核函数的近似,即对支持域内的粒子物理属性利用核函数进行加权积分,计算得出问题域中的任一点的场变量,其中光滑核函数通过核近似法来计算得到,从而将微分形式的方程转化为积分形式。首先,宏观函数f(x)在位置矢量x处的积分表达如式(13)所示。
[0051]
[0052] 式中的Ω为矢量x的积分体积,f是x的积分函数,具有连续性;δ(x-x')表示Dirac函数,保证了积分函数的精确性。用SPH方法中的光滑函数W(x-x',h)代替Dirac函数的核函数δ(x-x',h),得到式(14)所示形式。
[0053]
[0054] 式(14)中的h表示光滑长度,它只是在光滑函数W(x-x',h)内有定义。然后根据分布积分和散度定理对f(x)的导数进行估计计算。
[0055] 以上的方程说明可以通过光滑函数的空间导数求得场函数的空间导数,因此任意场函数的空间导数可根据核函数转化计算。
[0056] (2)粒子近似法的求解
[0057] 在SPH方程求解的粒子近似过程中,偏微分方程的求解域由离散分布的粒子表示。在对于任一点x处的场变量进行核函数近似后具有连续形式,将其转化为支持域内所有的粒子的场变量叠加求和的离散形式。流体的问题域被离散化成为有限数量的粒子,每个粒子都带有自身的材料性质还有其他物理量,如质量、速度、密度、压力等物理属性。可以通过光滑函数域内的粒子j作用的总和对场中任意粒子i进行求解,粒子近似法的示意图如图1所示。
[0058] SPH方法第一步函数积分近似法中的无穷小体元dx'可以用粒子的体积VVi来代替,粒子的质量可用mi=VViρi表示。其中ρi为粒子的密度,i=1,2,…,N,N是x支持域域内粒子的总数量。这样就能够得到函数近似方法中f(x)的离散粒子表达式,如式(15)所示。
[0059]
[0060] 即
[0061]
[0062] 在粒子近似法这一步骤中,如同核函数近似表示方法,在某个粒子i处的xi,替换式(16)中x即可得到粒子i的核函数近似表示方法。
[0063] (3)光滑核函数构造
[0064] 基于SPH的流体模拟方法中,粒子的属性会“扩散”到周围的粒子上,并且随着距离的增加,影响逐渐减少。这种随着距离而衰减的函数被称为从“光滑核函数”,最大影响半径为“光滑核半径”。W(x-x',h)光滑核函数构造的关键在于计算相互作用粒子之间的距离。因为光滑核函数的表达式是关于粒子相对距离的多项式,在支持域kh的情况下,定义的核函数表示形式,如式(17)所示。
[0065] W(x-x',h)=W(R)=a0+a1R+a2R2+...+anRn   (17)
[0066] 式中R表示两个粒子的相对距离。当R=0时,光滑函数的i阶导数如式(18)所示。
[0067]
[0068] 其中i=1,2,…,n,且其中存在的限制条件如式(19)所示。
[0069]
[0070] 以上为SPH方法的实现过程。SPH方法属于基于力的方法,这类方法通过计算内力(比如流体内部的粘性力和压力)和外力(比如重力和碰撞力)的合力,根据牛顿第二定律计算出加速度,再根据数值积分求出速度和位置信息。如果使用基于力的方法,在检测到碰撞之后,需要计算由于物体穿透导致的碰撞力,本会互相穿透的粒子会在碰撞力的作用下分开。这种方法需要三个步骤:计算碰撞力、计算速度、更新位置。传统碰撞检测示意图如图2所示。
[0071] 这样一来就有明显的延迟反应。而湍流作为高速流体,对时延非常敏感,故本发明引入基于位置的流体(PBF)方法。在该方法中,当检测到两个粒子发生穿透时,直接根据约束修正物体位置,然后更新速度信息,如图3所示。
[0072] 但是由于传统的PBF是直接矫正位置,而非基于碰撞力的,所以会引入额外的阻尼,导致湍流中的涡快速消失。因此,本发明在传统PBF的基础上引入涡约束,通过增加旋转力,通过涡度加速粒子的自旋运动,这种方式可以保持整个系统的旋度,如式(20)所示。
[0073] fivorticity=N×ωi   (20)
[0074] 其中,N=η/|η|, 而粒子i的涡度ωi如式(21)所示。
[0075]
[0076] 同时,本发明是基于CUDA(Compute Unified Device Architecture)运算平台实现计算并行化的,采用雅克比(Jacobi)迭代方法进行求解。此外,本发明采用kd-tree算法来进行邻近粒子搜索,算法流程如图4所示。
[0077] 湍流由于其流速快、具有破碎细节的特点,通常采用SPH方法来进行模拟。本发明模型是经典N-S方程的推广,但区别于经典的N-S模型,湍流场景具有更加细致的微观结构(尤其与海面、水波等场景相比),因此需要考虑流体粒子的旋转运动,也就是自身的旋转场。SPH方法模拟湍流时,粒子属性会受到N-S方程中扩散项的影响,导致湍流细节损失与涡不持久,最终导致不太逼真的结果。为了解决这个问题,本发明提出基于表面涡约束的涡细节模拟,来正确模拟湍流中的涡并放大细节。
[0078] 相较传统模型,本发明具体包括如下步骤:
[0079] 步骤一:基于表面离散度的涡度生成
[0080] 对于粒子涡度在SPH流体中的拉伸与扩散,本发明的计算遵循上一节中粒子涡度解析式(21)的求解。但涡并非是一直存在的,如何初始化SPH粒子的涡度是本发明生成湍流细节的关键。
[0081] 本发明要区分流体粒子的离散度。首先,以高度值对流体表面进行采样,求出每个粒子光滑半径范围内高度大于ε的粒子数量x,然后再对该粒子光滑半径内邻居粒子的x求平均,即可得到当前粒子的离散度c。该值反映了当前粒子所在位置流体表面的复杂程度,该值越大,说明此处表面变化越剧烈。湍流只会在离散度小于阈值cthresh0ld的地方产生。
[0082] 初始化粒子pi的涡度值ωi,如式(22)所示。
[0083] ωi=μ·(ui×xij)   (22)
[0084] 其中,μ为涡放大系数,ui为粒子i的速度,xij=xi-xj。
[0085] 步骤二:基于涡度的湍流力生成
[0086] 在生成涡度之后,可以通过基础运动方程的涡度形式(12)来将涡度拓展成整个受控流体区域的湍流。在本发明的方法中,本发明生成湍流的旋转力如式(23)所示。
[0087] f=∑jμ(xij×ωj)   (23)
[0088] 通过应用该公式可以生成表面湍流,但是该方法存在明显的缺陷,如图5所示。如果当前SPH粒子在低离散度表面远离周围粒子时(如飞溅的水花),SPH粒子会生成比之前大得多的涡度,这将导致在下一时间步长后,粒子运动轨迹发生强烈偏移。另一方面,与基于网格的方法不同的是,基于粒子的方法对于粒子的控制受限于光滑核半径,如果控制粒子的速度过快,已经脱离流体表面的粒子会不受控地运动,导致模拟失真。受这两方面的影响,本发明在进行流体粒子兔子入水实验时,得到错误的实验结果如图6所示。
[0089] 为了解决该类问题,本发明提出了一种可以用于流体控制的涡约束方法。基本思路是,如果一个流体粒子大幅度远离原始表面,弹簧约束会将流体粒子拉向原位置。如果流体粒子受到控制,则弹簧约束基本不会影响流体粒子的流动。这种方法也不会引起新的人工粘性。如式(24)所示。
[0090]
[0091] 其中,β是弹簧约束的参数,因为该方法是基于形状约束算法的,因此ri是参照控制粒子(用于形状约束场景的特有粒子)的位置,也就是距离当前粒子xi最近的被约束的流体粒子的位置。缩放函数f()如式(25)所示。
[0092]
[0093] 式(25)中的a取1.5,b取8.0。但是本发明是针对快速运动的湍流仿真场景,因此需要使用离散值(Cp+di)代替参照控制粒子的位置ri,将式(24)改进如式(26)所示。
[0094]
[0095] 其中,Cp是当前粒子光滑半径范围内离散值最大的粒子位置,di是上一时刻粒子位置,xi为当前粒子位置。当SPH粒子脱离水面,会受到该力的影响拉回可控范围内。
[0096] 但式(26)可能导致流体粒子的加速度变化过大,如果 过大将使流体粒子在水面附近反复波荡。因此本发明用速度差|Vij|来代替β,从而加入对当前粒子所处流体表面剧烈程度的约束,最后该约束方法如式(27)所示。
[0097]
[0098] 使用|Vij|即Cp处粒子与当前粒子的速度之差,若当前流体表面较为平缓,则|Vij|较小,约束力将进一步减小,从而避免了流体粒子在水面附近反复波荡的问题。
[0099] 在实际实现中,本发明提出的提高湍流细节稳定性的方案,在湍流场景下,稳定性和真实性优于改进前的标准不可压缩SPH方法。附图说明
[0100] 图1是粒子近似法示意图。
[0101] 图2是传统碰撞检测示意图。
[0102] 图3是PBD碰撞检测示意图。
[0103] 图4是kd-tree构造过程流程图
[0104] 图5是缺陷原理示意图。
[0105] 图6是流体兔子入水实验结果图。
[0106] 图7是模型系统流程图。
[0107] 图8是湍流模拟框架溃坝场景效果图。
[0108] 图9是湍流模拟框架溃坝场景渲染图。
[0109] 图10是湍流模拟框架水池注水场景效果图。
[0110] 图11是水池注水场景压力、速度效果图。
[0111] 图12是湍流模拟框架水池注水场景渲染图。
[0112] 图13是涡细节模拟场景效果图。
[0113] 图14是本发明算法性能数据图。

具体实施方式

[0114] 下面将结合附图和实施例对本发明的技术方案及结果作进一步的详细说明。
[0115] 本发明提出一种基于SPH的真实感湍流模拟方法,包含两个具体步骤,即基于改进的SPH湍流模型计算速度场、角速度场以及基于表面涡约束模拟涡细节,最终获得更稳定、真实的湍流。如图7所示,下面具体对实现步骤进行说明。
[0116] 步骤一:初始化粒子状态,计算光滑核函数,确定当前粒子的最近邻粒子。
[0117] 步骤二:求解当前粒子的应力状态,预测当前粒子下一时刻位置。
[0118] 步骤三:遍历邻近粒子,进行碰撞检测,迭代粒子位置直至没有碰撞。
[0119] 步骤四:基于涡约束更新旋转力。
[0120] 步骤五:更新当前粒子位置、速度、旋度的值,并渲染输出。
[0121] 本发明提出的新方法在碰撞检测及位置更新过程、基于涡约束更新旋转力的过程中,通过改进传统SPH方法中的碰撞检测方法,提升了计算效率;通过引入涡约束,增加旋转力的方法,避免直接矫正位置导致的额外阻尼,并产生真实、持久的涡。这两个步骤都是为了提高流体变化波动较大时其变化率的稳定性,从而更加准确地模拟出湍流场景。
[0122] 实现对比效果如下。基础场景如图8所示,从左至右,从上至下,描述了5000个粒子在溃坝场景中,从起始静止、垂直下落、触底反弹、侧向倾斜、触壁、触壁反弹、震荡、震荡减弱的过程。说明本模型是传统SPH的延伸,能够描述基础流体场景。在溃坝场景中加入光照,并输出至RealFlow渲染,得到渲染图如图9所示。
[0123] 池注入水的涡效果如图10所示,从左至右,从上至下分别描述了向平静的水面注入流体、流体触壁反向凝聚、流体自旋形成涡、停止注入后粒子震荡减弱的过程。为方便区分,流体粒子的颜色是渐变产生的。
[0124] 图11为注入过程中,流体速度图、流体压力图。能够看到粒子的初始速度最大,随着涡的形成,涡中心的速度最慢,这符合一般规律;涡部分的粒子压力与周围粒子相同,但边界处粒子压力明显增大,这也符合一般规律。为场景加入光源,可以明显看到层次关系及形成的涡形,渲染后生成涡如图12所示。
[0125] 图13(a)为表面涡约束系数为1.0的激荡流体,图13(b)为在同一场景下涡约束系数为1.5的流体。可以观察到该场景中飞溅粒子运动符合湍流规律,并未脱离流场。根据粒子高度进行调色,使高于静止水面高度的流体粒子颜色更浅,并加入自阴影,表现流体运动的层次感。截取同一,可以发现图13(a)和(b)的涡传播的距离相当,但是改进后的模拟结果涡停留的时间更长,痕迹更不容易消散。说明该方法可以有效提升涡模拟的稳定性和真实感。
[0126] 可以看出,本发明模拟的湍流非常真实。
[0127] 下面,通过实验数据对比改进后的湍流模型与传统不可压缩SPH方法的模拟性能。对于含有5000个粒子的溃坝模拟实验,在基于NVIDIA CUDA的平台上进行了9次独立实验,并记录了传统算法和本发明算法的帧率,如表1所示。
[0128] 表1传统算法和本发明算法基于CUDA的帧率测试数据
[0129]
[0130] 图14是基于CUDA平台的实验数据绘制出的,可以看出两种算法的帧率都可以保持在300fps以上,超过了60fps的实时性标准。因此在NVIDIA CUDA GeForce 1060 6GB上运行时,尽管由于额外引入了涡约束算法,使得本发明算法的帧率略低于传统算法的帧率,但两者模拟的实时性并没有本质差别。
[0131] 综上所述,本发明的湍流模型在效果上满足了真实场景模拟的需要,且在CUDA计算平台上与传统没有考虑湍流细节的算法效率相当。实验结果表明,本发明提出的基于SPH的真实感湍流模拟方法,在湍流场景下,稳定性和真实感均优于改进前的标准不可压缩SPH方法,且仍能够保证实时性。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈