一种3d流体的仿真方法及系统的制作方法

文档序号:6376101阅读:304来源:国知局
专利名称:一种3d流体的仿真方法及系统的制作方法
技术领域
本发明涉及一种3D流体的仿真方法及系统,属于图形仿真技术领域。
背景技术
SPH(Smoothed Particle Hydrodynamics,光滑粒子流体动力学)是现有技术中一种常用的流体仿真技术,其基本思想是将连续的流体(或固体)用相互作用的质点组来描述,各个物质点上承载各种物理量,包括质量、速度等,通过求解质点组的动力学方程和跟踪每个质点的运动轨道,求得整个系统的力学行为。现有的SPH 仿真技术主要包括 Sphysics、Volume Rendering of SPH Data、 0penF0AM>Fluids v2. 0 和 OpenTissue OpenTissue,其中的 Sphysics 是一个开源的 SPH 仿真平台,但由于其用Fortran语言编写且偏重于物理过程,导致计算速度相对较慢,且渲染效果较差;Volume Rendering of SPH Data是Stefan Auer模拟SPH流体使用的原型实例,但是基于体绘制的渲染,运算量和存储量巨大;OpenFOAM是一种基于网格的开源流体仿真系统,这与SPH的无网格理论相悖,网格方法计算准确但速度较慢,存储量大;Fluids v2. 0是一个快速SPH计算系统,但该系统只给出了 SPH的计算过程,缺乏有效的表面重绘算法和其它光影特效,绘制效果单一 ;0penTissue OpenTissue仿真流体的几何边界较为固定,各个模块灵活性较差,不提供表面重建的模块,也没有光影特效。

发明内容
本发明为解决现有的SPH仿真技术中存在的必须依赖网格、计算速度较慢、渲染效果较差、运算量和存储量较大的问题,进而提供了一种3D流体的仿真方法及系统。为此,本发明提供了如下的技术方案一种3D流体的仿真方法,包括通过空间Hash方法搜索每个流体粒子的邻居粒子,并通过核函数解出Navier-Stokes状态方程,获得流体粒子的粒子位置和粒子密度,并输出;通过OpenGL颜色混合模式和Billboard方法并根据每个流体粒子的粒子位置,计算出每个流体粒子的象素密度,再通过Cuda将所述流体粒子的象素浓度进行平滑处理后输出;将所述流体粒子的密度和位置转化成一个空间密度场,通过设定一个阈值将空间密度场转换成Marching Cube数据构造,形成表面数据并得出表面的法向量;将所述表面数据和表面法向量处理成面中心和法向量格式,根据Snell原理,计算出光线的位置,在所述光线的位置通过光子效应绘制屏幕坐标;根据所述象素流体粒子的象素浓度、屏幕坐标通过变换矩阵转换到世界坐标系下,并根据转换到世界坐标系下的所述象素流体粒子的象素浓度、屏幕坐标进行贴图和颜色合成,最后将合成的颜色输出。 一种3D流体的仿真系统,包括
粒子状态计算模块,用于通过空间Hash方法搜索每个流体粒子的邻居粒子,并通过核函数解出Navier-Stokes状态方程,获得流体粒子的粒子位置和粒子密度,并输出;粒子浓度计算模块,用于通过OpenGL颜色混合模式和Billboard方法并根据每个流体粒子的粒子位置,计算出每个流体粒子的象素浓度,再通过Cuda将所述流体粒子的象素浓度进行平滑处理后输出;Marching Cube表面重建模块,用于将所述流体粒子的密度和位置转化成一个空间密度场,通过设定一个阈值将 空间密度场转换成Marching Cube数据构造,形成表面数据并得出表面的法向量;Caustics效应计算模块,用于将所述表面数据和表面法向量处理成面中心和法向量格式,根据Snell原理,计算出光线的位置,在所述光线的位置通过光子效应绘制屏幕坐标;CGShader着色模块,用于根据所述象素流体粒子的象素浓度、屏幕坐标通过变换矩阵转换到世界坐标系下,并根据转换到世界坐标系下的所述象素流体粒子的象素浓度、屏幕坐标进行贴图和颜色合成,最后将合成的颜色输出。本发明实施方式提供的技术方案通过Navier-Stokes状态方程获得流体粒子的粒子位置和粒子密度,无需依赖网格且计算速度较快、计算量和存储空间较小;借助于Cuda的GPU平台,进一步提升了运算速度;使用OpenGL混合和Billboard技术,使OpenGL可以自动生成浓度信息,避免了不必要的计算,同时加快了计算速度;在Marching Cube算法的基础上,利用光线的折射原理,计算面片的折射位置,通过OpenGL进行混合,能够获得较好的渲染效果。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I是本发明的具体实施方式
提供的3D流体的仿真方法的流程示意图;图2是本发明的具体实施方式
提供的核函数一维曲线图;图3是本发明的具体实施方式
提供的采用蛙跳式更新的粒子的运动状态示意图;图4是本发明的具体实施方式
提供的空间Hash方法查找邻居粒子的示意图;图5是本发明的具体实施方式
提供的采用固体碰撞模拟固壁反弹作用的示意图;图6是本发明的具体实施方式
提供的Caustics效应计算示意图。图7是本发明的具体实施方式
提供的3D流体的仿真系统的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
具体实施方式
提供的是一种基于SPH的拉格朗日方法,该方法是一种流体仿真引擎,通过跟踪粒子状态,从而模拟整个流体状态。该流体仿真引擎的设计是基于OpenGL图形接口之上,借助于NVIDIA GPU的Cuda的强大并行计算平台,从而实现3D流体的仿真过程和渲染过程。为了解决相应的技术问题,本发明的具体实施方式
提供了一种3D流体的仿真方法,如图I所示,该方法具体可以包括步骤11,通过空间Hash方法搜索每个流体粒子的邻居粒子,并通过核函数解出Navier-Stokes状态方程,获得流体粒子的粒子位置和粒子密度,并输出。具体的,Navier-Stokes方程的代数形式可以表示成
权利要求
1.一种3D流体的仿真方法,其特征在于,包括 通过空间Hash方法搜索每个流体粒子的邻居粒子,并通过核函数解出Navier-Stokes状态方程,获得流体粒子的粒子位置和粒子密度,并输出; 通过OpenGL颜色混合模式和Billboard方法并根据每个流体粒子的粒子位置,计算出每个流体粒子的象素浓度,再通过Cuda将所述流体粒子的象素浓度进行平滑处理后输出;将所述流体粒子的密度和位置转化成一个空间密度场,通过设定一个阈值将空间密度场转换成Marching Cube数据构造,形成表面数据并得出表面的法向量; 将所述表面数据和表面法向量处理成面中心和法向量格式,根据Snell原理,计算出光线的位置,在所述光线的位置通过光子效应绘制屏幕坐标; 根据所述象素流体粒子的象素浓度、屏幕坐标通过变换矩阵转换到世界坐标系下,并根据变换矩阵转换到世界坐标系下的所述象素流体粒子的象素浓度、屏幕坐标进行贴图和颜色合成,最后将合成的颜色输出。
2.根据权利要求I所述的3D流体的仿真方法,其特征在于,在通过核函数解出Navier-Stokes状态方程后还包括对所述流体粒子施加边界作用。
3.—种3D流体的仿真系统,其特征在于,包括 粒子状态计算模块,用于通过空间Hash方法搜索每个流体粒子的邻居粒子,并通过核函数解出Navier-Stokes状态方程,获得流体粒子的粒子位置和粒子密度,并输出; 粒子浓度计算模块,用于通过OpenGL颜色混合模式和Billboard方法并根据每个流体粒子的粒子位置,计算出每个流体粒子的象素浓度,再通过Cuda将所述流体粒子的象素浓度进行平滑处理后输出; Marching Cube表面重建模块,用于将所述流体粒子的密度和位置转化成一个空间密度场,通过设定一个阈值将空间密度场转换成Marching Cube数据构造,形成表面数据并得出表面的法向量;Caustics效应计算模块,用于将所述表面数据和表面法向量处理成面中心和法向量格式,根据Snell原理,计算出光线的位置,在所述光线的位置通过光子效应绘制屏幕坐标;CGShader着色模块,用于根据所述象素流体粒子的象素浓度、屏幕坐标通过变换矩阵转换到世界坐标系下,并根据变换矩阵转换到世界坐标系下的所述象素流体粒子的象素浓度、屏幕坐标进行贴图和颜色合成,最后将合成的颜色输出。
4.根据权利要求3所述的3D流体的仿真系统,其特征在于,在粒子状态计算模块中包括 边界作用子模块,用于在通过核函数解出Navier-Stokes状态方程后,对所述流体粒子施加边界作用。
全文摘要
本发明提供了一种3D流体的仿真方法及系统,相应的方法包括搜索每个流体粒子的邻居粒子,并通过核函数解出Navier-Stokes状态方程,获得流体粒子的粒子位置和粒子密度;计算每个流体粒子的象素浓度,再将流体粒子的象素浓度进行平滑处理后输出;将流体粒子的密度和位置转化成一个空间密度场,形成表面数据并得出表面的法向量;将表面数据和表面法向量处理成面中心和法向量格式,在光线的位置通过光子效应绘制屏幕坐标;根据象素流体粒子的象素浓度、屏幕坐标通过变换矩阵转换到世界坐标系下,并进行贴图和颜色合成,最后将合成的颜色输出。本发明无需依赖网格且计算速度较快、计算量和存储空间较小,能够获得较好的渲染效果。
文档编号G06F17/50GK102831275SQ20121031952
公开日2012年12月19日 申请日期2012年8月31日 优先权日2012年8月31日
发明者董兰芳, 汪锦想 申请人:中国科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1