Visual Simulation of Smoke译文.docx

上传人:b****3 文档编号:2896394 上传时间:2022-11-16 格式:DOCX 页数:17 大小:1.11MB
下载 相关 举报
Visual Simulation of Smoke译文.docx_第1页
第1页 / 共17页
Visual Simulation of Smoke译文.docx_第2页
第2页 / 共17页
Visual Simulation of Smoke译文.docx_第3页
第3页 / 共17页
Visual Simulation of Smoke译文.docx_第4页
第4页 / 共17页
Visual Simulation of Smoke译文.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Visual Simulation of Smoke译文.docx

《Visual Simulation of Smoke译文.docx》由会员分享,可在线阅读,更多相关《Visual Simulation of Smoke译文.docx(17页珍藏版)》请在冰豆网上搜索。

Visual Simulation of Smoke译文.docx

VisualSimulationofSmoke译文

虚拟烟雾模拟

摘要:

在这篇文章中,我们提出一种计算机图形应用领域中新的烟雾数值模拟的方法,即使用非粘性的欧拉方程作为烟雾的物理模型,这是一种稳定、快速并有很少的数值耗散的方法。

相比采用N-S方程的物理方法,它更加适合气体建模,并且计算量要小得多。

此外,我们还引入物理上一致的漩涡限制来保证烟雾在粗糙网格(相比使用更精细的计算流体力学文献中网格)上小尺度特征的模拟,并正确地处理与运动物体相互作用。

关键词:

烟雾;计算流体动力学;Navier-Stokes方程;欧拉方程;半拉格朗日方法;稳定流体;漩涡限制;participatingmedia参与媒体

RonaldFedkiw,JosStamandHenrikWannJensen,"VisualSimulationofSmoke",In SIGGRAPH2001ConferenceProceedings,AnnualConferenceSeries,August2001,15-22 

1.引言:

由于气体如烟雾的运动是极其复杂并难以捉摸的,所以模拟自然现象如烟雾等,在计算机图形领域仍然是一个具有挑战性的问题。

可视化的烟雾模型,广泛应用于包括特殊效果和互动游戏等相关行业领域,一个好的模型应该易于使用和生成并且具有很强的现实意义。

很显然,烟雾和气体的造型在其它工程领域也是非常重要的。

更普遍地讲,计算流体动力学广泛应用于气体和其他液体,例如水的模拟。

可直到最近,计算机图形学的研究人员才开始从大量的CFD文献中挖掘可以用于或修改计算机图形应用的方法。

不幸的是,目前的烟雾模型不是太缓慢,就是受到过多的数值耗散。

在本文中,我们采用CFD文献中有关气体如烟雾的动画仿真技术,提出了一种稳定、快速且没有过多数值耗散的模型,它使用了一种相对粗糙的网格,来生成复杂的滚动烟雾动画。

1.1以往工作

在过去的二十年里,烟雾及其它气体现象的建模,在计算机图形领域一直受到广泛关注。

早期的模型仅仅专注于一个特定的现象或者直接模拟烟雾的密度而忽略其速度。

使用固体纹理的方法其参数随着时间的变化而变化,增加了额外的细节。

随后,基于Kolmogoroff频谱的随机速度场用来模拟复杂的烟雾运动特征。

所有这些早期模型共有一个共同特点是它们没有任何动态反馈,而创建一个非动画的逼真的动态烟雾模拟是一项耗时的工作。

模拟烟雾运动的更自然的方式是直接模拟流体动力学方程,Kajiya和Vonerzen是最先的实践者。

不幸的是,当时的电脑电源只允许他们产生粗网格的结果。

除了二维模型外,到Foster和etaxas才做出一些有意义的工作。

他们的模拟使用相对粗糙的网格,但在三维空间中产生很好的烟雾效果,因为他们的模型使用了一种明确的整合计划,在足够小的时间段中他们的模拟是唯一稳定的。

这使得他们的模拟相对缓慢,尤其是当流体的速度在他们感兴趣的任何地方。

为了解决这个问题,Stam介绍了一种无条件稳定的模型,这种模型可以在任何速度下运行。

它采用了一种半拉格朗日方程和隐式求解组合的方法,由于使用了一种一阶集成的方案,模拟受到了太多的数值耗散。

虽然整体上看起来很像流体,但小尺度的涡旋消失的非常快。

最近,Yngve等提出了一种利用可压缩流体方程模拟爆炸的方法。

当可压缩方程有助于模拟冲击波和其它可压缩现象时,他们引入了一种和声波相关的非常严格的时间步长限制。

大多CFD从业人员尽量避免使用不可压缩方程的限制条件,因此他们不考虑可压缩流动方程,或者不在意基于细胞自动机的网格气体求解方法。

1.2我们的模型

我们的模型是专门用来模拟烟雾等气体的,通过欧拉方程模拟烟雾的速度。

这些方程的求解,是通过使用遵循压力泊松方程的半拉格朗日方法实现的,它可以保证我们的模型在任何时间步长上都是稳定的。

然而,我们的主要贡献之一是使用了CFD文献中的一种称为“漩涡限制”的技术,从而减少了半拉格朗日法所固有的数值耗散。

基本思路是,使用了一个压力项来拟补数值离散过程中的能量损失。

这个压力是专门用来增加涡流量的,随着时间的推移,就实现了在视觉效果上烟雾的动态生成。

从某种意义上说,这个压力项和欧拉方程是完全一致的,它随着网格数量的增加而消失。

在计算流体力学领域,这种技术被应用到直升机周围的复杂湍流流场的数值计算,但是由于无法添加足够的网格点,要准确解决流场问题是不可能的。

这个力的计算仅仅增加了较小的计算开销。

因此,我们的模拟几乎和基本稳定流体算法一样快。

只要这个压力项的幅度低于某一特定的阈值,那么我们的模型将保持稳定。

在这个范围内,我们的时间步仍然将比采用明确计划的方法高出好几个数量级。

半拉格朗日方法在大气科学界非常流行,广泛应用于以平流为主的大尺度流体模拟过程中。

我们采用高阶插值技术,可以进一步提高流体的质量。

当移动速度场的密度和温度时,这种技术会特别有效。

最后,我们的模型也能像Foster和Metaxas的方法一样,能够处理计算域内的边界。

因此,我们能够模拟烟雾同时避开周围的物体。

本文接下来的内容安排如下:

在下一节中,我们从流体动力学方程中得到我们的模型,并在第三节,我们将讨论漩涡限制。

在第四节中,我们概括的叙述了我们的实现。

在第五节中,我们提出了一个交互且高品质的用于渲染和描绘烟雾模拟的光子贴图。

接下来,在第六节中,我们展示了一些成果,而第七章中,我们得出结论,并提出下步工作。

2流体动力学方程组

从一开始,我们假设我们的气体作为非粘性、不可压、常量密度(constantdensity)流体进行模拟。

在气体中粘性的影响是微不足道的,尤其在粗网格上。

在粗网格上的数值耗散比起物理粘性和分子扩散来说更占主要地位。

当烟的速度远低于声速时,可压缩性的影响也微不足道,这样不可压缩的假设就很大程度上地简化了数值计算方法。

因此,烟的速度模型方程,记为

,由不可压缩欧拉方程(Eulerequations)组[14]给出

这两个方程说明速度应该让质量守恒(conservemass,方程1)和动量守恒(conserveomentum,方程2)。

物理量p是流体内部所受的压力(pressure),f表示外部力(externalforces)。

我们也任意设置流体的常量密度(constantdesity)为1.

就像[7,6,17]中的那样,我们使用两步来解这些方程。

首先我们通过求解方程2(经过一个时间步∆t,不包含压力项)计算一个中间速度域u*:

在这一步之后,我们使用一个投影方法(projectionmethod)[3]来强制这个域u*为不可压。

这等价于从下面的泊松方程(Poissonequation)计算压强(pressure):

在一个法向量为n的边界点处,使用纯Neumann(诺伊曼)边界条件,也就是,

(注意利用Dirichlet边界条件也很简单,其中压强直接被指定,而不是指定它的法向导数(normalderivative))。

中间速度域u*之后通过把它减去压强的梯度(gradientofpressure)被修改成不可压缩的:

我们也需要用于温度T和烟的密度ρ的进化(evolution)的方程组。

我们假设这两个标量(scalarquantities)简单地被沿着烟的速度移动(平流运输)。

密度和温度都影响流体的速度。

由于重力,重的烟会向下掉,然而由于浮力,热气体会向上升。

我们使用一个简单的模型来说明这种效果,该模型定义了一个外部力,该力直接与密度和温度成比例:

其中z=(0,0,1)点在向上垂直方向。

Tamb是空气的环境温度,ɑ和β是两个具有适当单位的正符号常量,这样方程8才有物理意义。

注意当ρ=0和T=Tamb时,这个力等于0。

方程2,6,7都包含平流运算符(advectonoperator)

如[17]中那样,我们使用一个半拉格朗日法(asemi-Lagrangianmethod)[19]来求解该项。

我们使用一个迭代求值器(iterativesolver)来求解用于计算压强的泊松方程(Possionequation,方程4)。

我们在第4节介绍这些求值器怎样也能处理物体浸入流体(bodiesimmersedinthefluid)的问题。

3漩涡限制

通常烟和空气混合物包含的速度域具有很大空间偏差,并伴随着相当大量的各种规模的旋转和狂暴的结构。

非物理的数值耗散减弱了这些有趣的流动特征,我们的新方法的目的就是在粗网格上把这些漩涡加回来。

把它们加回来的方式之一就是创建一个随机或假随机的小规模流动域扰乱,使用试探式的(启发式的)或基于物理的模拟。

例如,可以使用Kolmogorov谱产生一个divergencefree速度域并把这个加到计算出的流动域来代替丢失的小规模结构(了解Kolmogorov谱的CG应用,看[18])。

虽然这给流动提供了小规模细节,但是这不会把小规模细节放在物理上正确的位置,这个正确位置就是在流动域中小规模细节丢失的地方。

反而,这些细节以一种杂乱的形式被添加,这让烟变得“活跃”,以一种非物理的形式翻滚和卷曲。

烟的逼真运动的关键在于使烟看起来像是被动的自然现象而不是相对的由活生生的人制造出来的烟。

我们的方法寻找流动域中小规模特征应该产生的位置,然后在粗的CG(计算机图形学)网格上,以一种基于物理的方式把小规模特征加进这些位置,促进了烟的被动滚动,这样让烟看起来有真实地混乱。

具有无限的计算能力,任何符合的数值方法都可以用于获得可接受的结果,只需简单地增加网格点的数量直到想要的限制行为被观察到。

但是,实际上,计算资源有限,网格相当粗糙(CG中的网格甚至比CFD的更粗糙),离散差分方程可能不是足够渐进逼近用于获得想要的物理正确效果的特殊模拟行为的连续方程。

我们的主要想法就是在粗网格上设计一个符合要求的有趣的物理上表现出正确形式的数值方法。

一般来说,这很难做,但是幸运的是旋涡限制法最近由Steinhoff提出来了,看[20],用于对直升机周围(这些地方不可能添加足够的网格点来精密地求解流动)复杂混乱流动域的数值计算。

图1:

把计算域离散成相同大小的体元(左)。

速度的分量被定义在每个体元的面上(右)。

产生小规模细节的第一步就是找出这些小规模细节的来源位置。

在不可压缩流中,漩涡度(旋度)

提供小规模结构。

每一小片漩涡可以被认为是一个朝特定方向旋转流域的浆轮。

人工数值耗散减弱了这些浆轮的效果,因此关键想法就是把它们加回来。

首先由低浓度漩涡指向高浓度漩涡的归一化的漩涡位置矢量

被计算出来。

然后浆轮力的数量值和方向按下面方式计算出来

其中ε>0,ε用于控制添加回流域的小规模细节的数量。

添加空间离散间隔h保证当网格被精细化后一样能获得物理正确解。

这个技巧由Steinhoff在10年前使用一个不含有h的类似于方程11的形式提出,看[20]中的例子。

这个方法过去被成功地用于复杂流域的工程模拟,例如那些和旋翼连接的地方,在这些地方不可能添加足够的网格点来求解重要的流体小规模特征。

4实现

我们使用一个有限体积空间离散方法来数值求解流体流动方程。

如图1所示,我们把计算域切分成等大小体元。

温度、烟的密度和外部力被定义在每个体元的中心,而速度被定义在适当的体元面上(看图1,右)。

注意这样的安排是与Foster和Metaxas[6]中的相同,但与Stam[17](其中速度被定义在体元的中心)中的不同。

我们对速度域的交叉网格安排为数值方法改善了结果,使它具有更少的人工数值耗散。

关于我们离散化的更多细节,请看附录A。

为了处理浸入流体的边界,我们标记所有与物体交叉的体元为已被占用。

所有已被占用的体元单元面具有的速度都被设置为物体的速度。

相似地,已被占用体元的中心的温度都被设置为物体的温度。

因此动画师可以通过简单地移动或加热一个物体,来创建许多有趣的效果。

在物体中,烟的密度当然等于0。

但是,为了避免在物

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1