Alembic 文件导入器
这是尚处于开发阶段的实验性功能。一些方面可能无法正常使用,或会在未来版本中被修改。
Alembic 文件格式(.abc)是一种开放式电脑图像交换框架,可将带动画的复杂场景提炼为一套非过程、应用程序独立的烘焙几何图形结果。在虚幻引擎 4 中可通过 Alembic 导入器 导入 Alembic 文件。因此可在外部软件中自由创建复杂动画,然后导入 UE4 中进行实时渲染。
Alembic 文件的导入方式与其他形式的 内容导入 相似。
您可在 Animation Topics 上观看 Unreal Engine Live Stream,其中包含 Alembic 文件导入器:
导出 Alembic 缓存
选择从首选 DCC 包中导出 Alembic 缓存文件时,需要考虑一些选项:
选择 3D 软件
导入 Alembic 文件
将 Alembic 文件导入虚幻引擎 4:
在 Content Browser 中,点击 Import 按钮并指向 .abc 文件。
将出现 Alembic Cache Import Options 窗口,定义导入方法/选项。
窗口上方的高亮处显示的是文件名和导入的源路径。 此外还显示了选择导入(或从导入过程中移除)的文件中资源的复选框选项。
导入为静态网格体
可在导入过程中定义导入内容的方式。Alembic Import Type 默认设为 Static Mesh。
将 Alembic 缓存导入为 静态网格体 时,只会将第一帧导入为一个或多个静态网格体。Alembic 动画的一个单帧将导入为一个静态网格体资源,并且不会应用动画。选择此导入方法时,可利用一些设置定义资源导入方式,如下所述。
采样选项
选项 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|
Sampling Type |
导入动画时执行的采样类型。
|
||||||||
Frame Start | 开始对动画进行采样的开始索引。 | ||||||||
Frame End | 停止对动画进行采样的终结索引。 |
静态网格体选项
选项 | 描述 |
---|---|
Merge Meshes | 导入时是否合并静态网格体(这可能引起重叠 UV 集的问题)。 |
Propagate Matrix Transformations | 此项将在合并网格体之前应用矩阵变换到网格体(如适用)。 |
将 Alembic 文件导入为静态网格体时,如数据包含数个网格体,可选择 Merge Meshes,在虚幻引擎中将多个网格体合并为单个静态网格体。如取消勾选此项,Alembic 文件中的每个网格体将作为单独的静态网格体导入 UE4,不会合为一体。
启用 Merge Meshes 需要考虑另一个方面:合并网格体前是否 传播矩阵变换。这将采集 Alembic 文件中包含的变换数据并在合并时传播到网格体,使它们保留自身的变换数据。
思考下方创建的场景范例,它作为 Alembic 缓存导出。
启用 Merge Meshes 和 Propagate Matrix Transformations,将文件作为静态网格体导入 UE4 会得到以下效果:
如勾选 Merge Meshes 但不勾选 Propagate Matrix Transformations,会得到以下效果:
每个网格体在 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 选项。
平滑组计算方式
如导入的网格体出现硬边,则可能需要查看 硬边角度阈值 以及平滑组计算的执行方式。
要计算平滑组,先计算顶点/面法线,然后将它们用于查看一个特定面的所有相连面。通过计算法线之间的角度即可确定边是硬边或软边(与 Maya 中的软/硬边工具相似)。下方左图为软边,而右图为硬边。原因是左图中两条法线间的角度小于右图中两条法线间的角度。
明确这点后,我们使用点积生成 0-1 之间的一个阈值,以定义边的软硬。例如,值靠近 1 则意味着大角度形成硬边,而值靠近 0 则说明存在的是软边。该信息将用于生成共享软边的法线的组。在这些组中,我们平滑面上的法线,形成平滑面。
强行设置每个对象一个平滑组将使每个个体对象完全平滑(全为软边)。
导入为几何体缓存
导入为 几何体缓存 时,将创建一种新型动画资源,以便播放顶点各不相同的序列。
导入的 Alembic 动画将作为帧 flipbook 进行播放,性能将随网格体的复杂程度变化。
它应被视作一个实验性导入选项,可能无法在所有情况下拥有最佳效果。
这种导入方法的导入选项包括相同的 采样 和 法线计算 选项,作为 静态网格体 导入选项。
导入为几何体缓存还可根据找到的 Face Set 名创建 材质(前提是必须在外部软件中定义好 Face Sets 并随 Alembic 缓存导入)。
当前版本中,几何体缓存不支持邻接缓冲。而进行曲面细分设置需要邻接缓冲。解决方法是将动画导入为带变形目标的 骨架网格体(这种导入方式压缩程度更高),即可支持曲面细分。
导入为骨架
这种导入法将 Alembic 文件导入为 骨架网格体,包含的基础姿势为变形目标,变形目标之间的混合则会形成正确的动画帧。 导入为骨架网格体是播放 Alembic 动画最有效方式(只要顶点数不发生变化)。
在导入中,将使用 PCA 方案对动画序列进行压缩。在此计划中常规姿势(基础)被抽取和加权,构成播放时的原始动画。 导入为骨架网格体时,除 Sample、Normal Calculation 和 Create Materials 选项外,还可定义百分比调整压缩等级(或基础使用的固定数)。
压缩选项
选项 | 描述 | ||||||
---|---|---|---|---|---|---|---|
Merge Meshes | 个体网格体是否应被合并,进行压缩。 | ||||||
Bake Matrix Animation | 是否纯矩阵动画应被烘焙为顶点动画(或略过)。 | ||||||
Base Calculation Type |
决定存储为变形目标的基础最终数的计算方式。
|
||||||
Percentage (Max Number) of Total Bases |
这将生成基础的给定(百分比或固定数)作为变形目标。 这是压缩等级比较重要的方面之一。 输入数量较低的基础将使动画获得更大程度的压缩,但可能丧失精细的动画细节。 相反,输入数量较多的基础将形成更小的压缩,但能保留更多的动画细节。 |
||||||
Minimum Number Of Vertex Influence Percentage |
受影响顶点的最低百分比要求存在有效变形目标。 此设置可用于确定何时基于定义的影响百分比导入基础/变形目标。 例如有一个拥有 1000 个顶点的模型,其中一个基础只影响 10 个顶点。 如将此值设为 10,前文提及的基础/变形目标将不会被导入。 |