海洋修改器

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

海洋修改器 来自于开源 Houdini 海洋工具包( the open source Houdini Ocean Toolkit).

选项

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

几何数据

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

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

  • 置换
  • 使用现有几何体而不是替换它。 顶点沿自身Z轴平移.
    • 重复X,重复Y
    • 生成网格曲面时,控制网格在X和Y方向上平铺的次数。 这些平铺网格区域的UV继续在(0.0到1.0)UV空间之外.
    • 时间
    • 被求值的海洋表面的时间。 要制作动态的海洋,您需要插入关键帧 RMB 并为此时间值设置动画。 时间值变化的速度将决定波浪动画的速度.
    • 深度
    • 即模拟区域下方的洋底的恒定深度。 较低的值模拟较浅的水但是波浪更细密。
    • 随机种
    • 不同的种子导致不同的模拟结果。
    • 分辨率
    • 这是模拟引擎的速度与品质的关键控制点,它决定了由模拟生成的内置二维网格面的精度。

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

Note

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

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

波浪

  • 翻滚度
  • 波峰的翻滚程度。当值为0时,海洋表面只是在Z方向上做上下置换。而较高的翻滚度值则会让波浪产生X向与Y向的置换效果,来产生较为尖锐的波峰效果。
  • 比例
  • 这是对波幅的总体缩放控制。它能够通过正负值控制波浪的高度或深度。它不仅能够对洋面物体进行Z向缩放,而且可以对各个模拟面进行缩放,包括X与Y向的置换,以及对应的水沫与法线。
  • 对齐
  • 它控制着波形随风而动的方向性。当值为0时,风和波浪的面向是随机而均匀的。定向值越高,则风吹的方向就越恒定,这使得波浪看起来在单一方向上更扁平,更对齐。
  • 方向
  • 当使用Alignment(对齐)时,它指定的是波浪所对齐的方向。
  • 阻尼
  • 使用对齐时,这将定义相互反射波衰减的量。 这具有使波浪运动更具方向性的效果(不仅仅是波浪形状)。 当阻尼为0.0时,波在每个方向上相互反射,阻尼为1.0,这些相互反射的波被衰减,只留下沿风向传播的波.
  • 最小波浪
  • 指定所生成波浪尺寸的下限。与低通滤波器功能相仿,这会将高频波浪的细节移除。
  • 风速率
  • 以米/秒为单位的风速。风速较低时,表面会形成会相应较小的波浪。

模拟数据生成选项

../../../_images/modeling_modifiers_simulate_ocean_foam-layer-name.png将泡沫顶点颜色与命名的数据层一起使用.

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

  • 生成法线
  • 用来模拟附加的法线贴图数据。当贴图作为凹凸贴图映射到法线时,并在烘焙的时候启用了生成法线贴图图像序列时,它可以被Ocean(洋面)纹理调用。
  • 生成水沫
  • 用来模拟附加的水沫数据。在烘焙的时候启用了生成法线贴图图像序列时,可以被Ocean Texture(洋面纹理)调用并作为纹理使用(可能用作蒙板)。
  • 范围
  • 调整覆盖波浪的泡沫量,负值将减少泡沫量(仅留下最高的顶峰),正值将添加它。 通常范围从(-1.0到1.0).
  • 水沫数据层名称:
  • 顶点数据层的可选名称,由海洋修改器用于将泡沫贴图存储为顶点颜色。 这是访问渲染器中的泡沫数据所必需的.

烘焙

海洋数据不仅可以进行实时模拟,而且可以被烘焙到硬盘上。当对模拟进行烘焙时,模拟器引擎完全不发挥作用,同时,修改器/纹理会从烘焙文件中获取全部信息.

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

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

数据文件

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

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

烘焙水沫

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

烘焙选项

  • 开始 / 结束
  • 这里设定的是用于烘焙(包括)模拟的帧范围。当从烘焙范围外进行烘焙时,始帧与末帧将被重复执行烘焙操作。
  • 缓存路径
  • 指定了所烘焙的EXR文件的存储路径。序列格式为disp####.exr,normal####.exr,以及foam_####.exr,这里的####代表四位数的帧数值。如果窜出路径文件夹不存在,将会被新建。

内置模拟

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

例子

在Blender中模拟和烘焙贴图,在3Dlight里面渲染。 历史 History模拟器的核心开发者是Drew Whitehouse,源自 Houdini Ocean Toolkit。由Hamed Zaghaghi转换为C语言并集成在Blender 2.4系列的一个补丁中,由ProMotion Studios/Red Cartel在短片《Lighthouse(灯塔)》的制作过程中提供资助。在此项目中,Matt Ebb将核心模拟器再次引入到Blender 2.5版本中,同时增加了功能,并进行了修复与优化。由'Save the Ocean Sim(拯救洋面模拟器)'项目提供资助。