2 个不稳定版本
使用旧版 Rust 2015
0.2.0 | 2018年12月22日 |
---|---|
0.1.0 | 2018年12月19日 |
#11 in #text-based
14KB
235 代码行
p3dtxt
将 MLOD P3D 转换为基于文本表示的工具。这允许使用针对文本文件的各种工具来分析和修改 P3D,并使解决合并冲突变得更容易。
文件格式
该格式是二进制格式的直接翻译。唯一的结构变化是将纹理和材质路径存储在查找表中,而不是为每个面单独存储。对于大多数模型,最终大小应小于二进制格式的 150%。
默认情况下,整数转换为十六进制,浮点数转换为十进制浮点数。在转换回时可能会引入一些轻微的舍入误差。为了避免这种情况,请传递 --lossless
选项以将浮点数也以十六进制形式存储。分辨率浮点数前有一个 0x
前缀以指示这一点。没有其他值有 0x
前缀。
即使进行无损转换,将转换为文本和转换回也可能引入一些细微的差异:MLOD P3D 中的面数据结构总是有足够的空间容纳 4 个顶点,即使面只有 3 个。这种填充不一定全是零(似乎是在对象构建器中重新排列或修改面时留下的旧数据)。由于这些信息无用,因此在转换为文本时会忽略它,并在转换回时用零替换。在转换为 ODOL 时也会丢弃,因此原始 P3D 和转换为文本再转换回的 P3D 应该产生相同的 ODOL P3D,无论这些差异如何。
以下是一个例子,这是来自 ACE 的 IV 包作为一个基于文本的文件:IV 包
用法
p3dtxt
Usage:
p3dtxt bin2txt [-l] [<source> [<target>]]
p3dtxt txt2bin [<source> [<target>]]
p3dtxt (-h | --help)
p3dtxt --version
Commands:
bin2txt Convert a regular MLOD P3D into a text-based one.
txt2bin Convert a text-based P3D back into a binary one.
Options:
-l --lossless Store floats as hex strings to prevent rounding errors.
-h --help Show usage information and exit.
--version Print the version number and exit.
有关更多信息,请参阅 p3dtxt --help
依赖项
~6–15MB
~194K SLoC