Alembic

以下摘自 Alembic 主页:

Alembic 是一个开放的计算机图形交换构架。Alembic 把复杂的、动画的场景提取为非程序化的、与处理软件无关的一套烘焙好的几何体。这种把场景'提取'为烘焙好的几何体的过程完全类似于把灯光和渲染场景提取成渲染出的图像数据。

Alembic专注于把复杂的程序化的几何体构建的计算结果进行高效的存储。非常明确的一点是,它 存储用来创建计算结果的复杂的程序化工具的依存关系。比如说,Alembic会高效地储存任意的复杂动画和模拟过程(包括包裹变形、形状校正、恒定体积模拟、布料和肌肉模拟,等等)所产生的动画的顶点位置和动画的变形。

TL;DR (简言之): Alembic可以把动画的网格写入硬盘,然后再迅速高效地读取出来。这意味着可以把需要巨大的CPU消耗的绑定动画的网格,'烘焙'到 Alembic文件里,然后再加载入镜头文件中进行贴图和灯光设置而只消耗较小的CPU使用量。

对 Alembic 文件格式的支持始于 Blender 2.78.

由于 Alembic 标准的开放性以及C++库文件的标准化, Blender可以用于混合的流程. 比如说,Houdini或者Maya这样的软件可以把文件输出为 Alembic格式, 然后在Blender中载入、贴图、渲染. 也可以在Blender中对角色(或者其它模型)赋予动画, 然后输出为 Alembic文件, 继而在其它软件中加载后进一步处理.

导出为 Alembic文件

此章节说明不同的输出选项的效果。

手动设置变换

../_images/pipeline_alembic_export-panel-scene-options.pngAlembic导出选项。

  • 比例
  • 设置Alembic文件的全局缩放值。使用缺省值1.0则采用Blender的单位。

场景选项

  • 起始和结束帧
  • 设置输出至 Alembic的帧范围。缺省使用当前场景的帧范围。
  • 次帧采样:变形和几何体采样,快门开、闭
  • 这些选项控制动画的次帧采样。 Transform Samples设置对每一帧进行动画变形的采样并写入Alembic的次数。Geometry Samples的设置与此相同,只是针对的是动画的几何体。 Shutter Open & Close(快门开、闭)规定了进行采样的 [开、闭] 间隔。有效范围为-1到1,其中-1指前一帧,1指后一帧。比如说,当需要详细的mesh运动模糊的信息时,以采样次数5、快门开设置为-0.25、快门闭设置为0.25对当前帧进行次帧采样并写入Alembic。这就模拟了一个180度的快门,在当前帧前开到90度,而在当前帧后关闭90度。
  • 仅选中物体
  • 选中此项时,只输出被选中的物体。否则输出所有物体。
  • 仅可渲染物体
  • 此选项很有用,比如用来避免输出自定义的骨骼形状。
  • 仅可见层
  • 输出的物体仅限于当前可见的场景层内。
  • 摊平层级
  • 不选此项时,将输出物体间的父/子关系。如果父物体本身不输出而自物体要被输出,则父物体以空物体代替。如果选中此项,则不输出父/子关系,所有的变形都按照世界坐标输出。

物体选项

../_images/pipeline_alembic_export-panel-object-options.png物体选项。

  • UV
  • 选中此项后,将输出UV。虽然Alembic标准只支持单个UV,Blender以可以被其它软件读取的方式输出所有的UV。
  • 拼排UV孤岛
  • 优化UV布局,生成无重叠的UV孤岛,以有效利用 纹理空间。 更多信息见相同原理的 拼排UV孤岛操作
  • 法向
  • 启用后,将输出物体的 法向
  • 顶点颜色
  • 选中此项时,将输出顶点颜色。此时只支持静态的顶点颜色,而不是动态的带动画的顶点颜色。
  • 面集合
  • 按面输出材质名称。仅导出材质名称,不导出材质数据。
  • 使用细分模式
  • 使用 "SubD" Alembic图表输出多边形网格,而非 "PolyMesh"图表,即告知程序打开文件时应用其非破坏细分。
  • 应用表面细分
  • 在输出Alembic前应用任何 表面细分修改器
  • 三角化
  • 在输出Alembic前对网格三角化。具体选项的更多细节见 三角化修改器

粒子系统

../_images/pipeline_alembic_export-panel-particle-systems.png粒子系统

Alembic不支持粒子系统,正如它不支持骨骼。毛发输出为带动画的零宽度曲线。粒子输出为带动画的点。