Blender 3D:从新手到高手/理解流体模拟器
当我第一次接触流体模拟器时,我很难理解它的行为,尤其是开始时间和结束时间似乎毫无意义。在 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 教程可能也有帮助: 链接 和这个 逼真的水纹理
- Youtube: 不同分辨率和真实世界尺寸值的比较