【特效教程】Phoenix FD 2.2 重要参数介绍

18 八月, 2014
189
0

Inertial forces 编译:Hammer Chen

译者前言:Phoenix FD的软体设计风格很有Chaos Group的特色,就像VRay的GI引擎一样,有Photon Map, Brute Force, Irradiance Map, Light Cache。各种状况要用不同的组合,Phoenix FD的流体也搞成一样的设计风格,光是守恒与平流就有3X3种组合,用起来复杂,但都是对各种状况进行最佳化,这或许是Phoenix FD能够突围FumeFX的契机吧~

Inertial forces惯性力当勾选这选项移动模拟框会产生相反方向的惯性力,当模拟框连结到移动的物件,而物件的模拟效果会跟你用巨大的模拟框包含整个运动路径一样的效果(由于大的模拟框需要消耗巨大资源,所以这个功能很实用)(译者注:可用在移动中的火把,用小的grid link给火把,这个选项会让火把自然产生移动的风,既节省运算资源,又写实)

也可用在移动的表面或是船,或是需要避开移动的物件。周围要用移动的空气或是液体取代 。当与Initial fill up选项,加上open boundary conditions一起使用时,就可以做出在海面上移动的物件(船)的效果。

Time scale 控制时间快慢,可以用在慢动作效果。
(译者注:相关讨论请参考Chaos Group Forum官方论坛,大部分的使用者都有用过FumeFX,但是retime的观念还是不同
vorticity Vorticity涡度

以网格计算流体(grid-based)的模拟通常会容易在每个step计算)过程消散其内容,这当然也包含了速度。当速度消散时,小尺度的乱流就会被压抑,如果没有针对这点特别处理的话,模拟就会变得很平滑没细节,这个参数设定在模拟阶段对小尺度的漩涡加速,让漩涡不消失。这个功能没办法完全抵消消散的过程,但能明显改善。勾选xV c会修改过程, 避免在缓慢的区域过度地抵销消散。

Cooling 冷却

这个参数控制流体的辐射冷却,流体会逐渐降低温度,直到达到300度(相当于零度,烟既不会往上也不会往下。当冷却速度为一时就相当时真实的烟的四公尺的一半(译者注:原文这段似乎没有解释清楚)真实世界的冷却非常的复杂,类似于Global illumination全局照明那样,所以这里我们只用到简化的公式计算冷却。

Randomize 随机

这些选项让你可以产生随机的变动,可以跟Vorticity搭配使用。

Conservation 守恒

守恒的过程让流体具有漩涡动态的特质,让直线运动变成漩涡,越高的守恒,移动的力量就越能在容器中传达越远。因此在一点的运动也会让远方的流体移动。守恒会让烟与火焰产生写实的形状,让液体在静止时支撑自身的重量,或是在倾倒时充满整个容器。内部计算:守恒会更新grid中的每个cell的方向与数值与强度,这是为了为计算平流(Advection)步骤,当流体在两个cell间移动就会需要这些资讯(方向与强度) ,基本上Phoenix FD会去平衡每个cell中的进来的速度与出去的速度,而且会经过好几个pass的计算,然后越来越接近完美个平衡点。而这pass的总数就是所谓的conservation strength (quality) 守恒强度。在自然界,守恒具有无限的强度,而且是完美的。在Phoenix FD中,守恒的品质越高,从一个点到另一点的传递运动就会越远,让模拟的结果更加写实,但也会让每个frame的模拟时间更久。 Phoenix FD提供好几种守恒的方法,根据你的模拟需求所设计,每种都有其优缺点:
Conservation 1. Symmetric对称法这个方法很适合用在具有对称的模拟上,例如核弹爆炸的蕈状云。这个方法可以用在液体,也可用在火焰或是烟雾的模拟,可能会产生类似棋盘的图案,当你预览速度通道时会很明显看到棋盘图案。在大部分的状况,你不会把速度视觉化出来,但是只显示烟雾或是温度,所以不必害怕使用这种对称守恒法。

2. Smooth平滑平滑的方法跟对称法很类似,只是会产生更加平滑的速度场。这也是这三种方法中最强烈的方法,但不太擅长维持对称,会产生较少的细节,所以很适合用在液体模拟。

3. Buffered缓冲这个方法的运作方式跟上述两种有大的不同,具有最弱的守恒强度,但可以产生最多的细节,因此很适合用在烟雾与火焰。当守恒强度很重要时,就不能用在流体或是其他类型的模拟上。
consservation_Quality Quality品质增加守恒的强度,这对液体或是烟渐渐减少体积的问题,能够改善,或者能增加烟雾的卷度。请注意增加品质会减慢模拟的速度。以下动画展示了品质会改善体积散失的问题:

在范例中,烟雾放在一个几​​乎封闭的房间内,出口在天花板上。真实世界里的烟雾会充满整个房间,并从出口窜出。因为一旦烟雾产生,会累积且不消失;但在电脑模拟时,当守恒参数较低时,就无法维持住烟的总量会开始消失,且永远也无法到达出口。请注意当烟雾到达洞口时,守恒强度约为200。这数值绝非巧合,整个grid的垂直高度为100,如果grid再小一点那让烟雾到达洞口所需的守恒数值可以再更小。你可以把这个参数视为守恒扩散影响速度的射程范围。

你可能会问:『如果这个参数就是守恒的范围,那是不是就代表我们不能模拟当守恒小于液体深度的液体? 』听起来合逻辑,因为容器的底部必须要告诉表面,要支撑其底部。没错!这假设会成立,如果液体在不提升守恒的状况模拟的话。但其实不是这样的。这就是为何你可以在深度为100的容器中模拟守恒只具有10的液体。
Material transfer (Advection) Material transfer (Advection) 物质转移 平流
平流会处理流体在grid 中延着其速度移动。当目的地介于两个cell之间时(而通常也是介于两者之间),grid-based的模拟的问题就是当内容由一个cell转移到另一个时会变模糊。所以在每个新的frame,每次就会失去细节。 Phoenix FD提供多种平流计算方法,用来对付这种问题,每种方法都有其优缺点,要看模拟的状况而定。 Phoenix每个frame可以处理多次平流,或是多个frame处理一次,根据你的Steps per frame (SPF)参数而定。为了要获取最多细节的烟雾与火焰,最好将SPF设低,但是另一方面,高的SPF则会得到稳定平滑的液体,对于快速移动的液体也很适合。以下您可以指定计算平流的演算法

1. Classic (Semi-Lagrangian)经典法/ 半拉格朗日法这个方法对于液体与烟都很适合,具有好的稳定性。唯一可以用在静态液体的方法,在某些状况下,液体还会增加或是减少体积,,当这样的问题发生时,就应该增加Steps per frame (SPF) 如此可以维持住体积。
(注:请参考Wikipedia Semi-Lagrangian scheme)

2. Slow moving 缓慢移动这个方法是Semi-Lagrangian的修改版,针对缓慢移动的液体最佳化,避免细节遗失,模糊化。

3. Forward transfer 正向转移具有好的守恒特质,但是跟经典法比较稳定性较差,容易产生十字状的错误,或是在模拟液体时在水下容易产生空洞。

4. Multi-pass 多个pass 这个较少耗散的方法,能够产生细致的细节,可以让烟的边界很锐利。相较于其他方法,很适合用在大尺度的爆炸,或是薄纱式的烟雾或是火山岩流,或是其他需要很锐利的流体的状况。
SPF Steps per frame 决定每个frame进行多少次的平流运算,数值一代表每个frame只计算一次平流,这个数值可以小于一。建议您尽可能使用整数。当对移动迅速的物件模拟时,你必须使用较高的SPF,否则结果会产生颗粒状的结果、闪烁的液体表面…等等问题。越高的SPF,会以线性的方式减少效能。如果你增加两倍的SPF那么模拟速度就会变成两倍慢,但是品质并不会与SPF呈现县性关系。每次的模拟step都会抹灭细节,因此你必须要尽可能地减少SPF 隐藏上述的错误。如果SPF低于一,那就是每几个frame才计算一次平流,所以其余的frame只会进行部分的平流计算,到达新的位置不会失去细节。当你使用低于一的SPF,流体可能会在完成平流的那个frame会改变流体的方向,这跟你流体运动类型有关,这就是为何SPF小于一只用在非常缓慢的状况之下。

Particle resimulation 粒子重新计算
勾选粒子重新计算,这个选项是当你对粒子行为满意后,但是你喜欢改变泡沫或是水花。重新模拟粒子并不会产生一模一样的结果,因为中间态的液体的遗失。建议的使用方式是进行液体的模拟,然后多次重新模拟粒子直到达到想要的数量与行为。

Sharpness锐利化液体空气介面的锐利化,越大的​​数值会产生细致的细节,更好的液体行为,但是某些状况在算图的时候会看到grid cell。越低的数值产生越平滑的液体表面,但是液体会失去其表面,变得更气态。这个选项当你勾选Strong surface mode便会自动失效。

Viscosity黏度液体的黏度就是其厚度数值越高就需要花越多时间计算

non-Kewtonian Non-Newtonian 非牛顿流体这个参数会影响黏度,会根据液体的黏度做修改。为何要引进这个参数?因为黏度与wetting之间的冲突,越高的黏度会让wetting效果变差,这不是程式的错误,真实世界的液体就是如此表现的。例如如果你需要让巧克力覆盖在饼干上,你需要高的黏度,才能让巧克力产生卷曲的运动,但另一方面你需要巧克力覆盖整个饼干,而不产生粗糙的洞。然而当黏度高的时候,巧克力很可能不会在饼干上面形成薄的层。这时这个参数就有用了,让你可以产生美丽的,曲线的层,稳定地包覆饼干,且无损品质。这个非牛顿黏度在静止的液体区域减少了黏度,因次可以让巧克力包覆整个表面。 (请参考Wikipedia)
surface_tension Surface tension表面张力这个力是根据液体表面的曲度产生,这对粘性的模拟很重要(蜂蜜、 奶油等等)

Drying time 干燥时间液体蒸发所需的时间

Wetting 当勾选这个选项液体会在表面形成痕迹,然后缓慢地消失

Static surface correction静态表面修正用来避免缓慢移动或是静态液体表面的粗糙,当启动这个选项,每个模拟循环会小于单一个cell。表面处理会采用较少的锐利度。

Strong surface mode 这个选项会抑制grid的错误,但是液体会变得比较油滑。

Liquid-like 类似液体的这个参数跟泡沫的B2B互动是一样的意思。当这个数值不是零时,泡沫只能够连接在一起,就像液体一般。数值越大,就需要越大的加速度打断连接,如同B2B interaction, the conservation quality, and the viscosity这些参数一样,这个参数越大,就会线性地增加运算时间。
perobjIf not solid如果不是实体指定处理物件的方式,让它不是障碍物,如果物件是粒子,会被视为非实体,尽管具有实体的参数。

Inject注入物件产生流体,注入到模拟中。对于粒子,流体是从粒子的位置注射,对于几合体流体是注射到内部体积。当启用这模式时,Discharge参数用来指定注射入的体积。

Brush 笔刷物件更新流体的参数,缓慢地带入指定的数值。 Discharge会指定转换的速度。

(译者注:关于Inject与Brush这两个参数是控制流体自物件(模型)发射的方式,官方说明文件写的非常技术性,并不容易理解意义,个人觉得应该要重写,译者的理解是Brush相当于Realflow中的Fill Object,总之这个参数的名称取的并不好)

Solid object 实体物件如果这个参数没有勾选,物件就不会物理上的互动。但是仍然能做为来源或是吸引物。

Clear inside 清除内部如果勾选此选项,物件的内部会被清除。

Animated vertices 动态的点当物件具有动态,必须要对流体产生乡对应的力。如果你不需要就取消勾选此选项。 (译者注:写的太技术性了,这个参数应该是针对带skin的物件,vertex有变动的物件上,例如人物角色)

Velocity multiplier 速度加乘这个选项让你控制移动的物件对于流体的影响。数值越大,流体的反应就越大。