UDN
Search public documentation:

AnimationCompressionTechnicalGuideCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3主页 >动画 > 动画压缩技术指南

动画压缩技术指南


概述


在虚幻引擎 3 中使用动画压缩,这个过程非常简单易懂。这个文档介绍了主要类和相关的数据结构,同时还提供了如何使用和执行动画压缩的概要说明。

关于各种压缩算法的详细信息,请参照动画压缩算法页面。

有关预览和修改动画压缩的编辑器控件的信息,请参阅动画压缩页面。

重要术语


下面是在整个文档中使用的一些需要了解的重要术语:

  • Key - 一组定义某一特定时间一个单独骨骼的位置和旋转量的数据点。
  • Track - 描述单独的骨骼随着时间进行运动的一组关键帧。
  • AnimSequence - 一组定义构成整个骨架的全部骨骼的运动情况的轨迹。
  • AnimSet - 一组全部在同一个骨架上播放的相关动画序列。

关键帧压缩格式


接下来是有关每个压缩格式的说明,内部表示为 enum AnimationCompressionFormat。将这些枚举值赋给 UAnimSequence 的 TranslationCompressionFormat 和 RotationCompressionFormat 成员,并与 AnimSequence::CompressionScheme 成员相结合,表明已经在动画序列中使用哪些压缩和关键帧减少类型。在全精度情况下,将平移量存储为三维向量(3x32 位浮点数),而将旋转量存储为四元数(4x32 位浮点数)。注意,压缩算法的当前集合值可以压缩旋转量信息,不可以压缩平移量。

除 ACF_None 以外,以下格式只可以应用于旋转量专用数据: 对于所有格式,正规化四元数的 w 坐标是由虚构坐标衍生而来的,它的存储方法如下所示:

  • ACF_None - 存储平移量/旋转量全精度数据(3x32 位用于平移量,4x32 位用于旋转量)。
  • ACF_Float96NoW - 将旋转关键字的虚拟坐标存储为 3x32 位浮点数。
  • ACF_Fixed48NoW - 将旋转关键字的虚拟坐标存储为 3x16 位四元浮点数。
  • ACF_IntervalFixed32NoW - 存储旋转关键帧的虚构坐标,将 X 量化为 11 位,y 为 11 位,z 为 10 位,但是量化范围是重新映射到由这个轨迹的坐标值限定的间隔。
  • ACF_Fixed32NoW - 存储旋转量关键帧的虚构坐标,将 X 量化为 11 位,y 为 11 位,z 为 10 位。
  • ACF_Float32NoW - 将旋转量关键帧的虚构坐标存储为简化的精度浮点数;x 为 7e3,y 为 7e3,z 为 6e3。

在战争机器中,将动画导入到 30Hz 的引擎和使用删除每秒关键帧技术减少至 15Hz 的关键帧。战争机器将 ACF_Fixed48NoW 压缩作为广泛应用的解决方案(将虚构四元分量存储为 16 位不动点值)。大多数运动使用的都是 ACF_IntervalFixed32NoW 格式(其中虚构四元分量存储在 11-11-10 位不动点)。此外,将过场动画近拍中的一些选定运动存储为等比压缩没有损失的 ACF_Float96NoW 格式(将虚构四元分量存储为 32 位浮点数值)。

小结:

  • ACF_Float96NoW - 等比压缩无损失,劣质的压缩
  • ACF_Fixed48NoW - 中高质量,令人满意的压缩
  • ACF_IntervalFixed32NoW - 中等质量,优质的压缩

关键帧简化方案


关键帧简化方案是可以用于消除虚幻引擎 3 中的关键帧的算法。关键帧简化方案可以将存储在 RawAnimData 成员中的未使用动画数据变换为单独的 TranslationData 和 RotationData 流。这些新的流可以包含在未使用的数据中所存在的内容中的所有不同的关键帧。通常的方案可能会删除不需要的关键帧,重新采样现有的关键帧等等。然后会根据压缩格式部分中要求的平移和旋转格式压缩这些关键帧。

当前,下面是虚幻引擎 3 提供的关键帧简化方案:

  • Bitwise Compress Only - 没有执行关键帧简化 -- 换句话说,只是通过指定的按位压缩格式进行压缩。
  • Remove Trivial Keys - 会减少所有关键帧都是同一个值向下至某个单独关键帧的轨迹。
  • Remove Every Second Key - 可以删除每秒关键帧。
  • Revert To Raw - 通过不为按位压缩输出平移/旋转关键帧重新存储未使用的动画数据。