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

文档序号:6522558阅读:184来源:国知局
三维流体物理动画引擎的实现方法及装置制造方法
【专利摘要】本发明公开了一种三维流体物理动画引擎的实现方法及装置,其中,该方法包括:利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态;利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度;根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。通过采用本发明公开的方法及装置提高了运行速度及工作效率。
【专利说明】三维流体物理动画引擎的实现方法及装置
【技术领域】
[0001]本发明涉及基于物理学的计算机动画领域,尤其涉及一种三维流体物理动画引擎的实现方法及装置。
【背景技术】
[0002]SPH (Smoothed Particle Hydrodynamics,光滑粒子动力学)方法是一种典型的拉格朗日方法,在模拟流体时它是将连续的流体用相互作用的质点组描述,各个质点上承载各种物理量,包括质量、速度、密度等,通过求解质点组的动力学偏微分方程组和跟踪每个质点的运动,求得整个系统的力学行为。SPH方法使用核函数对密度、压力、粘力项进行离散化,得到Navier-Stokes (纳维叶一斯托克斯)方程组的离散化计算形式,从而在每步迭代过程近似解出各个物理量,模拟流体运动。SPH方法是由Lucy、Monaghan及Gingold等人于1977年提出用来解决天体物理学中的行星运动问题,后来被引入到计算流体力学领域。
[0003]SPH方法模拟流体具有自适应性特性。SPH方法的这种自适应性是通过在每个时间步长计算其周围的其他粒子分布近似地获得的。由于SPH方法的这种特性,SPH方法不受粒子分布的影响。因此,SPH方法能够很好的处理具有剧烈形变问题。这是SPH方法最弓I起人们感兴趣的特性。另外SPH方法还克服了高维拉氏方法中网格缠绕的问题和随着维数、网格数增加其复杂度急剧上升的问题。
[0004]发明人在进行发明创造的过程中发现,现有技术中,SPH方法模拟流体的计算量较大,运行速度较慢,工作效率较低,因此,如何提高三维流体物理动画的运行速度及工作效率成为现今的研究重点。

【发明内容】

[0005]本发明的目的是提供一种三维流体物理动画引擎的实现方法及装置,提高了运行速度及工作效率。
[0006]本发明的目的是通过以下技术方案实现的:
[0007]三维流体物理动画引擎的实现方法,该方法包括:
[0008]利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态;
[0009]利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度;
[0010]根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。
[0011]设计多种流体光学效应的计算方法,力求在增强流体的可视化效果同时消耗较小的系统资源。
[0012]三维流体物理动画引擎的实现装置,该装置包括:
[0013]并行处理单元,用于计算流体中每一粒子的状态,并利用并行空间粒子搜索算法搜索所述每一粒子的邻居粒子;
[0014]碰撞强度控制单元,用于利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度;
[0015]流体表面获取单元,用于根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。
[0016]由上述本发明提供的技术方案可以看出,通过并行化处理粒子状态更新,并对粒子的邻居粒子进行搜索,使得系统能快速、高效的进行大规模粒子的查找;通过利用复杂边界查找算法,使得系统能在大规模复杂边界的条件下流体的仿真模拟仍然能够保持较高的帧率;另外,通过针对应用场景的不同,选择不同的表面重构算法,能够准确计算流体密度场和重构流体表面,并能够快速实时重构表面。
【专利附图】

【附图说明】
[0017]为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0018]图1为本发明实施例一提供的一种三维流体物理动画引擎的实现方法的流程图;
[0019]图2为本发明实施例一提供的流体厚度与观察者关系的示意图;
[0020]图3为本发明实施例一提供的焦散效应形成原理的示意图;
[0021]图4为本发明实施例一提供的一种焦散效应的示意图;
[0022]图5为本发明实施例二提供的一种三维流体物理动画引擎的实现装置的示意图。
【具体实施方式】
[0023]下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
[0024]实施例一
[0025]图1为本发明实施例一提供的一种三维流体物理动画引擎的实现方法的流程图。如图1所示,该方法主要包括如下步骤:
[0026]步骤11、利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态。
[0027]由于拉格朗日方法需要利用支持域内的邻居粒子,因此,本发明实施例通过对邻居粒子物理量的加权平均来计算当前粒子所承载的相应物理量。
[0028]本发明实施例中可以使用CUDA (统一计算设备架构)并行化处理粒子状态更新计算,具体的:对流体中每一粒子进行三维空间上的哈希操作,实现当前粒子位置到存储地址的映射,并查到找到预设的核函数半径内所述当前粒子的所有邻居粒子;将所述核函邻居粒子的状数半径内所述当前粒子的所有态带入至Navier-Stokes (纳维叶一斯托克斯)方程组离散对称形式中,并使用多项式函数作为核函数,计算所述当前粒子的密度、压力及粘力等物理状态,获得所述当前粒子的加速度;使用蛙跳式更新方法计算所述当前粒子的速度和位置状态。
[0029]示例性的,本发明实施例中利用一 6次多项式核函数对密度求解,其公式为:
[0030]
【权利要求】
1.三维流体物理动画引擎的实现方法,其特征在于,该方法包括: 利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态; 利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度; 根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。
2.根据权利要求1所述的方法,其特征在于,所述利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态包括: 对流体中每一粒子进行三维空间上的哈希操作,实现当前粒子位置到存储地址的映射,并查到找到预设的核函数半径内所述当前粒子的所有邻居粒子;将所述核函邻居粒子的状数半径内所述当前粒子的所有态带入至Navier-Stokes方程组离散对称形式中,并使用多项式函数作为核函数,计算所述当前粒子的密度、压力及粘力,获得所述当前粒子的加速度;使用蛙跳式更新方法计算所述当前粒子的速度和位置状态; 其中,搜索所述每一粒子的邻居粒子包括: 哈希映射处理:对流体中的粒子i的位置Pi使用空间哈希操作,得到三维坐标Ai (Ai.χ, Ai.y, Ai.z),其计算公式为:
3.根据权利要求1所述的方法,其特征在于, 计算所述流体所处容器的边界之前,进行预处理,具体的包括:将所述容器的边界模型化为点和法向表示的理想平面;对所述理想平面进行离散采样,再进行哈希映射,以确保所述理想平面经过单元格区域; 所述碰撞机制包括:Ui = U1-(l+cE) (Ui.η)η,其中,ui为粒子i的速度,η为平面法向量,cE为动量损失系数;通过调节动量损失系数来控制粒子与边界碰撞强度。
4.根据权利要求1所述的方法,其特征在于, 所述根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构包括:根据所述流体中的粒子搜索局部SPH粒子,并根据所述局部SPH粒子的位置计算所述流体中粒子分布的各向异性和大小;将所述流体中粒子分布的各向异性和大小作为核函数系数计算每一粒子局部密度场分布,并叠加所有粒子密度场,获得全局密度场分布,再使用移动立方体Marching Cube算法抽取等值面,获得流体表面; 其中,在使用Marching Cube算法抽取等值面之前还包括:匹配立方体有效性扫描的步骤,且包括:标记,扫描全局密度场中的所用体素,得到体素的标记数组T[k],0<k<M-l,M为密度场体素个数;建立映射关系,对所述数组T[k]的前缀和进行计算获得数组T’ [k],则数组T[k]中被标记的总个数为B=T’ [M-1]+T[M-1];建立长度为B的数组V[j],其中,O ≤ j ≤ N-1,且 V[T’ [i]]=k ; 所述基于屏幕空间的表面重构算法对流体表面重构包括:将所述流体中的粒子替换为球体;利用计算机图形学中的仿射变换原理,在图像空间下计算表面像素的深度与法向;再对计算得到的所述表面像素的深度与法向进行低通滤波。
5.根据权利要求1或4所述的方法,其特征在于,在获得所述流体表面之后还包括:光学效应计算;所述光学效应包括:包括光照、折射与反射、光线穿透的厚度、焦散和阴影; 其中,折射与反射系数的计算公式为: r = fb+fs.(1.0+1.G)fp ; r = min (1.0, r'); s = l.0-r ; 其中,I为入射光线单位矢量,G为顶点处的法线,fb、fs与fp表示与流体介质相关的多项式系数,r为反射系数,s为折射系数; 计算所述光线穿透的厚度之前计算所述流体的厚度,其计算公式为:
6.三维流体物理动画引擎的实现装置,其特征在于,该装置包括: 并行处理单元,用于利用并行空间粒子搜索算法搜索流体中每一粒子的邻居粒子,并计算所述每一粒子的状态; 碰撞强度控制单元,用于利用复杂边界查找算法计算流体所处容器的边界,根据所述每一粒子的状态并基于碰撞机制计算与调节所述每一粒子与边界的碰撞强度; 流体表面获取单元,用于根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构,或者基于屏幕空间的表面重构算法对流体表面重构,获得流体表面。
7.根据权利要求6所述的装置,其特征在于,所述并行处理单元包括: 粒子状态计算单元,用于对流体中每一粒子进行三维空间上的哈希操作,实现当前粒子位置到存储地址的映射,并查到找到预设的核函数半径内所述当前粒子的所有邻居粒子;将所述核函邻居粒子的状数半径内所述当前粒子的所有态带入至Navier-Stokes方程组离散对称形式中,并使用多项式函数作为核函数,计算所述当前粒子的密度、压力及粘力,获得所述当前粒子的加速度;使用蛙跳式更新方法计算所述当前粒子的速度和位置状态; 搜索单元,用于搜索所述每一粒子的邻居粒子,且该单元包括: 哈希映射处理单元,用于对流体中的粒子i的位置Pi使用空间哈希操作,得到三维坐标Ai (Ai.χ, Ai.y, Ai.z),其计算公式为:
8.根据权利要求6所述的装置,其特征在于,所述碰撞强度控制单元包括: 预处理单元,用于在计算所述流体所处容器的边界之前,进行预处理,具体的包括:将所述容器的边界模型化为点和法向表示的理想平面;对所述理想平面进行离散采样,再进行哈希映射,以确保所述理想平面经过单元格区域; 所述碰撞机制包括:? = U1-(l+cE) (Ui.η)η,其中,ui为粒子i的速度,η为平面法向量,cE为动量损失系数; 通过调节动量损失系数来控制粒子与边界碰撞强度。
9.根据权利要求6所述的装置,其特征在于,所述流体表面获取单元包括: 第一流体表面重构单元,用于根据碰撞后的粒子分布情况并基于流体表面重构算法对流体表面重构包括:根据所述流体中的粒子搜索局部SPH粒子,并根据所述局部SPH粒子的位置计算所述流体中粒子分布的各向异性和大小;将所述流体中粒子分布的各向异性和大小作为核函数系数计算每一粒子局部密度场分布,并叠加所有粒子密度场,获得全局密度场分布,再使用移动立方体Marching Cube算法抽取等值面,获得流体表面; 且所述第一流体表面重构单元还包括:匹配立方体有效性扫描单元,用于在使用Marching Cube算法抽取等值面之前进行匹配立方体有效性扫描,且该单元包括:标记单元,用于扫描全局密度场中的所用体素,得到体素的标记数组T [k],O≤k≤M-1,M为密度场体素个数;映射关系建立单元,用于对所述数组T[k]的前缀和进行计算获得数组T’ [k],则数组T[k]中被标记的总个数为B=T’ [M-1]+T[M-1];建立长度为B的数组V[j],其中,O^ j ^ N-1,且 V[T,[i]]=k ; 第二流体表面重构单元,用于基于屏幕空间的表面重构算法对流体表面重构包括:将所述流体中的粒子替换为球体;利用计算机图形学中的仿射变换原理,在图像空间下计算表面像素的深度与法向;再对计算得到的所述表面像素的深度与法向进行低通滤波。
10.根据权利要求6或9所述的装置,其特征在于,该装置还包括:光学效应计算单元;所述光学效应包括:包括光照、折射与反射、光线穿透的厚度、焦散和阴影; 所述光学效应计算单元;还包括: 折射与反射系数计算单元,其计算公式为: r = fb+fs.(1.0+1.G)fp ; r = min (1.0, r'); s = l.0-r ;其中,I为入射光线单位矢量,G为顶点处的法线,fb、fs与fp表示与流体介质相关的多项式系数,r为反射系数,s为折射系数; 流体厚度计算单元,用于计算所述光线穿透的厚度之前计算所述流体的厚度,其计算公式为:
【文档编号】G06T13/20GK103617593SQ201310654810
【公开日】2014年3月5日 申请日期:2013年12月5日 优先权日:2013年12月5日
【发明者】董兰芳, 汪锦想 申请人:中国科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1