三维流体物理动画引擎的实现方法及装置制造方法及图纸

技术编号:9739021 阅读:83 留言:0更新日期:2014-03-06 19:13
本发明专利技术公开了一种三维流体物理动画引擎的实现方法及装置,其中,该方法包括:利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态;利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度;根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。通过采用本发明专利技术公开的方法及装置提高了运行速度及工作效率。

【技术实现步骤摘要】
三维流体物理动画引擎的实现方法及装置
本专利技术涉及基于物理学的计算机动画领域,尤其涉及一种三维流体物理动画引擎的实现方法及装置。
技术介绍
SPH(SmoothedParticleHydrodynamics,光滑粒子动力学)方法是一种典型的拉格朗日方法,在模拟流体时它是将连续的流体用相互作用的质点组描述,各个质点上承载各种物理量,包括质量、速度、密度等,通过求解质点组的动力学偏微分方程组和跟踪每个质点的运动,求得整个系统的力学行为。SPH方法使用核函数对密度、压力、粘力项进行离散化,得到Navier-Stokes(纳维叶-斯托克斯)方程组的离散化计算形式,从而在每步迭代过程近似解出各个物理量,模拟流体运动。SPH方法是由Lucy、Monaghan及Gingold等人于1977年提出用来解决天体物理学中的行星运动问题,后来被引入到计算流体力学领域。SPH方法模拟流体具有自适应性特性。SPH方法的这种自适应性是通过在每个时间步长计算其周围的其他粒子分布近似地获得的。由于SPH方法的这种特性,SPH方法不受粒子分布的影响。因此,SPH方法能够很好的处理具有剧烈形变问题。这是SPH方法最引起人们感兴趣的特性。另外SPH方法还克服了高维拉氏方法中网格缠绕的问题和随着维数、网格数增加其复杂度急剧上升的问题。专利技术人在进行专利技术创造的过程中发现,现有技术中,SPH方法模拟流体的计算量较大,运行速度较慢,工作效率较低,因此,如何提高三维流体物理动画的运行速度及工作效率成为现今的研究重点。
技术实现思路
本专利技术的目的是提供一种三维流体物理动画引擎的实现方法及装置,提高了运行速度及工作效率。本专利技术的目的是通过以下技术方案实现的:三维流体物理动画引擎的实现方法,该方法包括:利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态;利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度;根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。设计多种流体光学效应的计算方法,力求在增强流体的可视化效果同时消耗较小的系统资源。三维流体物理动画引擎的实现装置,该装置包括:并行处理单元,用于计算流体中每一粒子的状态,并利用并行空间粒子搜索算法搜索所述每一粒子的邻居粒子;碰撞强度控制单元,用于利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度;流体表面获取单元,用于根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。由上述本专利技术提供的技术方案可以看出,通过并行化处理粒子状态更新,并对粒子的邻居粒子进行搜索,使得系统能快速、高效的进行大规模粒子的查找;通过利用复杂边界查找算法,使得系统能在大规模复杂边界的条件下流体的仿真模拟仍然能够保持较高的帧率;另外,通过针对应用场景的不同,选择不同的表面重构算法,能够准确计算流体密度场和重构流体表面,并能够快速实时重构表面。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。图1为本专利技术实施例一提供的一种三维流体物理动画引擎的实现方法的流程图;图2为本专利技术实施例一提供的流体厚度与观察者关系的示意图;图3为本专利技术实施例一提供的焦散效应形成原理的示意图;图4为本专利技术实施例一提供的一种焦散效应的示意图;图5为本专利技术实施例二提供的一种三维流体物理动画引擎的实现装置的示意图。具体实施方式下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术的保护范围。实施例一图1为本专利技术实施例一提供的一种三维流体物理动画引擎的实现方法的流程图。如图1所示,该方法主要包括如下步骤:步骤11、利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态。由于拉格朗日方法需要利用支持域内的邻居粒子,因此,本专利技术实施例通过对邻居粒子物理量的加权平均来计算当前粒子所承载的相应物理量。本专利技术实施例中可以使用CUDA(统一计算设备架构)并行化处理粒子状态更新计算,具体的:对流体中每一粒子进行三维空间上的哈希操作,实现当前粒子位置到存储地址的映射,并查到找到预设的核函数半径内所述当前粒子的所有邻居粒子;将所述核函邻居粒子的状数半径内所述当前粒子的所有态带入至Navier-Stokes(纳维叶-斯托克斯)方程组离散对称形式中,并使用多项式函数作为核函数,计算所述当前粒子的密度、压力及粘力等物理状态,获得所述当前粒子的加速度;使用蛙跳式更新方法计算所述当前粒子的速度和位置状态。示例性的,本专利技术实施例中利用一6次多项式核函数对密度求解,其公式为:求解压力项的核函数为:粘度项求解使用核函数为:上述公式中h表示核函数的支持域半径,r表示支持域内粒子到当前粒子的距离。通常,邻居粒子搜索的计算量较大,本实施例设计了基于CUDA平台并行空间粒子搜索算法,并将所有粒子的邻居粒子连续存储,使空间粒子搜索算法所需的存储空间得以减少,并行化加速后算法使得系统能快速、高效的进行大规模领域粒子查找。该搜索算法主要包括如下几个步骤:(1)哈希映射处理:即对粒子点云数据所在的空间进行三维网格划分,然后再针对每个单元格得到所有空间上位于该单元格中的粒子,形成一个粒子链表。因此,需预先要对流体中的粒子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方向上的最大单元格的数量,即所有粒子的包围盒以2h为单位的最大分段数。其次,还要针对每个单元格维护一个粒子链表,该链表的建立方法是:并行遍历所有粒子,利用头插法将粒子插入所在的单元格粒子链表中。(2)邻居粒子数目查询:计算所述粒子i所处单元格的三维坐标根据所述粒子i所处单元格中所维护的粒子链表查找该单元格内的粒子,并判断该单元格内的粒子与所述粒子i之间的距离是否小于h,若是,则为所述粒子i的邻居粒子,则将当前的粒子的邻居粒子数加一,遍历所有邻居粒子后得到当前粒子的邻居粒子数。示例性的,所述预设的三维坐标可以包括:(3)压缩存储空间:为了提高每次迭代过程中邻居粒子查找效率,用一个连续的数组M存放所有粒子的邻居粒子,数组M的构建方法如下:并行遍历每个粒子,先取得每个粒子的邻居粒子个数(在前述步骤(2)中已经得到),存入数组A;对数组A进行并行的exclu本文档来自技高网...
三维流体物理动画引擎的实现方法及装置

【技术保护点】
三维流体物理动画引擎的实现方法,其特征在于,该方法包括:利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态;利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度;根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。

【技术特征摘要】
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.三维流体物理动画引擎的实现装置,其特征在于,该装置包括:并行处理单元,用于利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态;碰撞强度控制单元,用于利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状...

【专利技术属性】
技术研发人员:董兰芳汪锦想
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:

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

1