示例工程:https://drive.google.com/uc?export=download&id=1leDYVzaUlsWArq99Q3tD06_-tHpUJwaH
概述
本教程是指导您完成在 3ds Max 中使用 V-Ray 导入和渲染 Houdini 模拟的过程的一部分。第 3 章的重点是平衡 Pyro 着色器和 V-Ray 体积网格之间的设置。
在最后一章中,我们将仔细研究 Houdini 的 Pyro 着色器,以及如何将其设置转换为 V-Ray 体积网格以获得相似的图像。
我们来看3个案例:
-
使用Billowy Smoke预设创建的没有火的简单烟雾模拟
-
一个没有烟的简单火灾模拟,使用无烟火焰预设创建
-
使用Fireball预设创建的烟雾 + 火灾模拟
在我们开始之前,应该清除 Pyro 着色器和 V-Ray 体积网格之间的一个主要区别。
使用 Pyro 着色器渲染火焰时,您通常会使用Heat场作为火焰的强度,使用温度作为火焰的颜色。在编写本教程时,Volume Grid 可以使用其中之一,但不能同时使用两者。在许多情况下,这不是问题,但在某些情况下您可能需要这种控制(例如,当温度场由于在模拟中应用了干扰而变得嘈杂时)。我们将研究一种可能的解决方法。
仅烟雾:Billowy Smoke 预设
我们首先研究如何均衡设置以实现最简单的模拟。提供的 . 本教程中的hip文件包含讨论的设置。
这是模拟的渲染图像,右侧是 Pyro 设置。
密度比例参数设置为1 ,烟色设置为纯白色 (1, 1, 1)。
在 Smoke Field 选项卡上,Fit Range已启用,Input Range 设置为 0-10。
使用 Lookup Ramp也已启用,位置 0.1 处的点设置为值 0.5。
在接下来的步骤中,我们将看到如何将这些设置转换为 V-Ray 体积网格。
首先创建一个V-Ray 体积网格并加载缓存的 . vdb序列。
当提示为加载的序列选择预设时,选择无预设选项。
从“输入”卷展栏→ “…”按钮打开第3 方通道映射对话框,以确保映射正确。
在“输入”卷展栏中启用“向上翻转轴”以将体积网格翻转到正确的方向。
打开预览卷展栏并启用GPU 预览。这对于预览参数更改的效果将非常有帮助。
从Rendering → Volumetric Options…按钮打开 Volumetric Render Settings 窗口。
通过在“火”卷展栏中将“基于”参数设置为“禁用”来禁用火的渲染。这不是绝对必要的,否则当 Fire Opacity Mode 设置为完全可见(这是默认设置)时,您将遇到与概率渲染相关的消息。
打开“烟雾颜色”卷展栏并将“恒定颜色”设置为白色(1, 1, 1) 以匹配火焰着色器上的“烟雾颜色”参数。
在“烟雾不透明度”卷展栏中,将“基于”参数设置为“烟雾” 。这将显示不透明度图,允许您匹配 Pyro 着色器设置。
由于 Pyro Shader 上的Fit to Range的 Source Range 设置为 0-10,因此您应该通过将左侧点设置为 [X,Y: 0, 0] 并将右侧点设置为[X,Y: 10, 1]。
回想一下,在 Pyro 着色器上启用了Use Lookup Ramp ,并且在位置[X,Y: 0.1, 0.5]处有第三个点。因此,您需要在坐标[X,Y: 1, 0.5]处的不透明度图上的一个点。
与 Mantra 的输出相比,这是目前渲染图像的外观:
有几个问题需要注意:
-
与 Mantra 相比,渲染图像中缺少一些信息。这是由默认为 0.001 的最小可见不透明度设置引起的。此选项是一种优化,通过剔除不透明度低于阈值的体素来加速体积渲染。另一个原因可能是 Opacity Diagram 上最左边点的默认 X,Y 坐标。默认情况下,它的 X,Y 坐标是 [ 0.1, 0 ],而不是 [ 0, 0 ]。请务必检查这一点。
-
渲染图像的 Alpha 中有伪影。这些是由“按场景单位缩放不透明度”选项引起的。渲染 VDB 时应始终禁用此功能 – 它用于 Phoenix FD 的 . aur缓存文件,确保烟雾不透明度渲染设置在不同的单位比例下产生相同的结果。
将最小可见不透明度设置为0,并确保不透明度图上最左边的点位于 X,Y:[0, 0]。丢失的像素现在应该出现在图像中
禁用按场景单位缩放不透明度选项。您会立即注意到烟雾现在看起来更加密集。这不仅仅是一个视口预览怪癖——它实际上也会渲染得更密集。
解决此问题的方法是将每个点的 Y 坐标减少为其当前值除以 100。以下是坐标应如何更改:
第 0 点:无需更改
第 1 点:从 X,Y: [ 1, 0.5 ] 到 X,Y: [ 1, 0.005 ]
第 2 点:从 X,Y: [ 10, 1 ] 到 X,Y: [ 10, 0.01 ]
与 Mantra 的输出相比,这是渲染图像现在的样子:
如果您打开两张图片,将它们叠放在另一张上,看看它们的区别。您会注意到 alpha 平面中的差异可以忽略不计(值小于 0.05),并且分布在各处 – 不限于特定区域。
出于所有意图和目的,这两个几乎相同。
最后,回顾一下:
-
烟雾亮度参数的等效项是“烟雾颜色”卷展栏下的“主乘数”。
-
烟雾颜色与“烟雾颜色”选项卡下的“恒定颜色”相同。请注意,您还可以通过将“基于”参数设置为“烟雾”并调整“颜色”渐变来使用“烟雾通道/密度”字段来调制颜色。
-
烟雾的不透明度由“烟雾不透明度”选项卡控制,“密度体积”参数的等效项是“基于”选项。
-
Fit to Range和Use Lookup Ramp选项的功能可以通过调整不透明度图来重现。
-
您需要禁用按场景单位缩放不透明度选项 – 这用于 Phoenix FD。aur缓存文件。
-
当您禁用按场景单位缩放不透明度时,您必须将每个点的 Y 坐标减少 100 倍。
-
确保不透明度图的最左侧点为 0.0,如果您的 Houdini 设置也是如此。
-
如果您发现渲染图像中缺少信息,请将“最小可见不透明度”设置为 0 – 默认为 0.001,并且可能会剪掉一些烟雾。
Fire Only:无烟火焰预设
在本节中,将讨论用于渲染火焰的体积网格设置。提供的 . 本教程中的hip文件包含 Houdini 设置。
这是模拟的渲染图像,右侧是 Pyro 设置。
下面是烟雾场、火灾强度场和火灾温度场选项卡中的设置。
与烟雾示例非常相似,您的目标应该按以下顺序排列:
-
均衡阿尔法
-
平衡火的强度
-
平衡火的颜色
这是此模拟的 Pyro 着色器设置。注意:
-
密度场是热——换句话说,烟雾和阿尔法将基于热场产生。这立即告诉您应该在体积网格中使用热场作为“烟雾”。
-
热场用于“火灾温度”选项卡。这意味着火的颜色是由热场驱动的。此外,该字段被重新映射为从 (0 – 3) 到 (0 – 1)。
-
火的颜色基于渐变- 您应该复制渐变的颜色和位置,记住“火温”选项卡中的重新映射。
-
温度场在火强度选项卡中使用。因此,火的强度是基于温度场的。有了这个特殊的模拟,如果你只是简单地使用热场(这就是我们将在 3ds Max 和 V-Ray 中做的),你不会注意到有太大的不同,特别是因为没有进行重新映射, 并且没有噪声施加到场上。但是,在某些情况下这可能是一个问题,我们将在最后一节中讨论其中的一个。
添加 V-Ray 体积网格并加载 VDB 序列。
打开第 3 方频道映射对话框:
-
将 Smoke 通道设置为 Heat。
-
将速度 X / Y / Z 设置为 vel.x / y / z
确保启用翻转轴选项以固定网格的方向。
从Volume Grid 的 Preview 选项卡启用GPU Preview。
从 Rendering 卷展栏打开Volumetric Render Settings窗口,然后将 Fire → Based on 设置为Disabled。
我们将首先专注于获取类似于 Mantra 渲染的 alpha。
将恒定颜色参数设置为黑色(0, 0, 0)。如果不这样做,Smoke 通道(请记住,这实际上是Heat场)将以恒定颜色渲染并添加到火的顶部。
将“基于”设置为“简单烟雾” – 此选项在 0 和(简单烟雾不透明度值)之间对烟雾通道进行简单的 0-1 映射,在这种情况下为:0.004。
禁用按场景单位缩放不透明度以避免可能的 alpha 伪影。
将最小可见不透明度设置为 0以确保在渲染过程中忽略体素。
将 Simple Smoke Opacity 设置为 0.004 左右。此参数对应于火焰兵着色器上的烟雾密度比例。它通常应该设置为比密度比例低约 100 倍的值,但在这种特殊情况下,它必须提高到 ~0.004 以使 alpha 匹配。
到目前为止,情况如下:
-
Mantra 和 V-Ray 渲染在 Color 平面中都是黑色的(当 Pyro → Fire Intensity Scale 为 0 并且 Volume Grid → Fire Based on 被禁用时)。
-
Mantra 和 V-Ray 渲染都具有适当的 alpha。
现在我们需要照顾火。
打开体积网格的“火”卷展栏并将“基于”参数设置为“烟雾”。请记住,Smoke 通道实际上是 Heat 场。
暂时禁用Emit Light – Emit light 选项的工作方式类似于 Houdini 的Volume Light,并且会根据火的强度和颜色影响烟雾的颜色。
确保 Fire Opacity Mode 设置为 Fully Visible。使用其他 2 个选项中的任何一个都将很难从 Pyro 着色器中复制结果。完全可见选项实际上可以称为“物理上正确”。在现实世界中,火不是不透明的,这也是 Mantra 和 V-Ray 在这些设置下都不会为您生成 alpha 的原因。在 Houdini 中,我们通过使用热场作为密度并将烟雾颜色设置为黑色来规避这一点。使用 V-Ray 体积网格,我们通过使用烟雾通道来设置烟雾不透明度并将恒定颜色设置为黑色。
将基于物理的选项设置为 0。此参数依赖于提供给“基于”参数的通道中存在的开尔文中物理上正确的温度值。物理正确意味着数百个,通常是 800 到 2000 个。
最后,您需要将斜坡颜色值从 Pyro 着色器复制到颜色和强度图。
不要忘记根据 Pyro 着色器的 Fire Temperature Field → Fit to Range Settings 来缩放图形。在本例中,源范围设置为 0 到 3,因此颜色和强度图上的第二个点移动到 X,Y:[3, 1]。
此外,您还需要确保正确放置色样。如果 Pyro 着色器的 Fire Ramp 上颜色值的位置为 0.33,则应将其放置在颜色和强度渐变中的 0.99 处以保持一致。
如果您对 Pyro 着色器 → Fire Temperature Field 上的 Lookup Ramp 进行了任何更改,您应该对 Color 和 Intensity 斜坡进行完全相同的更改- 并且再次记住来自Fit to Range操作的重新映射。
这是来自 Mantra 和 V-Ray 的结果之间的比较。RGB 平面中只有几乎无法察觉的差异。
——————————————————
火与烟 – 火球预设
在最后一节中,我们致力于平衡 Pyro 和 VVG 之间的渲染设置,以进行火球模拟。
如最后一章的第一部分所述,体积网格可以使用温度场或热场,但不能同时使用两者。我们将研究一种可能的方法来解决这种情况。
默认火球预设已被有意修改以将干扰应用于温度字段(默认设置为速度)。这会导致随机噪声出现在整个温度场中。如果您尝试在 V-Ray 体积网格中使用它,您会发现在保留火焰细节的同时消除噪音非常困难。
我们来看看一个可能的解决方案。
当然,最直接的做法是在体积网格中使用热场作为温度。
如果您的特定设置不希望这样做,并且您仍然希望通过使用温度场来获得额外的细节,那么您最好的选择可能是通过使用热量作为掩码来清除温度中的噪音。
在 VDB 转换节点之前放置一个 Volume Wrangle SOP,并将燃料设置为温度乘以热量。这会将容器中的温度设置为 0,其中热场为 0,为热添加一些额外的随机化,并将结果存储在燃料场中。不利的一面是,随着热量的消散,您将不可避免地失去一些挥之不去的温度。从好的方面来说——你的热量和温度场仍然完好无损——修改后的热量存储在燃料场中。
如果您使用温度字段来驱动体积网格中的烟雾颜色,则噪声可能是一个问题。作为一种解决方法,您可能应该考虑添加一个 Cd / RGB 字段,而不是依赖于仿真后的调整。
请查看右侧的动画书进行比较。
这是设置的外观。Volume Wrangle SOP用于将温度字段重新映射到 0-1 范围,将其乘以热量字段,并将结果存储在燃料中。
这是一个比较图像,显示了两个 Mantra 渲染之间的差异:
-
左边的图像显示了一个 Pyro 着色器设置,使用热量作为火焰强度,温度作为火焰颜色。
-
右侧的图像仅使用存储热*温度结果的修改后的燃料字段进行渲染。
虽然毫无疑问两者之间存在差异,但您可能会发现此设置足以满足您的目的。
这是一个 V-Ray 体积网格渲染,使用修改后的燃料字段作为基于参数的火。如您所见,当使用燃料场进行强度和颜色时,它与 Mantra 渲染相同。
让我们总结一下前面章节中显示的工作流程。
-
禁用火并均衡烟雾不透明度- 确保禁用按场景单位缩放不透明度,设置最小值。Visible Opacity 为 0,并传输 Pyro 着色器中发生的任何重新映射。回想一下,不透明度图点的 Y 值比 Houdini 中的值低 – 对于 Pyro 着色器上的烟雾密度 1,您通常会在体积网格中使用 0.01。
-
均衡烟色。如果您在 Houdini 中使用颜色字段,请将“基于”选项设置为 RGB(确保“输入”选项卡中的 3rd Party Channel Mappings 正确)。
-
通过将 Smoke Color → Based on 选项设置为 Disabled 来禁用烟雾。
-
在“火”选项卡下均衡火的颜色和强度。禁用基于物理并从 Pyro 着色器的颜色渐变中复制颜色,如果 Pyro 着色器上的 Fire Temperature 字段重新映射为 Fit Range 或 Ramp,请不要忘记相应地缩放它们。减小火焰乘数,直到强度看起来正确 – 对于 Pyro 着色器上的强度比例为 1,这通常为 0.1。
确保在此过程中禁用“火”卷展栏下的“发射光”-“发射光”选项的工作方式类似于 Houdini 的“体积光”,并且会根据火的强度和颜色影响烟雾的颜色。
官方文档地址:https://docs.chaos.com/display/VMAX/Chapter+3+-+Equalizing+the+Pyro+shader+and+the+V-Ray+Volume+Grid+settings