基于Unity3D的水流特效设计与实现外文翻译资料

 2022-11-06 14:58:54

英语原文共 9 页,剩余内容已隐藏,支付完成后下载完整资料


复杂水面的动画渲染

Douglas Enright

Stanford University

Industrial Light amp; Magic enright@stanford.edu

Stephen Marschner

Stanford University srm@graphics.stanford.edu

Ronald Fedkiw

Stanford University

Industrial Light amp; Magic fedkiw@cs.stanford.edu

摘要

我们提出了一个新的方法去渲染逼真的动态水效果,这个方法能够产生视觉上的虚拟三维效果,例如水倒入玻璃(见图1)和海浪的涌动,这是可以在计算机动画环境中使用的方式。为了更好的模拟真实水面效果,我们引入了一个新的“加厚”界面追踪技术来准确地模拟水面,以及一种新的速度推测方法,能够以平滑的水效果移动水面。速度外插法允许我们为表面运动提供一定程度的控制,例如。 产生风吹的风景,或迫使水迅速沉降。 为了确保模拟的真实感转移到最终的图像,我们将我们的方法与先进的基于物理的渲染系统相结合。

CR类别:I.3.7 [计算机图形]:三维图形和现实主义动画; I.3.7 [计算机图形学]:三维图形和现实 - 光线追踪;

关键词:计算流体力学,隐性表面,自然现象,物理动画,渲染,体积渲染

简介

水围绕在我们的日常生活中。 鉴于水对我们的重要性,动画和水的渲染是计算机图形学中最大的挑战之一。 最近,通过在各种电影中使用水效果,包括最近出现的电影“史瑞克”中的水、泥浆、啤酒和牛奶效果,这些效果的难点最为突出。 关于“史瑞克”中单次最难拍摄的内容,DreamWorks SKG“史瑞克”首席制片人杰弗里·卡岑伯格(Jeffrey Katzenberg)表示:“将牛奶倒入玻璃杯中。”[Hiltzik and Pham 2001]

上面的材料说明了对水(和其他液体如牛奶)的真实感模拟和渲染的需要,特别是在复杂的三维行为的情况下,如图1.1所示将水倒入玻璃中所看到的。实现的关键目标是在视觉上精确地处理将水的表面与空气分离。 这个表面的行为提供了一种视觉印象,即水被看到。 如果用于建模,这个表面的数值模拟方法不够健壮,不足以捕捉水的本质,那么效果就会被观察者所毁坏。 本文提出了各种用于处理表面的新技术,以提供视觉上令人满意的运动和逼真的结果。

我们提出了一种新的“加厚”前跟踪方法来对水的表面进行建模,称为“粒子水平集方法”。 它是一种混合表面跟踪方法,其使用与动态隐式表面组合的无质量标记粒子。 这种方法完全受到[Foster and Fedkiw 2001]中提出的混合液体体积模型的启发,但表现出更为逼真的表面行为。 这种效应是通过集中于模拟表面而不是液体体积来实现的[Fosterand Fedkiw 2001]。 这种从体积建模到表面建模的思路转变,是我们新技术背后的关键思想,从而使水面的效果更加逼真。

图1.1 水被倒入玻璃杯中

我们提出了对表面速度的新的处理方式,以获得更加真实的水面行为的视觉效果。无质量标记粒子和表示表面的隐含函数的运动取决于底层计算网格上包含的速度。通过外推水面和进入空气占据区域的速度,我们获得更准确和更好的视觉效果。 在计算网格细化的极限中,所得到的表面条件与使得速度散度自由的传统方法相同,但是在粗网格上给出的结果更具视觉吸引力,也更符合物理规律。此外,这种速度外推程序使我们能够对水面的行为增加一定程度的控制。 我们可以添加阻尼或搅拌效果,通过简单的物理效果,强制水面快速静止或飞溅。

我们的新进展可以很容易地纳入到先前存在的Navier-Stokes求解器中。 实际上,我们通过[Foster and Fedkiw 2001]的方法来解决液态水的Navier-Stokes方程,特别是使用Stam [Stam 1999]向公众引入的半拉格朗日“稳定流体”方法。 我们的方法尽可能保留水的现实行为,同时提供在计算机动画环境中使用所需的一定程度的控制。

为了减少与真实的水的计算误差,逼真的渲染是必要的。在某些方面,水是一种简单的材料,因为与许多普通材料不同,其光学性质被很好地理解并且易于描述。除了最大规模的场景之外,表面张力防止水面表现出微观的特征,使许多其他材料的反射相对复杂。然而,水总是产生复杂的折射面照射物体的情况,这意味着原本容易解决的光传输问题是难以解决的。最广泛使用的渲染算法忽略这种照明或使用简单的近似来处理它,但是由于水和其照明效果非常常见,这些方法不能真实效果。有几种渲染算法可以适当地考虑所有传输路径,包括通过水面的照明;一些例子是路径跟踪[Kajiya 1986],双向路径跟踪和光子测图[Jensen 1995]。在本文的清水中,我们选择了光子映射,因为它很简单,它可以很容易地避免经常通过折射面产生于从照明纯路径采样算法的误差。

2.前期工作

早期(至现在)图形社区对水现象的建模工作集中在减少水面的模型表征,范围从傅里叶合成方法[Masten et al. 1987]对水面的参数表示[Schachter 1980; Fournier and Reeves 1986; Peachey 1986; Tso and Barsky 1987]。最后三个参考文献以他们试图模拟现实波浪行为的方式显着,包括波浪行为的变化作为水深的函数。可以使用包括断裂的效果在内的这些方法来开发相当真实的二维波浪风景,但最终它们都受到每个波形中存在的正弦模型假设的约束。他们无法轻松处理复杂的三维行为,如物体周围流动和动态变化的边界。上述方法的总结及其在海洋环境建模和渲染中的应用可以在[Tessendorf 2001]中找到。

为了获得可能在动态动画环境中使用的水模型,研究人员转而对全3D Navier-Stokes方程式进行二维近似。 [Kass和Miller 1990]使用2D浅水方程的线性化形式来获得水面的高度场表示。 [Chen和Lobo 1994]使用压力定义的高度场制定了流动模拟与移动障碍物。 [OBrien和Hodgins 1995]使用与粒子系统结合的高度模型来模拟溅液。高度场的使用给出二维流动计算的三维外观,但是它将表面限制为一个函数,即表面通过垂直线测试,其中对于每个(x,y)位置最多有一个z值。撞击波或水倒入玻璃的表面不符合垂直线试验。使用粒子系统可以使表面变得多值。 [Miller和Pearce 1989]已经提出了液体的粘性弹簧颗粒表示。 [Terzopoulos等人已经开发了用于模拟液相中颗粒的替代分子动力学方法。 1989]。粒子方法虽然相当通用,但是当从单独的颗粒的位置重新构建光滑的水面时,可能会产生困难。

在过去50年中流体力学界基于完整的3D Navier-Stokes方程模拟复杂的水效应,已经进行的大量研究。 [Foster and Metaxas 1996]利用[Harlow和Welch 1965]的工作,为液体的逼真动画开发了3D Navier-Stokes方法。对于允许人们将颗粒放在表面附近的Harlow和Welch的传统标记和粒子方法的进一步的CFD增强可以在[Chen et al, 1997]中找到。通过[Stam 1999]将NavierStokes方程对流部分的半拉格朗日“稳定流体”处理引入计算机图形社区,以便允许使用明显更大的时间步长而不会妨碍稳定性。 [Foster和Fedkiw 2001]通过引入混合液体体积模型,结合隐含表面和无质量标记颗粒,对三维流体模拟的模拟和控制作出了重大贡献;在液体中移动物体的合理边界条件的制定;使用有效的迭代法来解决压力;以及用于粒子和隐式表面演化方程的时间步骤子循环方案,以便减少用于时间演变流体速度和压力的大的半拉格朗日“稳定流体”时间步长所固有的视觉误差的量。 3D流体模拟技术的所有进步与不断增加的计算资源相结合,为完整的3D流体动画工具在生产环境中的应用奠定了基础。

大多数以小尺度模拟水的工作没有具体解决渲染问题,也没有使用正确说明所有重要的光传输路径的方法。通过水照射的研究[Watt 1990; Nishita,Nakamae 1994]使用基于处理表示相当平滑的水面的网格的每个多边形的方法,因此这些方法不能用于由我们的模拟产生的非常复杂的隐式表面。对于开放海洋中的二维波场的情况,物理正确动机的方法产生了良好的效果[Premoze,Ashikhmin 2000; Tessendorf 2001]。

3模拟方法

3.1Motivation

[Foster和Fedkiw 2001]选择将被模拟的液体体积定义为隐性函数的等值线的一侧。水的表面由phi;= 0等值线定义,phi;= 0表示水,phi;gt; 0代表空气。 通过使用液体体积的隐含函数表示,它们获得了平滑的时间相干液体表面。 他们拒绝使用颗粒单独表示液体表面,因为难以从单独的离散颗粒计算视觉上所需的平滑液体表面。 根据底层液体流速,空间和时间动态演化隐含表面。 如[Osher和Sethian 1988]所示,这样做的适当方程是:

phi;t 〜u·nabla;phi;= 0(1)

其中phi;t是相对于时间的偏导数,nabla;=(part;/part;x,part;/part;y,part;/part;z)是梯度算子。

由于粗网格上的体积损失过大,隐式功能只能对表面进行建模,不会产生现实的表面行为。 [Foster and Fedkiw 2001]在为计算机动画制作现实液体方面的一项重大进步是液体体积的视觉上令人满意的平滑隐含功能建模与可以在粗网格上保持液体体积的颗粒的杂交。包含颗粒提供了一种捕获具有喷雾和飞溅效果的真实液体的活力的方法。曲率被用作允许颗粒影响水的隐含表面表示的指标。这是一个自然的选择,因为小水滴具有非常高的曲率,动态隐含表面难以用尖角分辨特征。

图2(a)示出了我们围绕点(50,50)旋转一个刚体旋转的缺口盘。盘的内部可以被认为是一定体积的液体。图2(b)示出了使用隐式表面方法(一次旋转之后)的结果,其中盘的高角和下角都被错误地削减,导致视觉特征的损失和液体的人为粘性外观。使用等式1的高精度第五阶WENO离散化获得该数值结果(参见[Jiang,Peng 2000; Osher,Fedkiw 2002])。为了比较,我们注意到[Sethian 1999]只提出了离散化这个方程的二阶准确方法。图2(c)显示了我们实施[​​Foster和Fedkiw 2001]方法得到的结果。磁盘内的颗粒不允许隐式表面穿过它们,并有助于保留底部附近的两个角。然而,他们几乎没有办法阻止隐含的表面从顶角附近偏离。这表示空气或气泡的损失,因为该方法错误地获得液体体积。这是不希望的,因为诸如波浪现象的许多复杂的水运动部分地由于彼此相邻的水柱的不同高度而导致。水柱中的空气损失降低了相邻柱的压力,破坏了许多动态飞溅效应以及整体视觉刺激的液体的活力。

虽然Foster和Fedkiw的混合液体体积模型试图精确地保持液体的体积,但它不能模拟空气或更一般地对液体表面的相反侧。我们将焦点从保持液体体积转移到保持液体表面本身。这种方法的直接优点是它导致颗粒放置的对称性。我们将颗粒放在表面的两侧,并使用它们来保持表面本身的精确表示,而不管一侧或另一侧可能有什么。粒子不意味着跟踪音量,它们旨在通过隐含函数来校正表面表示中的错误。在[Enright et al。 2002],我们表明这种表面唯一的方法导致了用于表面跟踪的最准确的3D结果(在CFD和CG中)。这是为了分析“测试”速度场。图2(d)显示了这种新方法正确地计算了缺口盘的刚体旋转,保持水和空气体积,从而可以获得更逼真的水运动。

在本文中,我们首次将这种新方法与实际速度场和流体动力学计算相结合。这种新方法的代表性结果可以在图3中看到。将球投掷到具有相同罐几何形状,网格间距和球速度的水箱中,如图4所示(由[Foster和Fedkiw 2001]提供)。球撞击水面后产生的飞溅在两个数字之间是截然不同的。我们的新方法可以生产形成良好的薄片,可以视觉上预期。请注意,我们的图中球的扭曲外观是由于光线经过水面时的折射的正确计算。为了说明使用我们的新模拟方法引起的额外的计算成本,图3花费了大约11分钟每帧,图4花费了大约7分钟每帧,并且仅设置一个级别的解决方案每帧需要大约3分钟。图3的渲染时间约为每帧15分钟。

(a) (b) (c) (c)

3.2粒子级集合法

3.2.1颗粒初始化

将两组颗粒随机放置在“增厚”表面区域(我们在表面的每一侧使用三个网格单元),在phi;gt; 0区域中具有正颗粒,在phi;le;0区域中使用负颗粒。不需要将颗粒放置在距离表面较远的地方,因为水平仪功能的符号很容易识别出这些区域获得了大量的计算节省。放置在每个单元格中的颗粒数是可调参数,可用于控制分辨率,例如我们大多数的例子都是使用64个粒子。每个粒子具有半径rp,其被限制为基于在模拟中使用的底层计算单元的大小取最小值和最大值。最小半径为.1min(Delta;x,Delta;y,Delta;z)和最大半径为.5min(Delta;x,Delta;y,Delta;z)似乎工作良好。粒子的半径在整个模拟过程中动态变化,因为粒子相对于表面的位置发生变化。半径设置为:

r

max

rp = spphi;(~xp)

rmin

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[139342],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。