Alembic 文件导入器

这是尚处于开发阶段的实验性功能。一些方面可能无法正常使用,或会在未来版本中被修改。

Alembic 文件格式(.abc)是一种开放式电脑图像交换框架,可将带动画的复杂场景提炼为一套非过程、应用程序独立的烘焙几何图形结果。在虚幻引擎 4 中可通过 Alembic 导入器 导入 Alembic 文件。因此可在外部软件中自由创建复杂动画,然后导入 UE4 中进行实时渲染。

Alembic 文件的导入方式与其他形式的 内容导入 相似。

您可在 Animation Topics 上观看 Unreal Engine Live Stream,其中包含 Alembic 文件导入器:

导出 Alembic 缓存

选择从首选 DCC 包中导出 Alembic 缓存文件时,需要考虑一些选项:

选择 3D 软件

Autodesk Maya

Autodesk 3ds Max

  1. 基于个人需求,从 File Menu 中的 CacheAlembic Cache 下选择 Export All to Alembic...(或 Selection)。 Maya_01.png

  2. Export 窗口中的 Advanced Options 下启用 UV WriteWrite Face Sets 选项,然后点击 Export

    Maya_02.png

    如您计划在导出 UE4 时创建材质,则需要启用 Write Face Sets,因为材质基于找到的 Face Set Names 而创建。

  1. 点击 File Menu 下的 Export

    Max_01.png

  2. 指定保存路径并将存储类型改为 Alembic(*.ABC),然后 **保存**。

    Max_02.png

  3. 基于个人需求定义 Alembic 导入器选项。

    Max_03.png

    选项 描述
    File Format 较之于 HDF5,Ogawa 更新、更快、文件大小更小。
    Cache Time Range 和 Maya 相同(单个为一帧,活动的部分是用户设置的时间滑块和帧范围)。
    Every Nth Frame 允许跳帧(例如:2 可能代表 0-2-4-6-8-10 等。)

导入 Alembic 文件

将 Alembic 文件导入虚幻引擎 4:

  1. Content Browser 中,点击 Import 按钮并指向 .abc 文件。

    Import.png

  2. 将出现 Alembic Cache Import Options 窗口,定义导入方法/选项。

    Import03.png

    窗口上方的高亮处显示的是文件名和导入的源路径。 此外还显示了选择导入(或从导入过程中移除)的文件中资源的复选框选项。

导入为静态网格体

可在导入过程中定义导入内容的方式。Alembic Import Type 默认设为 Static Mesh

Import04_sm.png

将 Alembic 缓存导入为 静态网格体 时,只会将第一帧导入为一个或多个静态网格体。Alembic 动画的一个单帧将导入为一个静态网格体资源,并且不会应用动画。选择此导入方法时,可利用一些设置定义资源导入方式,如下所述。

采样选项

选项 描述
Sampling Type 导入动画时执行的采样类型。
选项 描述
Per Frame 根据导入数据对动画进行采样(默认选项)。
Per X Frames 以帧步长决定的给定间隔对动画进行采样。
Per Time Step 以时间步长决定的给定间隔对动画进行采样。
Frame Start 开始对动画进行采样的开始索引。
Frame End 停止对动画进行采样的终结索引。

静态网格体选项

选项 描述
Merge Meshes 导入时是否合并静态网格体(这可能引起重叠 UV 集的问题)。
Propagate Matrix Transformations 此项将在合并网格体之前应用矩阵变换到网格体(如适用)。

将 Alembic 文件导入为静态网格体时,如数据包含数个网格体,可选择 Merge Meshes,在虚幻引擎中将多个网格体合并为单个静态网格体。如取消勾选此项,Alembic 文件中的每个网格体将作为单独的静态网格体导入 UE4,不会合为一体。

启用 Merge Meshes 需要考虑另一个方面:合并网格体前是否 传播矩阵变换。这将采集 Alembic 文件中包含的变换数据并在合并时传播到网格体,使它们保留自身的变换数据。

思考下方创建的场景范例,它作为 Alembic 缓存导出。

MayaObjects.png

启用 Merge MeshesPropagate Matrix Transformations,将文件作为静态网格体导入 UE4 会得到以下效果:

ImportMesh1.png

如勾选 Merge Meshes 但不勾选 Propagate Matrix Transformations,会得到以下效果:

ImportMesh2.png

每个网格体在 0,0,0 原点合并。

法线计算选项

选项 描述
Force One Smoothing Group Per Object 是否为每个个体对象强制平滑法线而不计算平滑组。
Hard Edge Angle Threshold 用于确定两条法线之间的角度是否为硬角(越接近于 0,则越平滑)。
Recompute Normals 确定是否应强制重新计算法线。
Ignore Degenerate Triangles 确定计算切线/法线时是否应无视退化三角形。
法线计算方式

以下高阶概览讲述基于 导入类型 的法线计算方式和导入文件中法线的使用方式。

  • 导入包含所有帧法线的文件时:

    • 静态网格体/几何体缓存 - 使用现有法线。

    • 骨架网格体 - 第一帧的法线用于决定平滑组。平滑组将用于计算平均帧的法线和所有基础/变形目标(在所有情况下均如此操作)。

  • 导入只包含第一帧法线的文件时:

    • 静态网格体 - 如使用第 0 帧,则使用现有法线。否则将计算所请求帧的平滑组和法线。

    • 几何体缓存 - 计算所有帧的平滑组和生成的法线。

  • 导入不含法线的文件时:

    • 将计算非平滑法线,根据计算法线生成平滑组并通过平滑组重新计算法线。

启用 Recompute Normals 时,使用以上指定的路径(无法线)。

导入为 骨架网格体 时,如动画拥有较大的法线增量,法线可能不会正常显示。这是一个已知问题,由变形目标对面/顶点法线的调整方式所造成。作为解决方案,您可使用皮肤缓存功能(尚在实验阶段)避开这个问题。

如需启用此功能,在 ConsoleVariables.ini 文件中添加以下代码:

r.SkinCache.CompileShaders=1
r.SkinCache.Mode=1
r.SkinCache.RecomputeTangents=1

下次启动编辑器时便会重新编译着色器。打开骨架网格体资源时,您便可为每个材质/分段勾选 Recompute Tangent 选项。

平滑组计算方式

如导入的网格体出现硬边,则可能需要查看 硬边角度阈值 以及平滑组计算的执行方式。

1.0 Hard Edge Angle

0.0 Hard Edge Angle

要计算平滑组,先计算顶点/面法线,然后将它们用于查看一个特定面的所有相连面。通过计算法线之间的角度即可确定边是硬边或软边(与 Maya 中的软/硬边工具相似)。下方左图为软边,而右图为硬边。原因是左图中两条法线间的角度小于右图中两条法线间的角度。

NormalsExample.jpg

明确这点后,我们使用点积生成 0-1 之间的一个阈值,以定义边的软硬。例如,值靠近 1 则意味着大角度形成硬边,而值靠近 0 则说明存在的是软边。该信息将用于生成共享软边的法线的组。在这些组中,我们平滑面上的法线,形成平滑面。

强行设置每个对象一个平滑组将使每个个体对象完全平滑(全为软边)。

导入为几何体缓存

导入为 几何体缓存 时,将创建一种新型动画资源,以便播放顶点各不相同的序列。

Import04_gc.png

导入的 Alembic 动画将作为帧 flipbook 进行播放,性能将随网格体的复杂程度变化。

它应被视作一个实验性导入选项,可能无法在所有情况下拥有最佳效果。

这种导入方法的导入选项包括相同的 采样法线计算 选项,作为 静态网格体 导入选项。 导入为几何体缓存还可根据找到的 Face Set 名创建 材质(前提是必须在外部软件中定义好 Face Sets 并随 Alembic 缓存导入)。

当前版本中,几何体缓存不支持邻接缓冲。而进行曲面细分设置需要邻接缓冲。解决方法是将动画导入为带变形目标的 骨架网格体(这种导入方式压缩程度更高),即可支持曲面细分。

导入为骨架

这种导入法将 Alembic 文件导入为 骨架网格体,包含的基础姿势为变形目标,变形目标之间的混合则会形成正确的动画帧。 导入为骨架网格体是播放 Alembic 动画最有效方式(只要顶点数不发生变化)。

Import04_sk.png

在导入中,将使用 PCA 方案对动画序列进行压缩。在此计划中常规姿势(基础)被抽取和加权,构成播放时的原始动画。 导入为骨架网格体时,除 SampleNormal CalculationCreate Materials 选项外,还可定义百分比调整压缩等级(或基础使用的固定数)。

压缩选项

选项 描述
Merge Meshes 个体网格体是否应被合并,进行压缩。
Bake Matrix Animation 是否纯矩阵动画应被烘焙为顶点动画(或略过)。
Base Calculation Type 决定存储为变形目标的基础最终数的计算方式。
选项 描述
Percentage Based 确定结合给定百分比使用的基础数(默认选项)。
Fixed Number 设置导入的固定基础数。
Percentage (Max Number) of Total Bases

这将生成基础的给定(百分比或固定数)作为变形目标。

这是压缩等级比较重要的方面之一。 输入数量较低的基础将使动画获得更大程度的压缩,但可能丧失精细的动画细节。 相反,输入数量较多的基础将形成更小的压缩,但能保留更多的动画细节。

Minimum Number Of Vertex Influence Percentage

受影响顶点的最低百分比要求存在有效变形目标。

此设置可用于确定何时基于定义的影响百分比导入基础/变形目标。 例如有一个拥有 1000 个顶点的模型,其中一个基础只影响 10 个顶点。 如将此值设为 10,前文提及的基础/变形目标将不会被导入。