服务热线:010-82667852


地址:北京市海淀区马甸东路

          17号7层816

邮编:100088

电话:010-82667852

传真:010-82667852-608

E-Mail:sales@bafangonline.com


Address:Room 816, 7th Floor, 17 Madian East Road, Haidian District, Beijing

Zip code:100088

Tel:010-82667852

Fax:010-82667852-608

E-Mailsales@bafangonline.com


Houdini 流体操作
发布时间:2022-03-16 14:54

在三维计算机图形设计软件中,Houdini 在其中占据着一定量的使用者,它的流体、毛发和群集模拟选项设置,是在设计中被应用最多的,也是被很多设计师们所喜欢的。


Houdini_三维计算机图形设计


Houdini 提供的流体功能,可谓是强大的,但是如何让这个功能充分的融入到我们的设计中,减少工作周期,提高视觉效果,却是众多设计师们一直在追求的东西。


Houdini FX Artist艺术家针对 Houdini FLIP流体模拟技巧帮助大家总结过几条操作方法,帮助大家在制作流体镜头的时候,能够充分的展现流体模拟效果。


Houdini_流体模拟技巧


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


在获取源流体的时候通常会有两个选择,一个是 POP Source,另一个是 FLIP Source。这里我们需要在注意的是,要选择 POP Source而不是 FLIP Source。FLIP 获取源流体的方式是使用 FLIP Source 节点,实际上就是创建了一个VDB, 由 DOP 中的 Volume Source 节点读取。


对于需要从较大模糊形状中获取源流体的情况来说,这是种不错的方法,但会占用大量资源,相当耗时。而且在进入模拟阶段之前,想要获得更精准sourcing而增加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节点,可以更好的控制高速粒子。


Houdini_高速粒子


3. 使用Bounds qL来设置FLIP limits


Bounds qL 节点包含很多简单实用的功能,它是Houdini工具集 qLib的一部分。许多设计师在安装使用 Houdini 的时候大多都会默认安装qLib。如果你没有安装经验的话,可以通过 GitHub 上的说明轻松安装。


Bounds qL 主要用于设置 FLIP 和 Pyro 模拟的体积限制。这是从标准Bound节点开始的步骤,它包括一个选项,可以根据输入动画来创建边界。


最有用的功能是Output : Values checkbox,可解锁 bounding box 的大小和中心值。然后可以把这些值复制到 FLIP 解算器 Volume Limits 选项卡的任何参数,或需要 bounding box 的其他任何操作。


Houdini_节点设置


注: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');


Houdini_分辨率模拟


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);


Houdini_高分辨率碰撞


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


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


当遇到模拟完成98%,差不多快完事的时候,而剩余2%的粒子不起作用的情况时,我们则可以选择之前储存过的ID属性,用它来消除有问题的粒子。如果没有ID属性,那么则无法标记正确粒子以进行删除。


这时我们可以选择进入 point selection 模式,选择已开启的软件,在键盘上按9,这时会显示出 Group Selection 窗格,按ID选择,点击齿轮图标,选择Attributes > id,然后只需在视窗中选择要删除的粒子,点击[Delete]即可。


Houdini_模拟制作


7. 使用reseeding来增加稀疏区域


在制作中,大部分的模拟开发工作都是使用中分辨率容器完成的。有时候,得到的中分辨率FLIP模拟可能达到了你的所有要求,唯独在最终网格渲染的时候看上去粒子不太够。遇到这种情况的解决办法是,在FLIP解算器中降低Particle Separation设置(提高分辨率和粒子数),将模拟提交到渲染农场,(回家享受一下周末)第二天早上发现模拟效果看起来完全不同了。


不过在这种情况下,更建议大家启用reseeding参数,而不是改变 particle separation。在默认情况下使用reseeding参数,增加Surface Oversampling参数可以通过散布粒子来帮助增加稀疏区域中的粒子数量。这样,在保持了模拟的总体外观的同时,还得保证有足够粒子来避免网格流体看起来像瑞士奶酪一样。


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


在进行流体模拟时的目标之一是最大限度地利用原始FLIP模拟,包括直接将其用作湍流/急流效果。


模拟湍流的传统方式是模拟FLIP流体,然后再其之上运行湍流解算器。当然第二步并不总是非要有的,尤其对于飞溅和喷水等快速运动的流体来说。还有一个问题就是在对粒子进行网格化的时候,想让流体看上去真实一些也很不容易。


Houdini_流体模拟


建议大家用FLIP 模拟本身,直接加湍流着色器进行渲染,既可以渲染粒子本身,也可以将其光栅格为VDB,进行体积渲染。有时Kevin Pinga会根据镜头的实际效果将两种方法结合到一起使用。使用Houdini海洋工具时自动创建的湍流着色器非常适合光栅化的粒子。


9. 优化模拟和缓存


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


另外一个可以减少内存占用的操作是清除相机可视范围以外的粒子。在 Houdini 中有很多执行这个操作的方法,大家可以选用自己喜欢的一种。


另外,如果已经准备好了要渲染的几何图形,最好将其缓存并启用Delay Load Geometry checkbox,Mantra不会将几何图形嵌入到IFD文件中,而是将其引用到硬盘的文件中。这将有助于减少加载时间,大大减少IFD生成时间和文件大小。如果你有渲染农场而且不想太麻烦的话,这个方法会很好用。


Houdini_渲染



  • 北京八方在线科技有限公司_软件服务代理商
  • 北京地址(总部):北京市海淀区马甸东路17号7层816

    电话:010-82667852

    深圳(分部):深圳市福田区福虹路世贸广场A座3405

    电话:17324435645

    杭州(分部):浙江省杭州市余杭区崇贤街道星海南路188-11号1幢224室

    电话:13810147175

    邮编:100088

    联系电话:010-82667852

    传真:010-82667852-20

    E-Mail:sales@bafangonline.com

  • 24小时客服热线

    010-82667852

    传真:010-82667852-20
    3D三维设计制作_计算机软件_软件代理_软件全国代理服务商