【技术实现步骤摘要】
三维流体物理动画引擎的实现方法及装置
本专利技术涉及基于物理学的计算机动画领域,尤其涉及一种三维流体物理动画引擎的实现方法及装置。
技术介绍
SPH(SmoothedParticleHydrodynamics,光滑粒子动力学)方法是一种典型的拉格朗日方法,在模拟流体时它是将连续的流体用相互作用的质点组描述,各个质点上承载各种物理量,包括质量、速度、密度等,通过求解质点组的动力学偏微分方程组和跟踪每个质点的运动,求得整个系统的力学行为。SPH方法使用核函数对密度、压力、粘力项进行离散化,得到Navier-Stokes(纳维叶-斯托克斯)方程组的离散化计算形式,从而在每步迭代过程近似解出各个物理量,模拟流体运动。SPH方法是由Lucy、Monaghan及Gingold等人于1977年提出用来解决天体物理学中的行星运动问题,后来被引入到计算流体力学领域。SPH方法模拟流体具有自适应性特性。SPH方法的这种自适应性是通过在每个时间步长计算其周围的其他粒子分布近似地获得的。由于SPH方法的这种特性,SPH方法不受粒子分布的影响。因此,SPH方法能够很好的处理具有剧烈形变问题。这是SPH方法最引起人们感兴趣的特性。另外SPH方法还克服了高维拉氏方法中网格缠绕的问题和随着维数、网格数增加其复杂度急剧上升的问题。专利技术人在进行专利技术创造的过程中发现,现有技术中,SPH方法模拟流体的计算量较大,运行速度较慢,工作效率较低,因此,如何提高三维流体物理动画的运行速度及工作效率成为现今的研究重点。
技术实现思路
本专利技术的目的是提供一种三维流体物理动画引擎的实现方法及装置,提高 ...
【技术保护点】
三维流体物理动画引擎的实现方法,其特征在于,该方法包括:利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态;利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度;根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。
【技术特征摘要】
1.三维流体物理动画引擎的实现方法,其特征在于,该方法包括:利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态;利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度;根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面;其中,所述利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态包括:对流体中每一粒子进行三维空间上的哈希操作,实现当前粒子位置到存储地址的映射,并查到找到预设的核函数半径内所述当前粒子的所有邻居粒子;将所述核函数半径内所述当前粒子的所有邻居粒子的状态带入至Navier-Stokes方程组离散对称形式中,并使用多项式函数作为核函数,计算所述当前粒子的密度、压力及粘力,获得所述当前粒子的加速度;使用蛙跳式更新方法计算所述当前粒子的速度和位置状态;其中,搜索所述每一粒子的邻居粒子包括:哈希映射处理:对流体中的粒子i的位置Pi使用空间哈希操作,得到三维坐标Ai(Ai·x,Ai·y,Ai·z),其计算公式为:其中,2h为该流体所处容器的分段长度;根据所述三维地址坐标Ai(Ai·x,Ai·y,Ai·z),计算一维存储偏移a'i,其计算公式为:a'i=Ai·x+Ai·y·Dx+Ai·z·Dx·Dy;其中,Dx,Dy分别表示x,y方向上的最大单元格的数量;邻居粒子数目查询:计算所述粒子i所处单元格的三维坐标根据所述粒子i所处单元格中所维护的粒子链表查找该单元格内的粒子,并判断该单元格内的粒子与所述粒子i之间的距离是否小于h,若是,则为所述粒子i的邻居粒子;压缩存储空间:构建一连续的数组M存放所有粒子的邻居粒子,其构建方法为:并行遍历每个粒子,获得每个粒子的邻居粒子个数,存入数组A;计算所述数组A的前缀和,存入数组B;并行遍历所有粒子,将每一粒子的每个邻居粒子按数组B中所述每一粒子位置处的元素作为访问M数组的下标,将邻居粒子的id存入M数组中;邻居粒子搜索:通过所述数组M,完成每一粒子的邻居粒子的搜索;在进行复杂边界查找算法时,静态的容器边界是不动的,故相对邻居粒子查找过程,省略了哈希映射过程,所述哈希映射过程在使用该复杂边界查找算法之前的预处理中进行,所述预处理包括:将所述容器的边界模型化为点和法向表示的理想平面;对所述理想平面进行离散采样,再进行哈希映射,以确保所述理想平面经过单元格区域。2.根据权利要求1所述的方法,其特征在于,所述碰撞机制包括:ui=ui-(1+cR)(ui·n)n,其中,ui为粒子i的速度,n为平面法向量,cR为动量损失系数;通过调节动量损失系数来控制粒子与边界碰撞强度。3.根据权利要求1所述的方法,其特征在于,所述根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构包括:根据所述流体中的粒子搜索局部SPH粒子,并根据所述局部SPH粒子的位置计算所述流体中粒子分布的各向异性和大小;将所述流体中粒子分布的各向异性和大小作为核函数系数计算每一粒子局部密度场分布,并叠加所有粒子密度场,获得全局密度场分布,再使用移动立方体MarchingCube算法抽取等值面,获得流体表面;其中,在使用MarchingCube算法抽取等值面之前还包括:匹配立方体有效性扫描的步骤,且包括:标记,扫描全局密度场中的所用体素,得到体素的标记数组T[k],0≤k≤M-1,M为密度场体素个数;建立映射关系,对所述数组T[k]的前缀和进行计算获得数组T’[k],则数组T[k]中被标记的总个数为B=T’[M-1]+T[M-1];建立长度为B的数组V[j],其中,0≤j≤B-1,且V[T’[i]]=k;所述基于屏幕空间的表面重构算法对流体表面重构包括:将所述流体中的粒子替换为球体;利用计算机图形学中的仿射变换原理,在图像空间下计算表面像素的深度与法向;再对计算得到的所述表面像素的深度与法向进行低通滤波。4.根据权利要求1或3所述的方法,其特征在于,在获得所述流体表面之后还包括:光学效应计算;所述光学效应包括:光照、折射与反射、光线穿透的厚度、焦散和阴影;其中,折射与反射系数的计算公式为:r'=fb+fs·(1.0+I·G)fp;r=min(1.0,r');s=1.0-r;其中,I为入射光线单位矢量,G为顶点处的法线,fb、fs与fp表示与流体介质相关的多项式系数,r为反射系数,s为折射系数;计算所述光线穿透的厚度之前计算所述流体的厚度,其计算公式为:Ii=c0ρi;其中,Txy表示屏幕空间下x,y位置的流体厚度,Mmvp表示模视投影变换矩阵,ρi表示粒子i的密度,c0为常系数,Ii为粒子i的亮度;焦散效应的计算包括:基于MarchingCubes流体表面重构算法及基于屏幕空间的表面重构算法的焦散效应计算,具体的:所述基于MarchingCubes流体表面重构算法的焦散效应计算包括:计算焦散效应光子的位置P'、焦散效应的影响范围Sb及焦散效应强度Cb;所述焦散效应光子的位置P'的计算公式为:其中,P表示入射光线I与流体表面的交点,Ref表示入射光线I射入所述流体后发生折射后的光线,Ng表示所述焦散效应光子的位置P'所处平面的法向量,disPtoNg是P到由点Pg和法向Ng构成平面的距离,Ref’为折射光线的方向;disPtoNg=(P-Pg)·Ng,Pg为所述焦散效应光子的位置P'所处平面上的点,焦散效应的影响范围Sb的计算公式为:Sb=c1·Sm;其中,c1为比例系数,Sm为MarchingCubes三角形面片面积或像素强度;焦散效应强度Cb的计算公式为:其中,c2为比例系数,c3为指数系数,N为入射光线I与流体表面交点P所处平面的法向量,且N·I>0;所述基于屏幕空间的表面重构算法的焦散效应计算包括:在光照空间下绘制粒子球,获得光照表面;恢复所述光照表面在世界坐标系下的位置;在视点空间下计算焦散效应光子的位置;其中,坐标系变换过程的公式为:v’表示投影后的归一化视点坐标,v表示执行坐标系变换前的世界坐标,Ml与Pl分别表示模式矩阵和投影矩阵。5.三维流体物理动画引擎的实现装置,其特征在于,该装置包括:并行处理单元,用于利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态;碰撞强度控制单元,用于利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。