XGen 使用 XPD 文件进行按基本体的数据烘焙。此格式专门用于数以千计(如果不是数百个)基本体需要存储值的情况。该格式会为空间节省带来压力,但可提高读取性能。尽管写入文件的速度很慢,但性能肯定调整为最佳的读取性能。
XPD 文件分成四个主要部分:标头、面、块和基本体。标头包含描述文件内容的数据。它的布局方式如下所示:
紧随在标头之后的是基本体数据。数据按面顺序分布(正如标头所定义)。在每个面中,数据按块顺序分布(正如标头所定义)。每个块必须按正确的顺序显示在每个面中。基本体放置在块中。基本体本身只是一个浮点型向量。写入器提供该向量,它知道数据的顺序以及如何将其展开。读取器一次读取一个基本体,然后使用基本体版本了解如何展开数据。每个面或每个块没有标头。实际上,在文件标头后,文件是恒定的基本体数据流。
读取文件时,您必须找到所需的面和块,然后按顺序读取基本体。读取所需的所有基本体后,可以查找下一个块并读取与前一个块匹配的基本体数据。块结构允许应用程序(如 Paint3d)从一个块(例如,Location)中导出 XGen 所需的数据,然后将所需的数据导出到其自己的块(例如,PointCloud)中。然后,XGen 可以只读取所需的数据,轻松地跳过其他数据。此外,两个应用程序都可以拥有各自的数据格式,不必彼此进行协商。
有几个程序可用来帮助使用 XPD 文件。其中一个是 xpd2txt。该程序会将 XPD 文件中的二进制数据转化为易于读取的文本格式。它还可用于将数据转换为随后可由生产脚本进行解析和使用的格式(例如,将数据转换为 Inventor 格式,或将其读入到 Maya 中)。另一个程序是 xpdcmp,它可以比较两个 XPD 文件以验证它们是否相同。该程序会比较文件的内容,其中包含面数、块数、关键帧数、基本体数等,但是不比较实际的基本体值。因此,它可用于验证文件彼此是否“兼容”,但不能用来查看文件是否完全相同。
以 XGen 源代码的形式提供了五个示例,演示如何读取和写入保存“点”(Point)类型的基本体的 XPD 文件。这种文件也称为 XUV 文件。通常,此类型的文件在 Paint3d 中创建,用于驱动基本体位置(例如,使用 PointGenerator)或束位置(即,通过成束 FX 模块)。
可以在以下 Maya 安装目录找到这些示例:C:\Program Files\Autodesk\Maya<version>\plug-ins\xgen\devkit\xpdSamples。
另一种特殊类型的 XPD 文件是针对 Paint3d 消耗的曲线/导向文件。这是一种较轻的文件,包含每个基本体的 ID、U、V 和 CV,但不包含 Paint3d 不需要的其他任何 XGen 烘焙信息。这种较轻的格式允许 Paint3d 使用无需担心对 XGen 的烘焙格式进行更改即可加载的格式。通过检查块并查找一个称为“Paint3d”的块可以检测到此格式。