「鬼才狗仔」用Houdini怎样才能模拟出理想的流体,大佬给出10条技巧( 二 )


本文插图
使用POP Force节点添加少量噪点对FLIP细节模拟有很大帮助
3.使用Bounds qL来设置FLIP limits
Bounds qL 节点是一个非常好的工具 , 包含很多简单实用的功能 , 它是非常大型的开源Houdini工具集 qLib的一部分 。 大多数工作室默认安装qLib , 因为它的开发是以实际制作而驱动的 。 如果你还没有用到的话 , 可以按照GitHub上的说明轻松安装 。
将Bounds qL主要用于设置FLIP和Pyro模拟的体积限制 。 这是从标准Bound节点开始的步骤 , 它包括一个选项 , 可以根据输入动画来创建边界 。
最有用的功能是Output: Values checkbox , 可解锁 bounding box的大小和中心值 。 然后可以把这些值复制到FLIP解算器Volume Limits选项卡的任何参数 , 或需要 bounding box的其他任何操作 。 具有集中的 bounding box信息可以避免用户错误 , 有助于创建更多程序性设置 。

「鬼才狗仔」用Houdini怎样才能模拟出理想的流体,大佬给出10条技巧
本文插图

参考Bounds qL中的参数有助于设置模拟极限 4.在FLIP求解器中启动有用的属性
在大多数FLIP模拟中打开FLIP解算器上的一些参数 。 有三个主要的参数是ID、age和vorticity , 可用于模拟后的调整(正如下一条技巧会介绍到) , 在Behavior and Vorticity选项卡的FLIP Solver中就能找到 。
相信很多Houdini用户都很熟悉ID属性和它的功能 。 缓存额外的属性可能会对数据大小有一些影响 , 但是能够获取到这些信息还是有用的 。
通过Age Particles checkbox(也可导出life属性)获取Age属性 , 可以随着时间控制模拟的外观 , 尤其是当粒子源在恒定发射的时候 。
vorticity属性对于获取激流/湍流这种次级模拟来源来说非常方便 , 而且对处理着色也非常有用 。

「鬼才狗仔」用Houdini怎样才能模拟出理想的流体,大佬给出10条技巧
本文插图

启用额外的FLIP属性:就像Houdini的其他操作一样 , 只需要勾选几个复选框 5.通过模拟后的调整来挽救失败的模拟
一般情况下更依赖于FLIP模拟作为最终结果输出 , 这是最理想的工作流程 。 可由于时间限制 , 在实际情况中我们不一定总是拥有重新模拟的机会来解决问题 。 在这种情况下 , FLIP粒子模拟后进行一些调整可以挽救失败的状况 。
例如 , 添加ID属性的原因之一是可以使用Retime节点对模拟进行重置时间 。
在运行中分辨率模拟时还会遇到一个常见的问题 , liquid droplets在模拟高密度区的大小很好 , 在稀疏密度区就会很大 。 在这种情况下 , 可以尝试使用pcfind , 函数可以帮助标记稀疏区域并降低它们的pscale值 。
使用的代码段:
「鬼才狗仔」用Houdini怎样才能模拟出理想的流体,大佬给出10条技巧
本文插图

「鬼才狗仔」用Houdini怎样才能模拟出理想的流体,大佬给出10条技巧
本文插图

一个简单的VEX讨论 , 根据点云密度调整粒子大小 。 全尺寸图片在这里 。
6.使用xyzdist处理高分辨率碰撞表面
另一个模拟后的调整方法就是 , xyzdist()非常好用 , (Kevin Pinga认为)是到目前为止和 primuv()齐名的 。
在VEX或VOP文本中 , xyzdist() 计算的是表面上到最近插值点的距离 。 它与primuv()结合起来 , 就可以从对象的参数UV中提取任何属性 。
在上述情况下 , 提取高分辨率碰撞表面位置 , 并用于将粒子推向该表面 。 在某些情况下 , 也可以直接在网格表面位置进行这个操作 , 尤其是针对于那些可以看到碰撞表面的镜头(例如将液体倒入透明玻璃杯中) 。 要确保把距离限制在一个很小的值上 , 才能加快计算速度 。


推荐阅读