跳转到内容

Blender 3D:从新手到高手/理解流体模拟器

来自 Wikibooks,为开放世界提供开放书籍

理解流体模拟器

[编辑 | 编辑源代码]

当我第一次接触流体模拟器时,我很难理解它的行为,尤其是开始时间结束时间似乎毫无意义。在 Google 上搜索后,我发现许多人难以弄清楚流体模拟背后的秘密,而且我没有找到任何真正有用的指南。在这个简短的指南中,我将尝试以新手友好的方式解释它。它可能并不完全正确,但它可能有助于新手理解它的工作原理。

开始时间结束时间以秒为单位的。不要忘记这一点。即使你的模拟在你将开始时间设置为 0,结束时间设置为 10 并在你的动画中设置了 250 帧,每秒 25 帧时看起来非常快,也有一定的原因。现在,只需记住这一点,不要让你的思绪飘忽不定,认为这些值是毫秒,或者你必须进行一些关于帧的乘除运算。

还要注意,域是整个流体计算的包围盒。所有内容都在这个盒子里面完成。它充当所有流体的底面、顶面和墙壁。这一点非常重要,因为这是我无法获得良好流体模拟的最主要原因。如果我有时间,我会做一个关于 Fluid > Control 的章节,但现在,我会说它会增加大量的计算时间。在我使用 I7、ATI Radeon 8970 视频卡、Asus P6X58D Premium 主板、64 位 Windows 7 和 64 位 Blender 的情况下,我在使用最低质量设置时崩溃了我的电脑。所以请记住,域必须包围你进行计算的区域。还要注意,在你设置好模拟之后,域会变成实际的液体,所以请赋予它适当的材质,并尝试不要在确信模拟之前进行烘焙。

设置场景

[编辑 | 编辑源代码]

我们将以实践的方式学习流体的工作原理。平面

  • 从默认的盒子开始,这个模拟将非常简单。
  • 让我们在线框模式下工作,按Z 键关闭实体模式。
  • 通过按数字键 0进入相机视图。
  • 选中盒子后,按S 键,然后按2,再按回车键,将其放大两倍。这样可以很好地匹配相机。
  • 数字键 7查看俯视图。
  • 选中盒子后,按Shift-D(不要移动鼠标,否则复制的盒子会移动),然后按回车键确认复制的盒子的位置。如果你确实移动了盒子,只需按Esc 键,新盒子就会保留,但移动操作会被取消。
  • 在选中新盒子(并且它与另一个盒子处于完全相同的位置)时,按S 键,然后按.5,再按回车键将其缩放到一半大小。
  • 远离鼠标,这里准确性很重要,稍后我会解释原因。
  • 现在我们要将新盒子移动到其中一个上角。按G 键,然后按X 键,输入-1,按回车键,盒子应该移动到我们较大盒子的左侧墙壁。
  • 我们要将盒子放在角落,所以按G 键 Y 1 回车键,盒子现在应该从我们当前的视图中位于左上角。
  • 然而,我们处于三维空间,而不是二维空间,所以点击数字键 1查看侧视图。这次我们将沿着 Z 轴向上移动盒子:G Z 1 回车键
  • 很好,我们的设置已经完成。

设置模拟

[编辑 | 编辑源代码]
  • 确保你处于物体模式,并且你精确地按照上述步骤操作。
  • 选中较小的盒子并点击F7 两次。你应该会看到一个面板,其中最右边的窗格显示“流体模拟”。点击启用
  • 我们的一个小盒子将是流体,所以只需点击流体按钮。这就是关于小盒子你需要做的所有事情。
  • 现在选中大盒子。物理面板应该仍然可见,点击流体模拟窗格中的启用,然后选择
  • 默认情况下,你的动画应该有 250 帧。渲染也应该默认设置为每秒 25 帧,本教程假设这种设置。
  • 由于我们有 250 帧,每秒 25 帧,这意味着我们的动画时长为 10 秒。所以现在进入棘手的部分,但实际上并不难。
    • 开始时间默认设置为 0 秒。这意味着在第一帧时,模拟刚刚开始。你可以将该值增加到 1 秒,这意味着在第一帧时,流体模拟已经运行了 1 秒。我们不想这样做,所以将其保留在 0 秒。
    • 结束时间默认设置为 0.3 秒。这意味着什么?这意味着在第 250 帧时,模拟已经运行了 0.3 秒。然而,默认情况下,我们的动画有 250 帧,每秒 25 帧,这使得这 0.3 秒在 10 秒内被拉伸。基本上这意味着我们正在慢动作观看节目,或者略小于实时速度的 1/33。所以现在你可能会想“看起来很实时”,是的,确实如此,但它为什么这样做?好吧,很难解释。考虑一下:在一个没有摩擦力的世界中,一滴水在 1 秒后会下降多远?答案大约是 4.9 米。因此,如果一滴水从 4.9 米的高度落下,它需要 1 秒才能落到地面。如果水滴从 3 厘米的高度落下,它需要多长时间才能落到地面?大约 0.078 秒。那么我为什么要提到 3 厘米?因为默认情况下,我们域的大小是 3x3x3 厘米,或者说非常小。如果你像我一样,你可能一直认为流体是在浴缸或桶中流动,而不是在蛋糕包装中流动。结束时间设置为 10 秒
  • 由于我们的想象力喜欢大的事物,让我们将这个蛋糕升级到,比如,一个游泳池。确保在物体模式中选中大盒子,并查看流体模拟窗格。在“烘焙”按钮的左侧应该有另外 3 个按钮,可能分别命名为“St”、“A”、“B”。点击A 查看高级选项。
  • 应该会显示一些新框,重力(应该在 Z 轴上为 -9.81,其他为 0),水,以及我们正在寻找的选项“真实世界大小”。还有网格级别和压缩性,但现在我们不必关心它们。
  • "真实世界大小"的值表示我们的域以米为单位有多大,如你所见,默认情况下它是 0.03 米,即 3 厘米。我们想要它很大,所以将其提高到 10,这是 Blender 2.45 的限制。现在我们的游泳池是 10x10x10 米(不要淹死!),记住这一点,因为流体的尺度很重要。不要以为我们又开始玩蛋糕了:)
  • 现在点击烘焙,并在电脑处理 0 和 1 的同时继续阅读。
  • 还记得我告诉你关于放置第二个盒子要非常准确吗?我还谈到了重力、落下的水滴等等?好吧,现在你将看到原因。
  • 如前所述,我们的“游泳池”是 10x10x10 米。我们添加的较小盒子大小正好是一半(嗯,在长度/宽度/高度方面,不是体积),即 5x5x5 米。还记得一滴水在 1 秒内会落下 4.9 米吗?我们的动画每秒 25 帧?这意味着我们水滴的底部将恰好位于“地面”上方 5 米,并且在 25 帧后,我们的水应该非常接近地面。
  • 如果你有一台速度快的电脑,Blender 现在应该已经完成烘焙。转到第 25 帧,例如使用箭头键(向上/向下移动 10 帧,向左/向右移动 1 帧)。仔细观察水滴,然后向前移动 1 帧。注意到水滴如何撞击地面了吗?想起来了吧?:)
  • 虽然我们还没有完成!我们必须渲染我们的游泳池。这很简单,但需要时间,按Ctrl-F12 然后去做饭。
  • 渲染完成后,按Ctrl-F11,并想象一个 10x10 米大的游泳池。如果你当地的游泳池也像这样,你可能想照看一下你的孩子。

最后说明

[编辑 | 编辑源代码]

比例很重要。在非常小的尺度上理解流体动力学非常困难,尤其是在你不知道使用什么尺度的情况下。许多指南似乎都省略了“真实世界尺寸”的值,我建议你将其设置为你可以理解的值,否则你最终会得到看起来非常慢/快或具有结束时间值的模拟,这些值似乎毫无意义。此外,我不是数学天才,据我所知,我的解释可能完全错误,虽然这种方式使这些值对我来说有意义,而且我能够进行流体模拟而不必对结束时间的值进行“猜测”。

额外练习

[编辑 | 编辑源代码]

这个关于流体的 YouTube 教程可能也有帮助: 链接 和这个 逼真的水纹理

华夏公益教科书