海洋修改器

海洋 修改器是一个海洋模拟工具,用于模拟和生成变形的海洋表面以及相关纹理,用于渲染模拟数据。 它旨在模拟深海波浪和泡沫.

这是一个来自开放源码 Houdini Ocean Toolkit 的端口。

选项

../../../_images/modeling_modifiers_simulate_ocean_panel.png海洋修改器。

几何数据

  • 几何数据
    • 生成
    • 创建与模拟数据的分辨率完全对应的平铺网格栅格.

生成网格曲面时,现有的网格对象将被海洋网格完全覆盖。 还添加了UV通道,将(0.0到1.0)UV空间映射到模拟网格。

  1. - X方向重复,Y方向重复
  2. - 控制网格在XY方向平铺的次数。这些平铺网格区域的UV值(0.01.0)延续出UV空间。
  • 置换
  • 使用现有几何体而不是替换它。 顶点沿自身Z轴平移。
    • 时间
    • 海洋表面被评估的时间。要创建一个海洋动画,您需要对这个值 插入关键帧 。时间值变化的速度将决定波动动画的速度。
    • 深度
    • 即模拟区域下方的洋底的恒定深度。 较低的值模拟较浅的水但是波浪更细密。
    • 随机种
    • 不同的 种子 将产生不同的模拟结果。
    • 分辨率
    • 这是模拟引擎的速度与品质的关键控制点,它决定了由模拟生成的内置二维网格面的精度。

内部网格是分辨率值的二次幂,因此分辨率值为 ”16“ ,将创建大小为 “256×256” 的模拟数据。 分辨率越高,产生的细节就越多,但计算得越慢。

Note

使用 生成 修改器几何体选项时,此分辨率值还决定生成的网格曲面的分辨率,等于内部模拟数据的分辨率。

  • 尺寸
  • 一个简单的缩放因子,不影响波的高度或模拟的行为。
  • 空间尺寸
  • 模拟海洋表面区域的宽度,以米为单位。 这也决定了生成的网格或位移区域的大小。 当然,您可以在物体模式中的 海洋 修改器缩放对象,以调整场景中的外观尺寸。

波浪

  • 翻滚度
  • 波峰的翻滚程度。当翻滚度值为0时,海洋表面只是在Z方向上做上下置换。而较高的翻滚度值则会让波浪产生X向与Y向的置换效果,来产生较为尖锐的波峰效果。
  • 比例
  • 波振幅的总体尺度控制。它近似于0以上或以下波浪的高度或深度。

它不只是在Z向缩放海洋对象,而是缩放模拟的各个方面,X和Y的位移,以及相应的泡沫和法线。

  • 对齐
  • 由风引起的波浪形状的方向性。在值为0时,风和波是随机的,方向一致。

随着更高的 对齐 值,风吹向一个更恒定的方向,使波浪看起来更压缩和对齐到一个单一的方向。

  • 方向
  • 当使用 对齐 时,波浪对齐到的角度方向(使用自身X轴作为参考)。
  • 阻尼
  • 当使用 对齐 时,这将定义相互反射波的阻尼量。这样做的效果是使波的运动更有方向性(不仅仅是波的形状)。

阻尼 为0.0时,波会在各个方向相互反射,当 阻尼 为1.0时,这些相互反射的波会被阻尼抵消掉,只留下沿风的方向传播的波。

  • 最小波浪
  • 指定所生成波浪尺寸的下限。与低通滤波器功能相仿,这会将高频波浪的细节移除。
  • 风速率
  • 风速以米/秒为单位。风速较低时,表面会形成会相应较小的波浪。

模拟数据生成选项

../../../_images/modeling_modifiers_simulate_ocean_foam-layer-name.png使用指定数据层的泡沫顶点颜色。

默认情况下,模拟器只会生成置换数据,因为这样的工作量最小,也会获得最迅捷的反馈。附加的模拟数据也可以为渲染而生成。

  • 生成法线
  • 模拟其他法线贴图数据。

当映射到法线时,这可以用于海洋纹理。在烘培时作为凹凸贴图,并支持生成法线贴图图像序列。

  • 生成水沫
  • 模拟其他泡沫数据。

这可以通过海洋纹理获取,用于纹理创建(可能作为遮罩),并允许在烘培时生成泡沫映射图像序列。

  • 覆盖范围
  • 调整覆盖波浪的泡沫量,负值将减少泡沫量(仅留下最高的顶峰),正值将增加。 通常其范围从(-1.0到1.0)。
  • 水沫数据层名称
  • 顶点数据层的可选名称,由海洋修改器用于将泡沫贴图存储为顶点颜色。 这是访问渲染器中的泡沫数据所必需的.

烘焙

与其实时模拟海洋数据,不如将数据烘培到给定目录中的文件中。当模拟完成后,模拟器引擎将被完全绕过,修改器/纹理将从烘培文件中检索所有信息。

烘焙具有以下几方面的优势:

  • 调用已存储数据要比重新计算更快。
  • 允许使用外部渲染器对海洋数据进行渲染。
  • 允许使用更为高级的水沫贴图.

数据文件

模拟数据作为 OpenEXR 图像映射的序列存储在硬盘上,每个图像映射对应位移,法线和泡沫(如果能够生成)。 在从这些烘焙文件加载数据时,当从硬盘读取烘焙序列的帧时,它被缓存在内存中。 这意味着随后访问加载的帧很快,不会产生硬盘访问的开销.

由于这些烘焙文件只是普通 OpenEXR ,所以它们也可以在支持它们的任何其他应用程序或渲染器中打开和渲染.

烘焙水沫

烘培还提供改进的泡沫能力。 在实时模拟时,海洋模拟器仅检索当前帧的数据。 在泡沫映射的情况下,这代表给定帧的波峰顶端。 实际上,在通过波浪相互作用产生泡沫之后,它会在波浪表面的顶部保持一段时间,因为它会消散。 通过烘培,可以通过累积前一帧中的泡沫使其保持在表面上来近似该行为。

烘焙选项

  • 开始,结束
  • 用于烘焙模拟的帧范围(包括首尾)。当从烘焙范围外进行烘焙时,始帧与末帧将被重复执行烘焙操作。
  • 缓存路径
  • 烘焙的EXR文件的存储路径。序列格式为 disp####.exr , normal####.exr , and foam_####.exr ,这里的 #### 代表四位数的帧数值。如果缓存路径文件夹不存在,将创建一个新的。

内置模拟

模拟器本身使用FFT方法在内部生成模拟信息的2D网格,非常类似于2D纹理贴图。 模拟器可以生成三种类型的数据:位移,法线和额外数据,用于计算波峰交叉点(即泡沫)。 模拟后,这些图用于在3D中移动海洋表面几何体,也可用于通过海洋纹理进行着色。 内部模拟引擎采用OpenMP多线程,以利用多个内核。

例子

在Blender中模拟和烘焙图像映射,在3Delight渲染。