CN103679802A - 基于屏幕空间的sph流体表面实时绘制方法 - Google Patents
基于屏幕空间的sph流体表面实时绘制方法 Download PDFInfo
- Publication number
- CN103679802A CN103679802A CN201310636586.6A CN201310636586A CN103679802A CN 103679802 A CN103679802 A CN 103679802A CN 201310636586 A CN201310636586 A CN 201310636586A CN 103679802 A CN103679802 A CN 103679802A
- Authority
- CN
- China
- Prior art keywords
- fluid
- flow surface
- sph
- real
- depth
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明提供一种基于屏幕空间的SPH流体表面实时绘制方法,在利用SPH方法仿真流体的动力学行为的基础上,以流体表面实时跟踪与逼真绘制为目标,围绕基于屏幕空间的加速计算方法展开研究,首先从视点位置生成三维空间中流体的深度图,并对其进行平滑滤波来视点相关地动态提取流体表面,然后结合环境映射、流体反射、折射等光学效果,并通过模拟流体与虚拟场景中其他三维实体的交互作用,基于GPU实现了柔体和流体交互场景的实时逼真绘制。本发明完全基于GPU来进行各项计算和渲染,所有的操作均以并行的方式进行,具有实时性好,物理真实感强的特点。
Description
技术领域
本发明涉及一种基于屏幕空间的SPH流体表面实时绘制方法。
背景技术
近几十年来,针对流水、烟雾等流动物体的仿真研究发展迅速。该领域的研究涉及流体动力学、数值计算、微积分以及计算机图形学等多个学术方向,在游戏娱乐、科学计算、仿真训练等方面具有很高的实用价值,也一直都是一个非常具有挑战性的研究热点。近几年来,随着多核CPU、GPU并行处理技术的普及,基于流体的建模与仿真技术得到了迅猛发展,成为计算机图形学领域新的研究热点,而借助于GPU并行加速计算,在特定范围和精度下的流体模拟已经基本可以满足实时交互的需要。
基于物理流体模拟技术需要对三维空间中的流体力学方程进行求解,因而具有非常高的计算复杂度,目前主要有基于粒子的拉格朗日方法和基于网格的欧拉方法。近年来,无网格方法逐渐成为解决工程科学问题的一个有效工具。与传统的基于网格的数值方法,如有限元、有限差分和有限容积等不同,无网格粒子方法使用离散的粒子对积分形式或微分形式的控制方程进行离散和近似。这些粒子可以任意分布,而并非由某种网格联系在一起。这样就避免了病态网格引起的不稳定问题,而且可以方便的处理断裂等拓扑改变问题。
SPH方法使用一组粒子来离散所模拟的连续介质(流体或固体),每个粒子代表宏观连续领域的介质团,伴随介质的运动以当地速度移动,是一种典型的拉格朗日方法。SPH方法中粒子不仅用于估算场变量与近似控制方程,也代表介质***,具有诸如密度、压力、速度、内能等宏观物理量。
SPH流体仿真方法使用大量的离散粒子来仿真流体的物理行为,但缺少显式的可用于视觉表现的流体表面几何信息,因此高效的动态流体表面提取算法已成为制约流体仿真效果实时逼真呈现的主要瓶颈之一。
为了解决上述问题,本发明提出了一种基于屏幕空间的SPH流体表面实时绘制方法,以流体表面实时跟踪与逼真绘制为目标,围绕基于屏幕空间的加速计算方法展开研究,首先从视点位置生成三维空间中流体的深度图,并对其进行平滑滤波来视点相关地动态提取流体表面,然后结合环境映射、流体反射、折射等光学效果,并通过模拟流体与虚拟场景中其他三维实体的交互作用,基于GPU实现了柔体和流体交互场景的实时逼真绘制。
发明内容
本发明解决的技术问题是:克服了现有的流体表面提取和绘制方法的效率问题,提供了一种基于屏幕空间的SPH流体表面实时绘制方法。并通过使用基于GPU的数据结构和算法,满足了对流体运动过程进行实时模拟渲染的需要。
本发明采用的技术方案为:一种基于屏幕空间的SPH流体表面实时绘制方法,包括以下三个步骤:
步骤(1)、流体的物理仿真:通过由SPH方法来对流体进行物理仿真,利用GPU动态地并行计算所有光滑流体粒子的位置、密度信息,作为整个表面绘制方法的输入数据;
步骤(2)、流体的表面提取:从视点位置出发,将步骤(1)计算得到的每一个粒子按照位置和大小绘制成粒子球,截取当前视点下的深度信息和厚度,得到表面深度图和厚度图,然后采用双边滤波器对表面深度进行平滑处理,以此作为近似的流体表面;
步骤(3)、流体的实时逼真绘制:步骤(2)中计算得到的平滑深度图作为近似流体表面,基于在步骤(2)中动态生成的厚度图,根据比尔-朗伯定律来计算流体的透明度;同时,在基于深度图进行流体表面法线计算的基础上,通过结合冯氏光照模型和延迟着色技术,来实时模拟流体表面的反射、折射效果;
以上所有操作和计算都在GPU上进行,具有高度并行性,而且避免了由显存和内存的数据交换带来的时间消耗,具有很高的实时性。
进一步的,步骤(1)中所述的流体的物理仿真方法,该方法使用一组离散粒子表示流体,利用平滑核函数近似粒子的物理参数,将纳维-斯托克斯(Navier-Stokes,N-S)方程转化为只与时间相关的离散形式的微分方程,再利用积分方法求解。
进一步的,步骤(2)中所述的流体表面提取方法,该方法将流体粒子以小球的方式进行绘制,通过截取到的深度图来近似的代替流体表面。
进一步的,步骤(3)中所述的通过结合冯氏光照模型、比尔-朗伯定律和延迟着色技术,来实时模拟流体表面的光学效果。
进一步的,步骤(1)、(2)、(3)中所述所有操作和计算都在GPU上进行,除了预处理阶段,没有显存和内存的数据交换,所有操作和计算都是利用CUDA和OpenGL技术并行处理。
本发明的原理在于:
本发明提供一种基于屏幕空间的SPH流体表面实时绘制方法,在利用SPH方法仿真流体的动力学行为的基础上,以流体表面实时跟踪与逼真绘制为目标,围绕基于屏幕空间的加速计算方法展开研究,首先从视点位置生成三维空间中流体的深度图,并对其进行平滑滤波来视点相关地动态提取流体表面,然后结合环境映射、流体反射、折射等光学效果,并通过模拟流体与虚拟场景中其他三维实体的交互作用,基于GPU实现了柔体和流体交互场景的实时逼真绘制。本发明的内容主要包括了以下三个方面:
(1)流体的物理仿真,光滑粒子流体动力学(Smoothed Particle Hydrodynamics,SPH)方法是一种典型的无网格方法,在流体仿真中,该方法使用一组离散粒子表示流体,利用平滑核函数近似粒子的物理参数,将纳维-斯托克斯(Navier-Stokes,N-S)方程转化为只与时间相关的离散形式的微分方程,再利用积分方法求解。本发明深入研究了SPH方法的原理,并对整个物理仿真过程进行了基于GPU的实现,以此作为流体表面提取与逼真绘制的基础。通过SPH方法模拟流体运动,利用GPU对每一个粒子的运动状态进行并行计算,并提出了一种高效的数据组织方式,所有的数据都存储于显存中,方便高效地进行数据的访问和存储。
(2)流体的表面提取,SPH流体仿真方法使用大量的离散粒子来仿真流体的物理行为,但缺少显式的可用于视觉表现的流体表面几何信息,因此高效的动态流体表面提取算法已成为制约流体仿真效果实时逼真呈现的主要瓶颈之一。本发明研究并实现了基于屏幕空间的流体表面提取方法,其核心思想是:将粒子作为小球进行绘制,并在屏幕空间提取二维深度图和厚度图,在此基础上,通过对深度图进行平滑滤波来视点相关地近似流体表面的几何结构。该方法有效避免了在三维空间中对流体表面几何结构进行显式提取和网格化处理,因而,可将三维空间的几何拓扑计算问题转化为对二维浮点纹理图像的处理问题,并借助于GPU并行计算进一步降低了时间复杂度,为流体仿真结果的逼真展现提供了实时几何建模方面的保证。
(3)流体的实时逼真绘制,流体光学特性的模拟对其视觉效果的逼真展现具有较大影响,其中包括环境映射、反射、折射等多种光学效果。本发明基于在屏幕空间动态生成的厚度图,根据比尔-朗伯定律来计算流体的透明度;同时,在基于深度图进行流体表面法线计算的基础上,通过结合冯氏光照模型和延迟着色技术,来实时模拟流体表面的反射、折射效果。
本发明完全基于GPU来进行各项计算和渲染,所有的操作均以并行的方式进行,具有实时性好,物理真实感强的特点。
本发明与现有技术相比的优点在于:
1、本发明提出的高效数据组织方式,一方面更加便于使用GPU来进行并行计算加速,另一方面也可以避免由于内存和显存之间的数据交换带来的时间消耗。
2、效率高:本方法将流体表面提取问题由三维空间转到二维屏幕空间,平滑、变换等操作都是在二维空间进行,有效地减少了计算时间;另外,算法中深度图、厚度图的获取都可以由硬件完成,因此本方法的效率非常高。
3、平滑的流体表面:针对获取的深度图,采用图像处理中常用的平滑滤波操作,减少粒子绘制带来的失真。另外,流体表面的平滑程度方便控制,可以缓解平滑过度或不足的情况。
4、无需生成流体表面的三维网格:本方法的光照、折射等都是基于屏幕空间的流体表面,有效避免了构建流体表面三维网格带来的大量的计算和内存消耗。另外,本方法只生成当前视点下可见的流体表面,避免了额外计算;
5、视点相关的层次细节:本方法构建的深度图是在当前视点的屏幕空间中,自然具有视点相关的层次细节。
6、所有的处理、绘制和着色过程都直接在图形硬件上进行,具有很高的效率。
附图说明
图1为基于屏幕空间的SPH流体表面绘制方法流程图;
图2为粒子球与流体深度图示意图;图2(a):粒子球,图2(b):深度图;
图3为深度图的平滑处理效果图;图3(a):平滑处理前,图3(b):平滑处理后;
图4为粒子厚度计算示意图和厚度图;图4(a):粒子厚度计算示意图;图4(b):厚度图;
图5为流体表面法线的计算结果和光照的计算结果;图5(a):法线的计算结果,图5(a):光照的计算结果;
图6为流体的环境反射和菲涅尔反射结果;图6(a):环境反射计算结果,图7(b):菲涅尔反射计算结果,图6(c):两者混合;
图7为流体对环境的反射效果图;
图8为流体对背景的折射效果图;图8(a):折射的计算结果,图8(b):对碗的折射;
图9为流体的最终绘制结果。
具体实施方式
图1给出了基于屏幕空间的SPH流体表面实时绘制方法的总体处理流程,下面结合其他附图及具体实施方式进一步说明本发明。
本发明提供一种基于屏幕空间的SPH流体表面实时绘制方法,主要步骤介绍如下:
1.流体的物理仿真方法
本发明采用SPH方法来模拟流体的运动,SPH方法使用一组粒子来离散所模拟的连续介质(流体或固体),每个粒子代表宏观连续领域的介质团,伴随介质的运动以当地速度移动,是一种典型的拉格朗日方法。SPH方法中粒子不仅用于估算场变量与近似控制方程,也代表介质***,具有诸如密度、压力、速度、内能等宏观物理量。
本发明的重点在于流体表面的提取和渲染,所以不再对SPH方法进行详述,可以在网络上找到许多开源的SPH算法的GPU实现,本发明采用的是其中的一个CUDA实现。
通过SPH进行物理仿真得到的粒子位置等数据都是保存在显存中,为了与OpenGL进行数据共享,本发明采用了CUDA与OpenGL的一种互操作实现,即是将OpenGL的缓冲区句柄映射到CUDA的指针,就可以通过CUDA的核函数直接对OpenGL的缓冲区进行访存操作,避免了数据传回内存再传到显存带来的不必要时间消耗。
2.基于屏幕空间的流体表面提取
本文采用的流体表面提取方法将粒子以小球的形式进行绘制,然后在屏幕空间获取其深度信息,再进行平滑滤波得到视点相关的近似流体表面。本方法直接使用流体表面的粒子的深度图作为流体的表面,不用进行三角网格化,而且平滑滤波等操作都是在二维深度图并行运算,方法实现简单,且所有操作均可以由硬件直接执行或在GPU上并行计算,因此具有很好的实时性。
a)流体表面深度的计算
深度是计算机图形学中一个常用的概念,在OpenGL中,它表示的是物体到视点的距离,可以根据深度来决定物体之间的遮挡关系,OpenGL始终保持的是距离视点最近的物体的深度,本发明正是利用了这一点,通过截取OpenGL的深度缓冲区,来获取流体表面的深度图(如图2右)。
由于使用的是OpenGL的可编程管线,自定义了渲染管线的顶点着色器和片段着色器,所以需要对深度进行自定义。OpenGL函数通常所处理的是二维或三维的顶点,但它们在内部几乎都是被当作具有4个坐标的三维齐次坐标进行处理的,即(x,y,z)T表示为(x,y,z,w)T。只要w不等于0,(x,y,z,w)T就对应于三维点(x/w,y/w,z/w)T;如果w等于0,它不再对应于欧几里德点,而是对应一些理想化的“无穷远点”。
所以,在这里我们定义深度为:
depth=posEye.z/posEye.w
其中depth为对应片段的深度,posEye为变换到视点空间后点的坐标向量。这样depth表示该点对于视点的距离,我们用它来表示流体的深度。
我们使用点精灵来绘制粒子,可以利用其纹理坐标非常方便的获得其每个位置的深度,并将渲染目标重定向到纹理,然后截取深度图缓冲区就可以得到深度纹理,供下面的操作使用。
b)流体表面深度的平滑处理
得到的流体表面深度图如图2右,此时模拟流体的小球已经被绘制成了粒子球,看上去已经有了流体的大致外形,但是它们表面依然是清晰可见的球状边缘,因此需要对其进行平滑处理以得到平滑的流体表面。
本发明采用双边滤波(Bilateral Filter)的改进方法对流体表面深度值进行平滑处理。双边滤波与高斯模糊类似,不同的是它是一种可以保边去噪的滤波器。它由两个函数构成,一个函数是由几何空间距离决定滤波器系数,另一个由像素差值决定滤波器系数。因此,双边滤波不仅有和高斯模糊一样的模糊效果,而且因为加入了一个像素差值决定的滤波器系数,所以深度相差越大的像素权重相对较小,模糊程度降低,这样就能很好的做到边界保持,如图3右。
深度缓存的值是浮点数,范围从0.0f到1.0f变化,其中0.0表示视锥体的近剪切面,1.0表示视锥体的远剪切面。但是,深度缓存中的浮点数不是线性分布的,将近90%的浮点数都是接近于近剪切面的,而只占深度缓冲的10%,而剩下的10%(从0.9f到1.0f)则占了深度缓存的90%。如果用黑色代表0.0f,用白色代表1.0f,你将看到几乎99.999%的颜色都是白色,这表明在这个距离深度并不准确。所以需要对深度进行线性化处理,使用如下公式:
linearizeDepth=(2*near)/(far+near-depth*(far-near))
其中near为近剪切面的值,far为远剪切面的值,depth为深度值。
本文对深度图的平滑处理是在着色器程序中完成的,对于片段着色器中的某一像片段,处理的主要过程如下:
1.设定一个大小固定的平滑窗口,该窗口以这一片段为中心;
2.对于平滑窗口中的每一个采样点:
a)获取采样点深度值SampleDepth;
b)r为采样点距离平滑窗口中心的距离;
c)w=e-r*r作为几何空间的权重;
d)d为采样点深度值与这一片段深度值的差;
e)g=e-d*d作为像素差值的权重;
f)求加权和sum=sum+sampleDepth*w*g;
g)求权重和wsum=wsum+w*g。
3.求得加权平均值fragDepth=sum/wsum,作为该片段新的深度值。
将上节得到的深度纹理传入着色器程序,按照上述处理过程对其进行处理,结果如图3所示。而且跟上节一样将渲染目标重定向到纹理中,将平滑后的深度图存储在已平滑深度纹理中,供后面使用。
4.流体表面逼真绘制
a)流体厚度的计算
和深度图的获取一样,我们使用点精灵来绘制粒子,不同的是在着色器程序中使用点精灵的纹理坐标来得到粒子的厚度,我们通过统计粒子的数量来计算流体的厚度。
利用点精灵的纹理坐标的计算方式,在片段着色器中我们可以很方便的得到粒子在该片段的厚度,如图4所示为点精灵(粒子球)的一个截面图,红色箭头所指点为片段着色器正在处理的那个片段,其中l为该片段距离球心,即经过变换后的纹理坐标原点的距离,d为粒子在该片段的厚度。可以明显的知道:
这里我们默认粒子的半径为1,而:
l=length(pointCoord.xy)
其中length()函数计算向量的长度,pointCoord为该片段的纹理坐标。这样得到的厚度数值较大,我们可以使用正态分布函数来进行转换:
其中μ和σ均为常数,为了简便,我们令μ=0,σ=3。
然后在绘制的时候开启混合(blend),设置混合函数为(GL_ONE,GL_ONE)模式,即绘制时,目标颜色和源颜色简单叠加,这样就利用OpenGL的渲染管线实现了粒子数量的统计,而且还计算了单个粒子在某像素点的厚度,这样就得到了整个粒子***的厚度图。由于渲染管线的并行执行,这种计算厚度的方法效率非常高。
b)法线及光照的计算
法线的计算可以简单地通过使用偏微分的方法得到,在这里我们依然使用着色器程序进行法线的计算,法线的计算是依据平滑后的深度图,将已平滑深度纹理传给着色器程序,使用法线公式可以得到法向量,其中偏微分可以使用GLSL中预定义的dfdx()和dfdy()函数,向量积可以使用cross()函数来计算,这里需要特别注意的就是,在计算法线的时候需要将深度转换到视点空间中。跟之前的处理一样,也将渲染目标复位到纹理,记作法线纹理,供后面使用。
Cs=Ka×A+Kd×D×max(N·L,0)+Ks×D×F×(max(N·H,0))n
光照采用上述计算,其中N为法线向量,可以从法线纹理中直接获得,L为光线的入射方向,由于光源位置定义为无穷远,所以入射方向即是光源的位置,对于半角向量H,我们简单的计算为:
H=normalize(V+L)
其中normalize()为GLSL预定义的归一化函数,V为视点位置向量。
由此可以得到镜面光:
specular=pow(max(0.0f,dot(H,N)),50.0f)
其中pow(),max(),dot()都是GLSL中预定义的函数,分别用于计算指数,最大值和向量点积,这里将镜面光常数(shininess)设为50。
然后也可以得到散射光:
diffuse=max(0.0f,dot(L,N))
这样就完成了光照的计算。如图5左为法线的计算结果,右为光照的计算结果,这里为了显示将流体的颜色设置为红色。
c)环境反射的计算
水面对环境的反射是比较复杂的,但是由于我们使用了GLSL,***会自动为我们实现很多功能,我们可以直接使用。对环境反射的实现就是典型的例子。
本文后面将会介绍我们使用了天空盒来实现环境的绘制,并且将绘制结果储存在天空盒纹理中,天空盒纹理跟简单的2D纹理不一样,它是一个立方体纹理,我们可以使用GLSL预定义的texture()函数通过纹理坐标来得到反射的颜色,那么在此之前我们需要得到纹理坐标。而且,GLSL还提供了一个reflect()函数,通过它我们可以轻松的获得环境反射纹理的纹理坐标:
refl=reflect(-viewer,N)
然后就可以得到反射的颜色:
refl_color=texture(u_Cubemaptex,refl)
其中u_Cubemaptex为天空盒的纹理。
菲涅尔反射可以由下面的近似公式得到:
fres_refl=r_0+(1-r_0)*pow(1-dot(N,viewer),5.0f)
其中r_0=0.2f。
d)背景折射的计算
折射是光的运行方向改变的现象,最直观的表现就是流体表面之下的物体被弯曲了,尤其是在流体表面不平,呈波浪状时,流体表面之下的也随着成波浪状弯曲,所以可以看出,折射是和流体表面的法线相关的,而且可以明显的知道与流体表面到折射物体的距离有关。我们可以这样计算折射颜色:
refrac_color=texture(u_Backgroundtex,fs_Texcoord+N.xy*thickness)
其中u_Backgroundtex和fs_Texcoord分别为背景纹理和对应的片段纹理坐标,N为流体表面法线向量,thickness为流体的厚度,这里特别地指流体表面和背景物体之间的距离。这样得到的背景颜色不是透过流体直接看到的颜色,而是随着法线方向有一定偏移处的颜色,这样将折射颜色与流体混合后就可以得到背景弯曲的现象,和折射现象一样。
e)颜色衰减的计算
首先计算颜色的衰减,光线是随着吸亮度呈指数型递减的,而吸收亮度A=K·/·c,其中K为吸收系数,l为吸收介质的厚度,c为吸光物质的浓度。由于我们考虑的流体是不可压缩的,所以浓度是不变的,这里为了计算的简便我们假设c=1。根据比尔-朗伯定律,各个颜色通道的衰减速度是不一样的,这个由吸收系数K来决定,根据经验我们分别将红色、绿色和蓝色通道的吸收系数设置为:
kr=5.0f,kg=1.0f,kb=0.1f
所以颜色的衰减:
color_atten=vec3(e-kr*thickness,e-kg*thickness,e-kb*thickness)
其中kr,kg,kb分别为红色、绿色和蓝色通道的吸收系数,thickness为流体的厚度,从厚度图纹理中直接得到。
f)流体表面完整着色
最终的绘制简单的说就是颜色的混合,在此平滑后的深度图作为流体的表面,厚度图用来计算颜色的衰减,法线和光照的结果用来计算流体表面的颜色,再加上反射、折射等颜色最终混合成流体。由于使用了帧缓冲区对象(FBO),每一次计算的结果都绘制到了对应的纹理,这样方便最终的合成。
首先是流体的折射颜色混合,在之前我们得到了折射颜色,我们根据流体的厚度进行混合,在这一步还进行了散射光的混合。
final_color=mix(color_atten.rgb*diffuse,refrac_color.rgb,transparency
其中mix()函数是GLSL中预定义的函数,用于进行混合运算,它根据第三个参数来将第二个参数按比例混合进第一个参数中,transparency是透明度,transparency=1-thickness,其他的量都是之前计算得到的。
最后加上镜面光照,对环境的菲涅尔反射效果:
out_Color=vec4(final_color.rgb+specular*vex3(1.0f)+refl_color.rgb*fres_refl,1.0f)
其中out_Color就是最终流体输出的颜色。
本发明未详细阐述的技术内容属于本领域技术人员的公知技术。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (5)
1.一种基于屏幕空间的SPH流体表面实时绘制方法,其特征在于包括以下三个步骤:
步骤(1)、流体的物理仿真:通过由SPH方法来对流体进行物理仿真,利用GPU动态地并行计算所有光滑流体粒子的位置、密度信息,作为整个表面绘制方法的输入数据;
步骤(2)、流体的表面提取:从视点位置出发,将步骤(1)计算得到的每一个粒子按照位置和大小绘制成粒子球,截取当前视点下的深度信息和厚度,得到表面深度图和厚度图,然后采用双边滤波器对表面深度进行平滑处理,以此作为近似的流体表面;
步骤(3)、流体的实时逼真绘制:步骤(2)中计算得到的平滑深度图作为近似流体表面,基于在步骤(2)中动态生成的厚度图,根据比尔-朗伯定律来计算流体的透明度;同时,在基于深度图进行流体表面法线计算的基础上,通过结合冯氏光照模型和延迟着色技术,来实时模拟流体表面的反射、折射效果;
以上所有操作和计算都在GPU上进行,具有高度并行性,而且避免了由显存和内存的数据交换带来的时间消耗,具有很高的实时性。
2.根据权利要求1所述的基于屏幕空间的SPH流体表面实时绘制方法,其特征在于:步骤(1)中所述的流体的物理仿真方法,该方法使用一组离散粒子表示流体,利用平滑核函数近似粒子的物理参数,将纳维-斯托克斯(Navier-Stokes,N-S)方程转化为只与时间相关的离散形式的微分方程,再利用积分方法求解。
3.根据权利要求1所述的基于屏幕空间的SPH流体表面实时绘制方法,其特征在于:步骤(2)中所述的流体表面提取方法,该方法将流体粒子以小球的方式进行绘制,通过截取到的深度图来近似的代替流体表面。
4.根据权利要求1所述的基于屏幕空间的SPH流体表面实时绘制方法,其特征在于:步骤(3)中所述的通过结合冯氏光照模型、比尔-朗伯定律和延迟着色技术,来实时模拟流体表面的光学效果。
5.根据权利要求1所述的基于屏幕空间的SPH流体表面实时绘制方法,其特征在于:步骤(1)、(2)、(3)中所述所有操作和计算都在GPU上进行,除了预处理阶段,没有显存和内存的数据交换,所有操作和计算都是利用CUDA和OpenGL技术并行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310636586.6A CN103679802A (zh) | 2013-12-01 | 2013-12-01 | 基于屏幕空间的sph流体表面实时绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310636586.6A CN103679802A (zh) | 2013-12-01 | 2013-12-01 | 基于屏幕空间的sph流体表面实时绘制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103679802A true CN103679802A (zh) | 2014-03-26 |
Family
ID=50317243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310636586.6A Pending CN103679802A (zh) | 2013-12-01 | 2013-12-01 | 基于屏幕空间的sph流体表面实时绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103679802A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360896A (zh) * | 2014-12-04 | 2015-02-18 | 北京航空航天大学 | 一种基于gpu集群的并行流体仿真加速方法 |
CN105302580A (zh) * | 2015-11-28 | 2016-02-03 | 武汉斗鱼网络科技有限公司 | 一种通过gpu纹理共享实现快速获取游戏图像的方法和*** |
CN106373179A (zh) * | 2016-08-29 | 2017-02-01 | 北京像素软件科技股份有限公司 | 光照场景渲染方法 |
CN106408639A (zh) * | 2016-08-31 | 2017-02-15 | 上海交通大学 | 一种基于曲率流的屏幕空间流体渲染方法 |
US10002432B2 (en) | 2015-11-04 | 2018-06-19 | Samsung Electronics Co., Ltd. | Method and apparatus for rendering target fluid |
CN110717269A (zh) * | 2019-10-10 | 2020-01-21 | 北方工业大学 | 一种基于网格和粒子耦合的流体表面细节保护方法 |
CN111508055A (zh) * | 2019-01-30 | 2020-08-07 | 华为技术有限公司 | 渲染方法及装置 |
WO2022135018A1 (zh) * | 2020-12-25 | 2022-06-30 | 北京字跳网络技术有限公司 | 动态流体显示方法、装置、电子设备和可读介质 |
CN114972595A (zh) * | 2022-05-05 | 2022-08-30 | 北京领为军融科技有限公司 | 基于几何信息的粒子***渲染优化方法 |
CN117830495A (zh) * | 2024-03-04 | 2024-04-05 | 北京科技大学 | 一种基于屏幕空间的sph多相流体实时渲染方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102044086A (zh) * | 2010-11-30 | 2011-05-04 | 华北水利水电学院 | 一种软组织形变仿真方法 |
-
2013
- 2013-12-01 CN CN201310636586.6A patent/CN103679802A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102044086A (zh) * | 2010-11-30 | 2011-05-04 | 华北水利水电学院 | 一种软组织形变仿真方法 |
Non-Patent Citations (3)
Title |
---|
AIMIN HAO等: "Hydraulic Flow Simulation on Dynamical Changing Terrain", 《COMPUTATIONAL AND INFORMATION SCIENCES (ICCIS), 2010 INTERNATIONAL CONFERENCE ON》 * |
张昆: "流体场景的屏幕空间实时绘制研究", 《万方学位论文数据库》 * |
张海涛: "屏幕空间海洋场景的真实感绘制", 《万方学位论文数据库》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360896A (zh) * | 2014-12-04 | 2015-02-18 | 北京航空航天大学 | 一种基于gpu集群的并行流体仿真加速方法 |
CN104360896B (zh) * | 2014-12-04 | 2017-12-15 | 北京航空航天大学 | 一种基于gpu集群的并行流体仿真加速方法 |
US10002432B2 (en) | 2015-11-04 | 2018-06-19 | Samsung Electronics Co., Ltd. | Method and apparatus for rendering target fluid |
CN105302580A (zh) * | 2015-11-28 | 2016-02-03 | 武汉斗鱼网络科技有限公司 | 一种通过gpu纹理共享实现快速获取游戏图像的方法和*** |
CN105302580B (zh) * | 2015-11-28 | 2019-04-23 | 武汉斗鱼网络科技有限公司 | 一种通过gpu纹理共享实现快速获取游戏图像的方法和*** |
CN106373179A (zh) * | 2016-08-29 | 2017-02-01 | 北京像素软件科技股份有限公司 | 光照场景渲染方法 |
CN106373179B (zh) * | 2016-08-29 | 2019-02-26 | 北京像素软件科技股份有限公司 | 光照场景渲染方法 |
CN106408639A (zh) * | 2016-08-31 | 2017-02-15 | 上海交通大学 | 一种基于曲率流的屏幕空间流体渲染方法 |
US11710266B2 (en) | 2019-01-30 | 2023-07-25 | Huawei Technologies Co., Ltd. | Rendering method and apparatus |
CN111508055A (zh) * | 2019-01-30 | 2020-08-07 | 华为技术有限公司 | 渲染方法及装置 |
CN110717269A (zh) * | 2019-10-10 | 2020-01-21 | 北方工业大学 | 一种基于网格和粒子耦合的流体表面细节保护方法 |
CN110717269B (zh) * | 2019-10-10 | 2023-07-25 | 北方工业大学 | 一种基于网格和粒子耦合的流体表面细节保护方法 |
WO2022135018A1 (zh) * | 2020-12-25 | 2022-06-30 | 北京字跳网络技术有限公司 | 动态流体显示方法、装置、电子设备和可读介质 |
CN114972595A (zh) * | 2022-05-05 | 2022-08-30 | 北京领为军融科技有限公司 | 基于几何信息的粒子***渲染优化方法 |
CN117830495A (zh) * | 2024-03-04 | 2024-04-05 | 北京科技大学 | 一种基于屏幕空间的sph多相流体实时渲染方法及装置 |
CN117830495B (zh) * | 2024-03-04 | 2024-05-31 | 北京科技大学 | 一种基于屏幕空间的sph多相流体实时渲染方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103679802A (zh) | 基于屏幕空间的sph流体表面实时绘制方法 | |
CN102915559B (zh) | 一种基于三维点云的实时透明物体gpu并行生成方法 | |
CN102096941B (zh) | 虚实融合环境下的光照一致性方法 | |
CN107093207B (zh) | 一种基于gpgpu的天然气泄漏扩散的动态可视化方法 | |
CN103700143B (zh) | 一种基于gpu多遍绘制的三维动态海洋模拟方法 | |
CN108090947A (zh) | 一种面向3d场景的光线追踪优化方法 | |
CN102930583B (zh) | 互动式生成液滴效果的方法 | |
CN101593345A (zh) | 基于gpu加速的三维医学图像显示方法 | |
CN102855400A (zh) | 一种基于投影网格的海洋表面建模及实时光照方法 | |
CN103530907A (zh) | 基于图像的复杂三维模型绘制方法 | |
CN112396684A (zh) | 光线追踪方法、装置及机器可读存储介质 | |
CN101615300B (zh) | 一种屏幕空间微结构表面对象环境光遮挡方法 | |
Goswami | A survey of modeling, rendering and animation of clouds in computer graphics | |
CN101441774A (zh) | 基于图像映射空间的动态场景实时双面折射绘制方法 | |
CN103247070A (zh) | 一种基于预计算转移张量的交互重光照真实感渲染方法 | |
CN102867336B (zh) | 一种基于热力学模型的固体燃烧过程模拟方法 | |
Nah et al. | MobiRT: an implementation of OpenGL ES-based CPU-GPU hybrid ray tracer for mobile devices | |
CN116385623A (zh) | 具有深度信息的参与介质多重散射的绘制方法及*** | |
CN103871091A (zh) | 一种面向点要素分布特征表达的夜景图制作方法 | |
Zhang et al. | A fast framework construction and visualization method for particle-based fluid | |
CN104272351A (zh) | 用于表示场景中的参与介质的方法以及对应的设备 | |
Shen et al. | Fast global rendering in virtual reality via linear integral operators | |
CN102402798B (zh) | 一种可交互的非匀质半透明物体绘制方法 | |
Guo et al. | Research of graphics acceleration based on embedded system | |
WO2024037116A1 (zh) | 三维模型的渲染方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140326 |