在线客服
在线客服

对于Houdini 流体操作有什么样的方法技巧呢?

 

对于Houdini这款软件大家也都是比较了解的,在3D计算机图形设计软件中占有一定数量的用户,Houdini的流体、头发和集群模拟选项是设计中使用最多的,也受到许多设计师的喜爱。

 

 

今天为什么要说到Houdini 流体操作呢?要知道Houdini提供的流体功能非常强大,但是如何将这个功能更好的掌握,减少工作周期,提高视觉效果,是很多设计师一直在追求的。

 

Houdini FX Artist艺术家针对 Houdini FLIP流体模拟技能的几种操作方法,帮助您在制作流体透镜时充分展示流体模拟效果。

 

 

1. 弹出获取源流体要用 POP Source而不是FLIP Source

 

获取源流体通常有两种选择:一个是 POP Source,另一个是 FLIP Source。在这里,需要注意的是,应该选择POP Source而不是 FLIP Source。Flip通过使用FLIP Source 节点获取源流体。,实际上就是创建了一个VDB, 由 DOP 中的 Volume Source 节点读取。

 

这是一种很好的从大型模糊形状中获取源流体的方法,但需要耗费大量的资源和时间。在进入模拟阶段之前,如果你想获得更准确的来源和提高VDB分辨率,速度将进一步降低。

 

 

与技术较为成熟的设计人员相比,他们一般使用基于多边形的规则SOP几何,因为这种操作不需要VDB转换。Source也可以从连接到 FLIP解算器本身的Sourcing input 相连接的 POP Source节点进行读取,与普通粒子模拟导入Source的方式相同。

 

POP Source 节点是非常直观的控制,大多数艺术家应该非常熟悉使用规则粒子。这允许您以一种预测性的方式控制和监控粒子数,独立于FLIP对象本身的粒子分离。

 

2. FLIP fluids使用POP节

 

究其本质,FLIP实际上是一个带有体积平流步骤的pop节点,其基础本身就是粒子,这意味着DOP中的pop节点可以应用于FLIP fluids。

 

为什么FLIP 流体不能用pop Force?一些技术老手可能知道,当处理常规粒子时,pop Force节点是创建运动的基本点。它可以在小噪声的环境中创造更好的流体效果,低频噪声也可以帮助创建细节,而不会增加粒子数量或粒子分离。

 

 

注意:噪波过大会导致仿真效果不佳,不真实。

 

另外,FLIP模拟中另一个有用的POP节点是POP Speed Limit。通过结合POP Drag节点,你可以更好地控制高速粒子。

 

 

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信息可以避免用户错误,并帮助创建更多的过程设置。

 

4. 模拟结束后通过调整保存失败的模拟

 

总的来说,它更多地依赖FLIP模拟作为最终的结果输出,这是最理想的工作流程。但是,由于时间的限制,在实践中,我们可能并不总是有机会重新模拟来解决问题。在这种情况下,FLIP粒子模拟后的一些调整可以“保存”失败的情况。

 

例如,添加ID属性的一个原因是您可以使用retime节点重置模拟时间。

 

在运行中等分辨率模拟时,会遇到一个常见的问题。liquid droplets在模拟高密度区的大小很好,在稀疏密度区域非常大。在这种情况下,您可以尝试pcfind,它可以帮助标记稀疏区域并减少它们的pscale值。

 

使用的代码段:

int pc[] = pcfind(0,'p',@p,chf('max_dist'),chi('max_pts'));

@pscale *=float(len(pc))/ch('max_pts');

 

 

5. 使用xyzdist处理高分辨率的碰撞表面

 

Xyzdist()非常容易使用,它与primuv()同名。

 

在vex或VOP文本中,xyzdist()计算曲面到最近插补点的距离。结合primuv(),它可以从对象的参数uv中提取任何属性。

 

注意:为了加快计算速度,需要保证将距离限制在一个非常小的值。

 

代码使用:

//initializing variables

int p_prim;

vector p_puv;

//getting the distance and the parametric position of the closest point

float dist = xyzdist(1,@P,p_prim,p_puv);

vector P2= primuv(1,"P",p_prim,p_puv);

//mixing the P of the points, influenced by a mapped distance

@P = fit(dist,chf("min_dist"),chf("max_dist"),P2,@P);

 

 

注意:如果使用较低的分辨率来实现碰撞效果,可以按上述方式进行调整,这样可以使流体更像在较高的分辨率下碰撞产生的交互效果。

 

6. 使用ID属性来消除问题粒子

 

当模拟完成98%,几乎完成,但剩下2%的粒子不能工作时,我们可以选择之前存储的ID属性来消除问题粒子。如果没有ID属性,就不能将正确的粒子标记为删除。

 

此时,我们可以选择进入点 point selection 模式,按键盘上的9,就会显示组选择窗格。按ID选择,点击齿轮图标,选择属性> ID,然后在窗口中选中要删除的粒子,点击【删除】。

 

 

7. 利用reseeding来增加稀疏面积

 

在生产中,大部分的模拟开发工作都是使用中等分辨率的容器完成的。有时,中等分辨率的FLIP模拟可能满足您的所有要求,除了它似乎没有在最终网格渲染中有足够的粒子。解决这种情况的方法是降低FLIP解算器中的Particle Separation设置(提高分辨率和粒子数量),将模拟提交到渲染农场,然后发现第二天早上的模拟效果看起来完全不同。

 

但在这种情况下,建议启用reseeding参数,而不是改变particle separation。缺省情况下,使用参数“resting”。增大Surface Oversampling参数有助于通过粒子散射增加稀疏区域的粒子数量。这样,在保持模拟的整体外观的同时,有必要确保有足够的颗粒来防止网格流体看起来像瑞士奶酪。

 

8. 直接使用原始FLIP模拟作为不同元素

 

流体模拟的目标之一是最大限度地使用原始FLIP模拟,包括直接使用它作为湍流/急流效果。

 

传统的湍流模拟方法是先模拟FLIP流体,然后在其上运行湍流解算器。当然,第二步并不总是必要的,特别是对于快速流动的液体,如飞溅和喷雾。另一个问题是,对粒子进行网格化的时,它不容易使流体看起来更真实时。

 

建议您使用FLIP来模拟自身,并直接添加湍流着色器进行渲染。你既可以渲染粒子本身,也可以将它们的光网格转换为VDB进行体渲染。有时Kevin pinga会根据镜头的实际效果将两种方法结合起来。湍流着色器自动创建时,使用Houdini海洋工具是理想的光栅化的粒子。

 

9. 优化模拟和缓存

 

高分辨率FLIP模拟的挑战之一是需要处理和生成大量的数据。一种常见的做法是在缓存模拟的任何部分之前删除不需要的属性。

 

另一个可以减少内存使用的操作是清除相机视觉范围外的粒子。在Houdini有很多方法来执行这个操作。你可以选一个你喜欢的。

 

 

此外,如果要渲染的几何图形已经准备好了,最好缓存它并启用Delay Load Geometry checkbox,Mantra不会将几何图形嵌入到IFD文件中,而是将其引用到硬盘上的文件。这将有助于减少加载时间,并大大减少IFD生成时间和文件大小。

 

/v23/jpg/swiper2-34c8e7ae.jpg
/v23/jpg/swiper1-fc05a4ec.jpg
/v23/jpg/swiper2-34c8e7ae.jpg
/v23/jpg/swiper1-fc05a4ec.jpg

热搜关键词

底部宣传图

渲云,您身边的渲染专家!

赞奇科技旗下CG视效行业云渲染品牌
立即注册
联系我们