【Houdini海洋】Ocean FX海洋特效工具架详解 制作海洋效果

VFX大学 Houdini FX中文社区 【Houdini海洋】Ocean FX海洋特效工具架详解 制作海洋效果

正在查看 13 条回复
  • 作者
    帖子
    • #30423

      Hiの冰海豚
      参与者
      骑士

      V友们新年快乐,小海豚今天要给大家讲讲Houdini海洋特效工具的用法,以及各个工具之间的区别。海洋特效工具是用来创建海洋模拟的。

      ————

      一、Small Ocean 小海洋工具

      用于创建一小片完整的海洋,这片海洋包含材质和深度信息。

      小海洋工具很适合创建海洋表面,但是这片海洋不是DOP特效模拟,而是一个变形器。不需要模拟,我们就可以滑动时间线查看海洋演变。如果需要模拟的海洋,需要使用 Particle Fluids(粒子流体)工具架中的 Wave Tank 工具。

      使用 Small Ocean

      在 Oceans 选项卡中点击 Small Ocean

      此工具将创建并连接必需的 Ocean Spectrum 和 Ocean Evaluate 节点,以控制海洋的运动和形状。同时还会创建 Ocean Surface Shader 节点,并连接到新创建的 ocean_surface object 上。

      海洋表面上的动画是由 Ocean Evaluate 节点上的 Time 参数控制的,默认表达式是 $T(表示当前时间),我们可以编辑此表达式来改变动画方向和速度(比如 $T*2 就会使海洋运动加快,是 $T 的两倍)。

      小提示

      将 shading mode(着色模式)设置为 Smooth Shaded Mode,可以获得更好的变形海洋表面效果。

      ocean_preview 节点是用来预览海洋表面的,ocean_render 节点是用来渲染的。

      Ocean Spectrum 节点有多种工具,可以更改海洋的外观。比如,在 Wind 选项卡上,Speed 参数会影响波浪的振幅,Directional Bias 可以在某个方向上创建或多或少的波浪,Chop 会创建波浪上的尖峰。Wave Amplitude 选项卡也有很多非常有用的参数,比如 Scale 可以控制波浪的尺寸。

    • #30424

      Hiの冰海豚
      参与者
      骑士

      小提示

      • 渲染时,此工具会在输出级(OUT)创建一个 fetch 节点。如果我们想在渲染时生成置换贴图,可以将此节点连到 Mantra 节点的输入上。如果我们点击 Mantra 节点上的 Render 按钮,Ocean Evaluate 节点会为正在预览的画面帧,生成 Ocean Surface shader 节点需要纹理贴图。

      注意

      一定要记住,使用 ocean_render 节点上的 Reset Simulation 按钮,确定 ocean preview 和 ocean render 节点同步。

      • 要生成频谱🌊几何体,请点击 ocean surface object 中的 save_spectra 节点上的 Save to Disk 按钮。

      注意

      如果我们更改过波浪参数,频谱🌊几何体需要重新生成。

      • 海洋表面会添加速度属性,以便在渲染时使用运动模糊,此信息存储在输入网格的点上。如果我们觉得运动模糊不够准确,可以改变网格上的 rows 和 columns(行和列)以增加点的数量。不过要记住,大幅增加点的数量会使渲染速度变慢。
      • 如果在海洋表面下有很重要的信息,我们还可以调节 Mantra 节点上 Sampling 选项卡中的 Volume Step RateVolume Shadow Step Rate 设置优化渲染。通常海洋的体积元素是用于生成次表面散射和衰减效应的,不一定需要非常详细。
      • 如果海洋表面下方的空间对我们最终的图像并不重要,我们可以禁用 Ocean Surface shader 上的折射(refraction),并关闭 ocean_interior object 的可见,这将大大减少渲染时长。
      • 降低 Ocean Surface shader > Foam > Streaks 子菜单上的 Frequency,可以创建更破碎的泡沫效果。
    • #30425

      Hiの冰海豚
      参与者
      骑士

      改变海洋的形状

      要… 做如下操作
      设置波浪的高度 导航到 Ocean Spectrum 节点,调节 Wave Amplitude 选项卡上的 Wave Scale 参数。

      该值会和 Wind 选项卡上的 Speed 参数相乘。

      设置波浪的方向 导航到 Ocean Spectrum 节点,并调节 Wind 选项卡上的 Directional Bias 参数。

      此参数控制多少频率与风向相同。增加此值将使更多的频率向同一个方向行进,这在创建海岸线效果非常有用。

      我们还可以尝试增加 Directional Movement 参数,这将抑制向与风的方向反向运动的波浪,只留下同一方向的波浪。

      控制波峰高度 导航到 Ocean Spectrum 节点,并调节 Wind 选项卡上的 Chop 参数。

      增加此参数会在波浪上创建尖锐的波峰。不过如果这个值太大,波浪会反转自己。

      在海洋上添加更多细节 增加 Ocean Spectrum 节点上的 Resolution Exponent 参数。

      注意

      Resolution Exponent参数不止决定海洋的质量,还决定最终写出的纹理贴图的尺寸。

      创建大海洋 使用 Large ocean 工具架。
    • #30426

      Hiの冰海豚
      参与者
      骑士

      二、Large Ocean 大海洋工具

      创建完整的大海洋,此海洋包含材质和深度信息。

      这个工具可以创建一个大海洋,即使在非常大的距离上也没有重复的波浪(就是说这个海洋不是单纯地由小片海洋不停复制粘贴的得来的)。但是这片海洋不是DOP特效模拟,而是一个变形器。不需要模拟,我们就可以滑动时间线查看海洋演变。如果需要模拟的海洋,需要使用 Particle Fluids(粒子流体)工具架中的 Wave Tank 工具。

      使用 Large Ocean

      在 Oceans 选项卡中点击 Large Ocean

      此工具将创建许多点,这些点分散在一个非常大的网格上,两个 Ocean Spectrum 层都将被实例到这些点上,每个点都将指定一小片海洋范围,每个点在空间上都有轻微的旋转和偏移。这种变化就打破了由于重复使用同一个范围而产生的块效应。此外,其中一个 spectrum 层上启用了 Noise,可以模拟风或深度变化的局部影响。

      Ocean Evaluate SOP 可以预览最终海洋。同时还会创建 Ocean Surface Shader 节点,并连接到新创建的 ocean_surface object 上。

      海洋表面上的动画是由 Ocean Evaluate 节点上的 Time 参数驱动的,默认表达式是 $T(表示当前时间),我们可以编辑此表达式来改变动画方向和速度(比如 $T*2 就会使海洋运动加快,是 $T 的两倍)。

      小提示

      将 shading mode(着色模式)设置为 Smooth Shaded Mode,可以获得更好的变形海洋表面效果。

      ocean_preview 节点是用来预览海洋表面的,ocean_render 节点是用来渲染的。

      Ocean Spectrum 节点有多种工具,可以更改海洋的外观。比如,在 Wind 选项卡上,Speed 参数会影响波浪的振幅,Directional Bias 可以在某个方向上创建或多或少的波浪,Chop 会创建波浪上的尖峰。Wave Amplitude 选项卡也有很多非常有用的参数,比如 Scale 可以控制波浪的尺寸。

      小提示

      • 渲染时,此工具会在输出级(OUT)创建一个 fetch 节点。如果我们想在渲染时生成置换贴图,可以将此节点连到 Mantra 节点的输入上。如果我们点击 Mantra 节点上的 Render 按钮,Ocean Evaluate 节点会为正在预览的画面帧,生成 Ocean Surface shader 节点需要纹理贴图。

      注意

      一定要记住,使用 ocean_render 节点上的 Reset Simulation 按钮,确认 ocean preview 和 ocean render 节点同步。

      • 要生成频谱🌊几何体,请点击 ocean surface object 中的 save_spectra 节点上的 Save to Disk 按钮。

      注意

      如果我们更改过波浪参数,频谱🌊几何体需要重新生成。

      • 海洋表面会添加速度属性,以便在渲染时使用运动模糊,此信息存储在输入网格的点上。如果我们觉得运动模糊不够准确,可以改变网格上的 rows 和 columns(行和列)以增加点的数量。不过要记住,大幅增加点的数量会使渲染速度变慢。
      • 如果在海洋表面下有很重要的信息,我们还可以调节 Mantra 节点上 Sampling 选项卡中的 Volume Step RateVolume Shadow Step Rate 设置优化渲染。通常海洋的体积元素是用于生成次表面散射和衰减效应的,不一定需要非常详细。
      • 如果海洋表面下方的空间对我们最终的图像并不重要,我们可以禁用 Ocean Surface shader 上的折射(refraction),并关闭 ocean_interior object 的可见,这将大大减少渲染时长。
      • 降低 Ocean Surface shader > Foam > Streaks 子菜单上的 Frequency,可以创建更破碎的泡沫效果。
    • #30537

      Hiの冰海豚
      参与者
      骑士

      三、Guided Ocean Layer 引导海洋层

      创建一个 FLIP 流体模拟,模拟海洋表面的一薄层。

      此工具会在海洋表面上创建一层薄薄的粒子层,这些粒子由海洋速度初始化。在指定的深度上,海洋表面作为粒子下方的碰撞层,使粒子与海洋波浪紧密匹配。一个粒子边界层 boundary layer 会抑制水池边缘的反射,使海洋速度回到模拟状态,并保持水的体积平面匹配海洋。FLIP 模拟使用了一个 guiding volume 方法,通过模拟来操控海洋速度。

      薄层的厚度决定该模拟与下方海洋表面的匹配程度,也决定该模拟是否能很好地捕捉海洋下方运动,如尾迹和漩涡。

      Guided Ocean Layer 可以是静态模拟,也可以跟随海洋中运动的物体。

      Ocean Spectrum 节点可以塑造模拟海洋的初始帧,Ocean Source 控制输出。

      使用 Guided Ocean Layer

      1. 点击 Oceans 选项卡上的 Guided Ocean Layer 工具,创建一个水池。

      2. 选择水池需要跟随的动画物体,按<kbd>Enter</kbd>键确认。如果没有选中物体,Houdini 会提示我们放置一个静止的水池。

      注意

      海洋表面和引导体积之间的自由流体粒子层,是由 Ocean Source SOP 中的 Layer Size 参数控制的。

    • #30543

      Hiの冰海豚
      参与者
      骑士

      理解创建出来的节点网络

      当我们创建海洋时,需要注意三个非常重要的层,首先是创建海洋,然后添加白水,最后为白水添加高光。

      小提示

      当我们制作海洋时,禁用 OBJ 级别中所有的白水节点;然后制作白水时禁用海洋。

      第一组节点控制海洋自身。

      1. fluidtank_initial 控制模拟的第一帧。我们可以在这里使用 Ocean Spetrum 塑造水池初始帧的形状,并使用 Ocean source 控制其输出。这个节点里面包含水池的尺寸、水的深度等。

      2. AutoDopNetwork 控制水池的模拟。在这里我们可以找到 FLIP Tank 和 FLIP Solver。FLIP 模拟包含 SourceVolume DOP(使边界层粒子下沉)、POP Advect By Volumes POP(添加海洋速度到模拟上)。

      3. fluidtank_fluid 是 #1 和 #2 结果的合并,是我们渲染结果的地方。完成模拟后,此节点会收集流体粒子、设置材质、为表面创建一些节点,以完成效果。

      4. fluidtank_interior 也是用于渲染的,并且会创建一个着色器应用到流体内部的体积效果。它控制水面下的体积,比如水看上去的浑浊程度。

      接下来的一组节点是控制白水的。

      注意

      要添加白水到模拟中,请使用 Oceans 工具架上的 Whitewater 工具。

      1. whitewater_source 是浪花和泡沫的来源。

      2. whitewater_sim 是模拟白水的地方,我们可以在这里修改动画。

      3. import_whitewater 是 #1 和 #2 结果的合并。

      注意

      不要尝试自己从头开始建立白水模拟,最好使用这些工具。

    • #30544

      Hiの冰海豚
      参与者
      骑士

      理解延伸海洋表面节点(extended ocean surface)

      Guided Ocean Layer 和 Ocean Flat Tank 工具都还创建了一个网络,用于渲染“extended”(延伸的)流体表面,该延伸表面可以延伸到地平线,而且可以用海洋置换来渲染,为 FLIP 模拟和周围的源海洋之间提供一个无缝连接。

      1. Particle Fluid Surface 节点(名为 particlefluidsurface1)创建了 FLIP 网格。此节点上的 Flattening 选项卡中的设置,会使模拟区域边缘的流体模拟扁平,并向外挤压多边形网格边缘,形成一个延伸的平面。这个延伸的平面会随着海洋置换渲染出来。

      2. 两个 Particle Fluid Mask 节点(名为 particlefluidmask1 和 hifrequency_mask)会在输入的海洋频谱创建遮罩,将渲染时的海洋置换限定在指定的模拟区域,那些指定区域通常没有什么速度、涡度或水花高度。这些节点也会混合进模拟边界框边缘的海洋置换中,以匹配应用在边缘上的扁平。hifrequency_mask 节点还过滤进入的海洋频谱,保留高频波浪,通常这些可以应用到模拟的 FLIP 网格,使它更好地与周围的海洋融合。

      3. surface_preview 节点是 FLIP 模拟的一个快速预览版本,然后采样创建的遮罩。oceanevaluate1 节点应用海洋置换到此预览上,该预览是基于计算出来的遮罩的。

      4. split_spectra_mask 节点会从随时间变化的遮罩(该遮罩是由遮罩节点生成的)中分离静态海洋波谱。它们都缓存在两组不同的文件,以利用 Ocean Surface 材质的能力来分离波谱和遮罩输入。

    • #30925

      Hiの冰海豚
      参与者
      骑士

      关于改善海水🌊外观的一些小建议

      • 默认水池将创建一个低分辨率的模拟,这样方便做动画。所以如果要渲染更加逼真的效果,我们需要更改一些默认参数。比如,我们可以增加场景中的粒子数,将 Particle Separation 参数讲到 0.03 左右,就可以创建一个约 3 千万的粒子模拟。
      • 为场景添加环境光。水会反射和折射它周围的环境,所以场景添加一个环境贴图,将大大提高海洋外观。

      小提示

      在 Environment Map 参数中,导航到 HFS/Houdini/pic/ 文件夹,然后选择天空文件 DOSCH_SKIESV2_${F2}SN_lowres.rat。

    • #30930

      Hiの冰海豚
      参与者
      骑士

      四、Wave Tank 波浪水池工具

      从下方的海洋表面创建一个 FLIP 流体模拟。

      此工具会在用粒子创建一个 FLIP 水池模拟,这些粒子由带速度的海洋表面初始化。一个粒子边界层 boundary layer 会抑制水池边缘的反射,使海洋速度回到模拟状态,并保持水的体积平面匹配海洋。此边界层 boundary layer 还会在封闭的边界框 boundaries 应用海洋速度,允许 FLIP 模拟流入/流出。

      Wave Tank 可以是静态模拟,也可以跟随海洋中运动的物体。

      Ocean Spectrum 节点可以塑造模拟海洋的初始帧,Ocean Source 控制输出。

      注意

      默认情况下,有好几种海洋水池在 FLIP Solver 中使用了 Narrow Band 功能,如果我们想要传统的全水池,可以在 FLIP Object 中选择 Particle Field,改回来。

      使用 Wave Tank

      1. 点击 Ocean 选项卡上的 Wave Tank 工具,创建水池。

      2. 选择水池需要跟随的动画物体,按 <kbd>Enter </kbd>键确认。如果没有选中物体,Houdini 会提示我们放置一个静止的水池。

    • #30931

      Hiの冰海豚
      参与者
      骑士

      五、Beach Tank 沙滩水池工具

      创建一个沙滩 FLIP 流体模拟,有持续不断的波浪。

      Beach Tank 工具会创建一个波浪拍打海滩或其他浅水地形的 FLIP 水池模拟。此工具和 Wave Tank 很相似,不过不同的是,它可以使海洋速度沿着水池长度的某个方向渐降。随着水流变浅,速度的降低会使海浪自然破碎。此 FLIP 模拟使用 POP Advect By Volumes 节点持续为模拟添加渐变波浪速度。

      和 Wave Tank 一样,此工具会创建一个粒子边界层 boundary layer,抑制水池边缘的反射,使海洋速度回到模拟状态,并保持水的体积平面匹配海洋。默认情况下,该边界层沿着指定方向的体积最大处将被禁用。

      Ocean Spectrum 节点可以塑造模拟海洋的初始帧,Ocean Source 控制输出。

      使用 Beach Tank

      1. 点击 Ocean 选项卡上的 Beach Tank 工具,创建水池。

      2. 选择一个多变形物体,该多变形物体会被挤压作为主要的海滩碰撞体。如果不选择物体,Houdini 会自动创建一个默认的海滩物体。

    • #30932

      Hiの冰海豚
      参与者
      骑士

      六、Flat Tank 平静的水池工具

      创建一个带边界层的平静水池 FLIP 流体模拟。

      此工具创建的 FLIP 水池模拟和 FLIP Tank 工具很相似,不同的是,此工具会创建一个粒子边界层 boundary layer,抑制水池边缘的反射,并保持水平面。该边界层使水池跟踪运动物体,只在物体周围的区域模拟。

      注意

      默认情况下,有好几种海洋水池在 FLIP Solver 中使用了 Narrow Band 功能,如果我们想要传统的全水池,可以在 FLIP Object 中选择 Particle Field,改回来。

      使用 Wave Tank

      1. 点击 Ocean 选项卡上的 Flat Tank 工具,创建水池。

      2. 选择水池需要跟随的动画物体,按 Enter 键确认。如果没有选中物体,Houdini 会提示我们放置一个静止的水池。

    • #30933

      Hiの冰海豚
      参与者
      骑士

      七、Ocean Flat Tank 海洋平静水池工具

      从下方的海洋表面创建一个 FLIP 流体模拟。

      此工具会用粒子创建一个 FLIP 水池模拟,这些粒子由带速度的海洋表面初始化。粒子边界层 boundary layer 会抑制水池边缘的反射,使海洋速度回到模拟状态,并保持水的体积平面匹配海洋。此边界层 boundary layer 还会在封闭的边界框 boundaries 应用海洋速度,允许 FLIP 模拟流入/流出。

      Ocean Flat Tank 可以是静态水池,也可以跟随海洋中运动的物体。

      Ocean Spectrum 节点可以塑造模拟海洋的初始帧,Ocean Source 控制输出。

      注意

      默认情况下,有好几种海洋水池在 FLIP Solver 中使用了 Narrow Band 功能,如果我们想要传统的全水池,可以在 FLIP Object 中选择 Particle Field,改回来。

      使用 Ocean Flat Tank

      1. 点击 Ocean 选项卡上的 Ocean Flat Tank 工具,创建水池。

      2. 选择水池需要跟随的动画物体,按 Enter 键确认。如果没有选中物体,Houdini 会提示我们放置一个静止的水池。

    • #30935

      Hiの冰海豚
      参与者
      骑士

      八、WhiteWater 白水工具

      基于下方的 FLIP 流体模拟创建浪花、泡沫和漩涡🌀。

      此工具为白水模拟建立源和解算器。白水粒子是从源 FLIP 或 liquid 模拟中创建的,是基于流体加速度、曲率、涡度等多种规则计算得来的。该模拟使用这些来自流体模拟的粒子和体积,作为白水(泡沫、水花和气泡等)的发射源。

      小提示

      不要尝试从头创建白水模拟,建议使用白水工具。

      使用 Whitewater

      1. 点击 Particle Fluids 选项卡上的 Whitewater 工具。

      2. 选择一个 FLIP Fluid Objcet 或 Liquid Object(FLIP 流体物体或液体物体),按 Enter 完成选择。

      注意

      我们需要导航到包含流体物体的 DOP 网络中,然后选择它。

    • #83086

      这人身边有风
      参与者
      军士

      2021年来学习,谢谢大佬的翻译。

正在查看 13 条回复
  • 在下方一键注册,登录后就可以回复啦。
error: 提示:内容受到保护!!