- 12/17
- 2019
-
QQ扫一扫
-
Vision小助手
(CMVU)
摘 要:本文给出一个基于流体物理模型和粒子系统的快速卡通烟雾模型。通过Navier-Stokes方程建立烟雾流体场的物理模型,以保证运动轨迹的真实感。为粒子属性引入了浓度函数和作用半径,从而只需少量粒子就能快速获得浓度场分布。为了实现卡通化效果,使用卡通图元进行纹理贴图。试验证明该系统高效快速,能实时生成自然生动的卡通烟雾效果。
关键词:卡通烟雾;Navier-Stokes方程;粒子系统;计算机动画
1 引 言
烟雾是常见的自然现象,烟雾模拟在动画片、计算机游戏、影视、广告等各种领域中有着广泛的应用。以卡通化方式呈现的烟雾能烘托卡通动画的环境气氛,有效提升整个动画的生动性。但是,计算机生成卡通烟雾是一个具有挑战性的课题。这主要是因为烟雾具有随机变化的形状,难以用传统的造型方法来描述;此外,如何体现卡通化效果也并非容易解决的问题。
早在1983年Reeves[1]就提出粒子系统模拟烟雾效果,但此后该领域研究进展缓慢。烟雾的物理运动规律遵循NS(Navier-Stokes)[2]方程。Stam[3]结合半拉格朗日法对NS方程进行隐式求解,有力地推动了真实感流体模拟的发展。Fedkiw[4]采用漩涡限制法(Vorticity Confinement)改进前者工作,从而生成了极具真实感的烟雾效果。于金辉[5]根据艺术家绘制的烟雾画面提取烟雾运动骨架,然后在骨架上设计不同的烟团并绘制。虽然其算法能获得生动的卡通烟效果,但它属于一种过程描述模型,设计方法比较繁琐。Selle[6]直接基于Fedkiw[5]模拟卡通烟雾,通过图象缓存中的深度差信息求取卡通烟轮廓,但其算法需要使用大量粒子,影响了模拟速度。
本文的主要贡献是根据NS方程定义烟雾骨架,并使用童若锋[7]提出的方法对传统的粒子系统进行扩展,在其属性中定义了一个浓度函数和作用半径,从而以少量粒子获得连续的烟雾浓度。为了实现卡通效果,我们在动画师指导下预先定义了一系列卡通风格的烟团作为纹理,这些烟团体现了不同浓度的卡通烟雾特征。渲染过程中,系统为场景内不同浓度区域贴上相应烟团纹理,最终生成实时快速的卡通烟雾动画。
2 系统框架
本系统首先在烟源处周期性产生一定粒子,然后粒子在NS方程支配下而运动;系统通过粒子的分布情况来计算场景中每个网格点处的烟雾浓度,并为浓度大于阈值范围的网格点贴上相应烟团纹理。图1给出了本系统框架。
建立在简化的NS方程求解算法上。Stam[3]提出了一种实时、无条件的算法,采用欧拉方程来简化NS方程求解,能够模拟出真实感的烟雾效果。欧拉法是一种基于网格的方法,需要将场景划分为如图2所示的网格,速度和浓度定义于网格中心点位置。NS方程求解过程被简化为四个步骤,如图3所示。烟雾从当前状态转换到下一个状态需要受到外力、对流、粘度和投射等四个因素影响,各因素独立发生作用。作为一种简化的方法,Stam的方法缺乏物理精确性,不能用于飞行器设计等工程应用,但其速度较快,而且能生成令人满意的视觉效果,因此很适用于计算机图形学领域。
本系统是将Stam的方法与改进后的粒子系统相结合,利用少量粒子快速生成烟雾浓度场,然后通过卡通纹理贴图的方式获得卡通化烟雾效果。
其中a为事先给定的扩散系数,r为空间点到粒子位置的距离。为了求取粒子作用半径,首先给系统设定一个浓度阈值ρ0,求解方程f(r,t)= ρ0从而获得作用半径。显然,作用半径r是随着时间t增大而增大。粒子在各个年龄段的作用半径以及该作用半径内各采样距离处的浓度值为预先求出,其每一年龄对应一条作用半径,各作用半径组成一张作用半径表,每一作用半径对应于一张浓度函数表,浓度函数表中存放作用半径内各采样距离处的浓度值。
场景被划分为网格区域,烟雾浓度定义于每个网格点中心。当计算某一网格点的浓度时,如果粒子的作用半径r大于它与网格点之间的距离,则粒子对该点的浓度值有贡献,通过查表可以获得该浓度值大小。这种预处理方式有利于减少系统实时运算量,提高模拟速度。
2.3 卡通绘制
上面我们已经根据NS方程定义了烟雾运动轨迹,并采用改进的粒子系统快速生成了烟雾的浓度场分布信息。为了获得卡通烟效果,我们根据动画师建议,预先定义了一些能反映烟雾浓度特性的图元作为烟团纹理。图4所示为本系统所用到的部分图元。
在绘制过程中,我们根据场景各网格中心的烟雾浓度将其与某图元相关联,图元以纹理方式贴到该网格区域内。对于烟雾浓度大的区域,我们为其贴上颜色更深的图元,反之,则贴上颜色较浅的图元。此外,我们还可以定义一个浓度阈值,当某区域的烟雾浓度小于该阈值时,则表明此处烟雾非常稀薄,因此不贴任何图元。
3 试验结果
我们在Dell Precision380工作站上实现了本系统。软件平台为:windows xp操作系统,开发环境为VC6+OPENGL。本模型所获得的动画效果连贯,在5秒钟时间内大约生成100幅图,很好地满足了实时性要求。
图5给出了从本系统烟团动画中所截取的两幅画面,从中可以看到烟雾具有比较自然的运动形态。烟雾的中轴区具有高浓度,因此其绘制使用了跟背景颜色反差最大的烟团纹理。由于烟雾的扩散特性,其边缘以及较高区域的浓度在逐渐减小,因此该区域的颜色也趋近背景色。从图5可以看到,我们的试验结果和算法思想具有较好的吻合性。但本系统目前只实现了实时的二维卡通烟雾效果,虽然三维卡通烟雾只需多考虑深度信息,但由此带来的计算量是庞大的,从而会影响模拟实时性。因此,实时的三维卡通烟雾模拟尚有待继续深入研究。
4 结论以及未来工作
本文将改进的粒子系统与NS方程相结合,快速生成烟雾浓度场,并巧妙利用卡通纹理贴图来生成卡通化的烟雾效果。试验结果证明本系统高效快速,使用方便,能直接应用到卡通动画制作或者卡通风格的游戏设计中。
未来的工作主要包括两个方面。首先,对系统进行扩展,以实现三维卡通烟雾效果并保证实时性;其次,我们将致力于寻找一套高层语义参数来提高动画师的交互控制权,以生成更加生动有趣的卡通烟雾效果。
参 考 文 献
[1]W. T. Reeves. Particle systems-a technique for modeling a class of fuzzy objects. In Proceedings of SIGGRAPH, pages 359–376, 1983.
[2]A. J. Chorin and J. E.Marsden. A Mathematical Introduction to Fluid Mechanics. Springer-Verlag. Texts in Applied Mathematics 4. Second Edition., New York, 1990.
[3]J. Stam. Stable Fluids. In SIGGRAPH 99 Conference Proceedings, Annual Conference Series, pages 121–128, August 1999.
[4]Fedkiw, R., Stam, J., and Jensen, H. 2001. Visual Simulation of Smoke. In Computer Graphics(SIGGRAPH 2001), ACM, 15-22.
[5]Yu Jinhui, Xu Xiaogang, Peng Qunsheng, Computer Generation of Cartoon Smoke, Journal of Computers, 2000,23(9),pp 987-990.(in Chinese)
[6]Andrew Selle and Alex Mohr. Cartoon rendering of smoke animations. NPAR2004: Symposium on Non-Photorealistic Animation and Rendering, June 2004.
[7]童若锋,陈凌均等.烟雾的快速模拟,软件学报,1999, 10(6): 647-651.
- 上一条:基于拉伸构造的工程图三维重建
- 下一条:若干背景建模方法的分析和比较