使用 Animation Bake¶
使用 Animation Bake 将 FBX 模型中的骨骼动画烘焙到 EXR 纹理中,并生成相应的 JSON 配置文件。
播放期间,材质根据动画进度从纹理中采样骨骼变换,并在顶点着色器中对网格进行蒙皮。这样可以减少 CPU 处理以及向 GPU 的数据传输,但会占用额外的显存。动画精度取决于纹理分辨率。
您可以使用起始帧和结束帧定义多个动作,例如待机、行走和转身。该工具会将已启用的动作写入动画纹理,并记录每个动作的帧范围,以便在回放时选择。
点击 Start Bake 后,该工具会烘焙动画、导入资源,并将网格添加到 Prefabs。该工具还会为网格设置材质、材质属性和 EXR 图像。
回放材质¶
该工具提供两种支持骨骼动画纹理的材质:
材质 (Material) |
描述 (Description) |
|---|---|
VertexPhongSkinnedSkeletonAnimation |
使用冯氏 (Phong) 光照的骨骼动画材质。 |
PhysicallyBasedSkinnedSkeletonAnimation |
使用基于物理的渲染的骨骼动画材质。 |
这两种材质都通过动画纹理和剪辑属性控制骨骼动画。请根据工程的光照和外观要求选择材质。如果手动更改材质,请检查动画纹理和回放属性是否仍正确关联。
前提条件¶
烘焙骨骼动画之前:
准备一个包含蒙皮模型和动画的 FBX 文件。
在建模工具中检查动画。确保网格变形、位置、朝向和缩放符合预期。
确保需要蒙皮的顶点具有有效的骨骼权重。动画回放最多支持每个顶点受四根骨骼影响。
确定要导出的动作名称和帧范围。
确保工程可以写入烘焙输出目录。
对于不需要骨骼变形的几何体,请使用适合其用途的网格和材质配置。
打开该工具¶
要打开 Animation Bake,在 Kanzi Studio 主菜单中选择 Tools > Animation Bake。
该窗口包含模型列表、动画剪辑列表、动作配置表和烘焙选项。
用户界面¶
模型和动画剪辑¶
控件 |
描述 (Description) |
|---|---|
Load FBX |
加载 FBX 文件。 |
Remove FBX |
从工具列表中移除选定的 FBX 模型。 |
FBX Models |
列出已加载的模型。选择一个模型可查看其动画剪辑。 |
Animation Clips |
列出选定模型的动画剪辑,用于创建动作。 |
动作配置¶
点击 Add Action 可向 Action Config 添加动作。使用表格中的字段指定动作名称、帧范围以及是否导出该动作。
字段 |
描述 (Description) |
|---|---|
Model |
包含该动作的模型。 |
Clip |
该动作的源动画剪辑。 |
Action Name |
导出的动作名称。请使用易于识别的名称,例如 |
Start Frame |
动作的第一帧(包含该帧)。 |
End Frame |
动作的最后一帧(包含该帧)。 |
Export |
是否在当前烘焙中包含此动作。 |
Delete |
删除此动作配置。 |
删除动作配置与移除源模型是不同的操作。烘焙之前,请检查剩余的动作配置及其 Export 状态。
烘焙选项¶
控件 |
描述 (Description) |
|---|---|
Trim static frames |
检查并裁剪动作开头和结尾处重复的静态帧,以减少存储的动画数据。 |
Start Bake |
烘焙已启用的动作配置,并将相关资源导入工程。 |
烘焙骨骼动画¶
加载模型¶
要加载 FBX 模型:
单击 Load FBX。
选择要处理的 FBX 文件。
在 FBX Models 中选择您加载的模型。
在 Animation Clips 中查看该模型的剪辑。
如果没有可用的动画,请检查 FBX 是否包含动画和有效的骨骼绑定。
创建动作¶
要从动画剪辑创建动作:
在 Animation Clips 中选择源动画剪辑。
单击 Add Action。
在 Action Config 中,将 Action Name 设置为您要导出的名称。
设置 Start Frame 和 End Frame。
为该动作启用 Export。
重复这些步骤以创建其他动作。
结束帧必须大于或等于起始帧。该范围必须位于源动画的有效范围之内。
两个端点均包含在内。不进行裁剪时,帧数为:
Action frame count = End Frame - Start Frame + 1
例如,以下配置将一条时间线划分为两个动作:
Action Name |
Start Frame |
End Frame |
Export |
|---|---|---|---|
Idle |
0 |
29 |
已启用 (Enabled) |
Walk |
30 |
89 |
已启用 (Enabled) |
Idle 包含 30 个采样帧,Walk 包含 60 个采样帧。这些范围仅为示例,请根据您的动画设置范围。
设置静态帧裁剪¶
要移除动作开头和结尾处重复的静态帧,请启用 Trim static frames。
启用后,该工具会检查动作开头和结尾处重复的骨骼姿势,并在适用时减少存储的帧数。裁剪会更新动作的起始行、帧数和持续时间信息。
备注
如果开头或结尾的停顿属于预期时序的一部分,请禁用此选项。此选项只修剪动作边界处的静态帧,不会修剪动作内部的停顿。
开始烘焙¶
要烘焙需要导出的动作:
检查所有动作的名称和帧范围。
确保至少为一个动作启用了 Export。
点击 Start Bake。
该工具为每个采样帧计算骨骼变换,并生成 EXR 和 JSON 文件。
在 Log 中检查处理消息和烘焙结果。
查看生成的资源¶
预设件 (Prefabs)¶
烘焙完成后,网格会被添加到 Prefabs 中。该工具会自动配置:
骨骼动画回放材质。
回放所需的材质属性。
对应的 EXR 动画图像。
在 Prefabs 中找到生成的模型,将其添加到场景中,然后检查其外观和动画回放。
输出文件¶
该工具将生成的文件保存在:
Tool_project\Bake\Animation Bake
文件类型 |
内容和用途 |
|---|---|
|
为回放材质存储每帧的骨骼矩阵。 |
|
存储动画和纹理配置,用于查看、验证和使用烘焙结果。 |
请使用相互匹配的 EXR 和 JSON 文件。重新烘焙或更改动作范围后,请使用新生成的资源和配置。
日志和 JSON¶
在 Log 中查看烘焙过程和相关数据。如需进一步验证,请打开对应的 JSON 文件,检查动作名称、片段帧数、起始行和纹理尺寸。
启用静态帧修剪时,请使用生成的配置。不要继续使用修剪前的帧数和起始行。
材质属性参考¶
该工具会自动配置动画纹理属性。使用此参考检查结果,或通过应用程序逻辑控制回放。
纹理属性¶
属性 (Property) |
描述 (Description) |
|---|---|
SkeletonAnimationSkinningBoneTexture |
存储骨骼变换的动画纹理。 |
SkeletonAnimationBoneCount |
烘焙的骨骼数量。 |
SkeletonAnimationTextureWidth |
纹理的完整宽度(以像素为单位)。 |
SkeletonAnimationTextureHeight |
纹理的完整高度(以像素为单位)。 |
SkeletonAnimationTextureSpritePosX |
动画数据区域的水平起始位置(以像素为单位)。对于独立的输出纹理,初始值为 |
SkeletonAnimationTextureSpritePosY |
动画数据区域的垂直起始位置(以像素为单位)。对于独立的输出纹理,初始值为 |
动画纹理存储的是数值数据。请保留有效的浮点数据,避免会改变矩阵值的颜色转换或有损处理。
剪辑属性¶
属性 (Property) |
描述 (Description) |
|---|---|
SkeletonAnimationClipStartRow |
当前动作相对于动画数据区域的起始行。 |
SkeletonAnimationClipFrameCount |
当前动作中存储的采样帧数。 |
SkeletonAnimationClipProgress |
当前动作的播放进度,范围为 |
播放和切换动作¶
播放动作¶
要播放动作:
从生成的配置中获取目标动作的起始行和帧数。
设置 SkeletonAnimationClipStartRow 和 SkeletonAnimationClipFrameCount。
将 SkeletonAnimationClipProgress 设置为
0.0。使用属性动画或应用程序逻辑,在所需的持续时间内将进度从
0.0更新到1.0。
进度 0.0 显示第一帧,1.0 显示最后一帧。中间进度会在相邻采样帧之间对骨骼矩阵进行插值。
暂停和循环¶
要暂停动画,请停止更新进度并保持其当前值。
要重新播放动画,请将进度设置为
0.0,然后重新开始更新进度。要循环播放动画,请在到达末尾后从
0.0重新开始。过渡效果取决于源动作的第一个姿势和最后一个姿势是否一致。
数据布局和限制¶
每个骨骼矩阵占用四个像素,每个采样帧占用一行。单独烘焙的纹理具有以下维度:
Texture width = Bone count × 4
Texture height = Sum of stored frame counts for all exported actions
例如,78 个骨骼和总共 300 个存储帧会生成 312 × 300 的纹理。
骨骼和帧越多,纹理尺寸越大。烘焙前,请仅启用所需的动作,并根据播放要求设置帧范围。