唐 勇,张利卫,吕梦雅,毛菊珍
(1.燕山大学信息科学与工程学院,河北秦皇岛066004;2.河北省计算机虚拟技术与系统集成重点实验室,河北秦皇岛066004)
自由场景下烟雾动态追踪的实时仿真
唐 勇1,2,*,张利卫1,2,吕梦雅1,2,毛菊珍1,2
(1.燕山大学信息科学与工程学院,河北秦皇岛066004;2.河北省计算机虚拟技术与系统集成重点实验室,河北秦皇岛066004)
针对烟雾在自由场景下跟随物体的运动形态刻画困难的问题,本文提出一种动态追踪方法。首先,针对追踪烟雾因空气阻力产生运动态势变化问题,建立空气阻力模型,实现自然逼真的烟雾运动;其次,构建自适应网格场,引入边界盒子覆盖网格区域,实时捕捉物体中心与自适应网格场中心在可接受偏差内转换,实现烟雾的位置追踪;再次,采用旋转矢量法,通过影响热浮力方向向量有效解决烟雾方向偏转;然后,利用有限差分法快速求解N-S方程,对流项采用MacCormack方法实现无插值,减少数值耗散,提高实时性;最后,架设多种烟雾动态追踪实例。实验表明,本文方法能够真实实时模拟出烟雾动态追踪运动物体的自然逼真效果。
烟雾动态追踪;空气阻力模型;自适应网格场;旋转矢量;N-S方程
烟雾等流体在自然场景中扮演着举足轻重的角色,基于物理的烟雾仿真也一直是计算机图形学与虚拟现实领域研究的热点与难点。近年来,烟雾模拟的真实性与实时性得到不断地提升与突破。1999年Stam结合半拉格朗日和隐式方法来近似求解流体物理方程[1],获得了稳定实时的模拟结果,但因为数值耗散导致小尺度漩涡消失太快。2008年,Frank Losasso等利用网格细化技术在自由的八叉树上捕捉小尺度的视觉细节[2],减少压力项求解时间,然而不能实时确定需要细化的计算域。同年,康奈尔大学Theodore Kim等人提出一种小波湍流方法[3],使大、小尺度细节单独处理。2011年,斯坦福大学Michael Lentine等人改进半拉格朗日方法[4],将质量守恒与动量守恒用于流体模拟,有效改善了大时间步长流体细节缺失的情况。2013年,斯坦福大学Zhu Bo等人通过动态延伸均匀网格有效提升数据存储与计算速度并动态捕捉烟雾细节[5],但延伸的网格会使烟雾产生虚影。2014年,美国威斯康星大学Rajsekhar Setaluri等人用自适应的稀疏均匀网格结构来优化数据存储与处理[6],从而加快烟雾模拟速度,但仍然存在数值耗散的问题。
前人的研究中大部分只考虑了密闭空间中自然腾升烟雾的真实感与实时模拟,而对其跟随运动物体实时产生的烟雾变化仍然甚少涉及。烟雾的动态追踪中,需要实时获取运动物体的位置,其算法涉及每帧数据的获取与合理转换,复杂度高;运动物体方向的随机变化,使得烟雾速度如果不能及时更新,会导致视觉上的延迟等,从而将使得烟雾的跟随运动复杂多样。
针对上述问题,本文提出一种烟雾动态追踪方法,以期实现烟雾自主跟随运动物体的绘制仿真。首先,针对烟雾因空气阻力产生运动态势变化问题,根据尼古拉兹实验曲线,建立空气阻力模型;其次,引入边界盒子覆盖网格区域,重新定义三维欧拉网格结构中心,通过与运动物体中心数据的算法传递,解决烟雾的位置追踪;然后,采用旋转矢量法,由运动物体的运动方向作用于烟雾,建立力场分析方程更新其热浮力,实现烟雾的方向追踪;最后,优化改进的N-S流体力学方程,保证模拟的实时性。
模型的构建对烟雾的模拟举足轻重。在流体力学领域中,N-S方程组是最常用的物理模型,并且是表达不可压缩流体最全面的微分方程。合理的建立与求解烟雾物理方程至关重要。本文采用不可压缩非粘性形式的N-S方程:
式中,u为速度,p为压力,ρ为流体的密度,f为合外力,“·”为矢量点积,“∇”为梯度算子。方程(1)为连续性方程保证质量守恒,方程(2)为动量方程保证动量守恒。方程(1)和(2)是N-S基本方程组。
考虑到在物体带动下的烟雾受到空气阻力影响较大,在此引入空气阻力fresis以便真实刻画烟雾的运动态势。其中fbuoy为热浮力,fconf为漩涡限制力,合外力f计算方程如下:
其中,漩涡限制力[7]表述为
为简单计,视物体为质点,空气密度均匀,空气阻力方程为
其中,λ为阻力系数,ρ为空气密度,l/d为物体迎风面积,v为烟源速度。根据尼古拉兹试验曲线,流体阻力与速度多少次方成正比取决于流态,而流态主要取决于流速。当空气速度较低时,流态处于层流区λ=64/Re,其中Re为雷诺数,表达式为Re=ρvl/μ,将其带入式(5),得到阻力fresis和速度v的一次方成正比,即
至此,方程(1)~(6)构成了本文基本的烟雾物理方程。
由于物体运动位置的不定性、发烟方向偏转的未知性,使得正确模拟动态追踪的烟雾极其复杂。为克服未知因素而引起的系列问题,引入自适应网格场与旋转矢量分块解决上述问题。
2.1烟雾的位置追踪
每个模拟开始,在物体C的附近选择一个边界盒子,预先计算出盒子的中心与物体C中心的转化,包含有一定的偏移量。设定三维坐标系(x,y,z),即有
式中,S(x,y,z)为边界盒子的中心,Sc(xc,yc,zc)为物体C中心,σ为二者中心转化的偏移量。对边界盒子所覆盖区域自适应离散为均匀网格,三维网格空间大小为Size.x*Size.y*Size.z。转化图如图1所示,其中,立方体C即为物体C的模拟,边缘网格线范围为盒子边界。物体C可自由移动,其运动方程为
图1 边界盒子的形成Fig.1 Formation of the bounding box
追踪的烟雾每帧由物体C确定其中心位置,即在每时刻t的速度v等于物体C的速度vc,则每帧边界盒子始终与物体C保持σ的位移差,故边界盒子的运动方程为
式中,Xt为t时刻边界盒子的位置,Xt-1为t-1时刻边界盒子的位置,Xct为t时刻物体C的位置,Xct-1为t-1时刻物体C的位置,至此构建出实时追踪物体C的烟雾自适应网格场。
图2分别为静止火炬与运动中火炬烟雾不同的运动形态,运动火炬上的烟雾因受空气阻力而发生偏转。烟雾的自适应网格跟随火炬而运动,实现其位置的动态追踪。
图2 静动态火炬下烟雾不同的运动形态Fig.2 Smoke′s movements under static and dynamic flare
在自适应网格场中由于对一组偏微分方程构成的N-S方程组进行精确求解十分困难,由于有限差分法的计算区域被划分为具有多个子区域的规则网格,而在规则网格上又具有求解快速简单等特点,且本文构建的自适应网格场为均匀网格,故采用有限差分法求解N-S方程实现烟雾的模拟,边界采用诺伊曼边界条件处理网格。
2.2烟雾的动态方向偏转
物体的旋转偏移量,决定了烟雾的走向。引入旋转矢量,通过动态影响热浮力方向因子,处理烟雾的方向偏转。考虑到烟雾粒子温度、烟雾密度及烟雾重力作用下,热浮力与重力的计算公式为
式中右边依次为烟雾的热浮力与烟雾的重力。Δt为时间步长,ΔT为烟雾温度与外界温度差,ρ为烟雾的密度,y=(0,1,0,0)表示垂直向上的方向。α、β为常数,表示温度、密度对烟雾速度的影响程度。
以初始静态物体C为参考系,计算出物体中心到物体出烟口的向量ac=(xc,yc,zc),物体以角θ发生旋转,向量ac实时随之偏转。归一化ac为烟雾热浮力的方向向量RUp,
方向向量RUp作为烟雾受控旋转的旋转因子,令
式中,ω为旋转因子,控制烟雾的旋转强度,RUpx,RUpy,RUpz分别表示方向向量的x、y、z分量。故烟雾的动态方向偏转公式为
为保证烟雾模拟的实时性,需对N-S方程进行优化。对于方程(2),采用破开算子法将其拆分为对流项、外力项和压力投射项并依次求解。不同阶段烟雾的速度场用u0、u1、u2表示,则方程求解过程如下:
3)压力项,即求解泊松方程∇·u2=∇2p[10],方程左右分别用一阶二阶导数中心差分格式展开,后采用雅各比迭代法求解式,第l次迭代时得到,将其应用到压力修正方程u3=u2+∇p中,得到投射作用后的速度场u3。
至此,不断地进行循环计算,直到烟雾模拟结束。
实验环境为Windows系统,在Unity3D平台上[11]实现烟雾动态追踪的效果展示。硬件系统为:Intel Core i5-2320 CPU,3.0 GHz,4G内存,显卡为NVIDIA GeForce GTX 550 Ti。实验帧率在41.1帧/秒左右,能够满足实时性要求。
图3为烟雾动态追踪受力的炸弹,受力方向为右上方45度,(a)为未受力前静止的炸弹与烟,(b)为炸弹受力后烟雾的形态变化,(c)为两股烟雾在同质量的炸弹受到不同方向力的不同运动状态。左侧炸弹受力为F(1,2,0),右侧炸弹受力为F(1,1,0),其中水平向右为x正方向,又由于漩涡力的添加,烟雾细节很好的保留下来。
图3 烟雾动态追踪受力运动的炸弹Fig.3 Smoke dynamic tracking force movement of the bomb
图4为采用不同shader、不同扩散因子使得逆时针转动风车上动态追踪的烟雾呈现不同的颜色与累积。红色烟雾扩散因子为1,蓝色烟雾扩散因子为0.998。对比可看出,扩散强度影响烟雾尾迹的旋转细节,但同时,不同的扩散因子可营造不同的累积效果。
图4 不同颜色与扩散因子的烟雾风车Fig.4 Smoke of different colors and diffusion factors
图5为火柴棒上动态追踪的火焰。其中图(e)为火柴运行轨迹图,图(a)、(b)、(c)、(d)分别展示了在不同状态点,火焰随火柴的不同运动形态。本文效果在分辨率为64×128×64下每帧所用时间为0.016 s,充分满足实时性需求,且真实感效果符合自然场景下的火柴燃烧。
本文提出一种烟雾的动态追踪实现方案。构建空气阻力模型,使得动态的烟雾模拟逼真自然;引入自适应网格场与旋转矢量法,成功地解决了烟雾动态追踪的位置与方向偏转问题;利用有限差分法快速简单求解N-S方程,采用MacCormack方法计算对流项,实现无插值,减少数值耗散,很好地提高了实时性;下一步着重处理烟雾的扩散以及高精度下提高烟雾的动态追踪模拟实时性问题。
图5 动态追踪的火焰细节展示Fig.5 Dynamic tracing flame details
[1]Stam J.Stable fluids[C]//Proceedings of Computer Graphics,Annual Conference Series,ACM Transactions on Graphics,Los Angeles,1999,121-128.
[2]Losasso F,Gibou F,Fedkiw R.Simulating water and smoke with an octree data structure[J].ACM Transactions on Graphics.2004,23(3):457-462.
[3]Kim T,Thurey N,James D.Wavelet turbulence for fluid simulation[J].ACM Transactions on Graphics,2008,27(3):1-6.
[4]Lentine M,Aanjaneya M,Fedkiw R,et al.Mass and momentum conservation forfluidsimulation[C]//ProceedingsofACM Siggraph/EurographicsSymposiumonComputerAnimation,Vancouver,2011:91-100.
[5]Zhu B,Lu W,Cong M,et al.A new grid structure for domain extension[J].ACM Transactions on Graphics,2013,32(4):1-12.
[6]Setaluri R,Aanjaneya M,Bauer S,et al.SP grid:a sparse paged grid structure applied to adaptive smoke simulation[J].ACM Transactions on Graphics,2014,33(6):1-12.
[7]唐勇,吴娱,吕梦雅,等.一种改进的自适应漩涡限制实时烟雾模拟[J].小型微型计算机系统,2012,33(12):2676-2679.
[8]Selle A,Fedkiw R,Kim B,et al.An unconditionally stable MacCormack method[J].Journal of Scientific Computing,2008,35(2/3):350-371.
[9]Fedkiw R,Stam J,Jensen H.Visual simulation of smoke[C]//Proceedings of Computer Graphics,Annual Conference Series,ACM Siggraph,Los Angeles,2001:15-22.
[10]柳有权,王章野,朱鉴,等.基于物理的流体动画加速技术的研究进展[J].计算机辅助设计与图形学报,2013,15(3):312-321.
[11]Dai Qing,Yang Xubo.Interactive smoke simulation and rendering on the GPU[C]//Proceedings of ACM Siggraph International Conference on Virtual-Reality Continuum and Its Applications in Industry,New York,2013:177-182.
Real-time simulation of smoke dynamic tracking in free scene
TANG Yong1,2,ZHANG Li-wei1,2,LÜ Meng-ya1,2,MAO Ju-zhen1,2
(1.School of Information Science and Engineering,Yanshan University,Qinhuangdao,Hebei 066004,China;2.The Key Laboratory for Computer Virtual Technology and System Integration of Hebei Province,Qinhuangdao,Hebei 066004,China)
The real-time simulation of smoke is a great challenge in computer graphics all the time.In order to realize moving ways of the smoke dynamic tracking in a free scene,some steps are presented as follows:firstly,the air resistance model is built on account of the changes of the smoke′s tracing moving ways due to air resistance;secondly,a self-adaptive grid field is established covered by the boundary box,then in order to successfully position smoke tracking,it is captured real-timely of the conversion relationship between the center of object and the center of self-adaptive field in the acceptable deviation;thirdly,rotating vector method is adopted to solve the direction-deflexion of smoke by influencing the buoyancy vector;Fourthly,finite difference method can solve the N-S equation quickly and simply,and MacCormack method is adopted to solve the convective term with no interpolation,reduction of numerical dissipation and improvement of real-time performance;Finally,a variety of instances of smoke dynamic tracking are simulated;Experiments show that the above method can realize the vividly effect of the smoke dynamic tracking.
smoke dynamic tracking;air resistance model;self-adaptive grid field;rotating vector;N-S equation
TP391.9
A DOI:10.3969/j.issn.1007-791X.2015.06.012
1007-791X(2015)06-0541-05
2015-04-15 基金项目:国防重大专项资助项目(2014AT09)
*唐勇(1964-),男,四川遂宁人,博士,教授,博士生导师,主要研究方向为计算机图形学、虚拟现实技术及应用,Email:tangyong@ysu.edu.cn。