我正在尝试对来自较旧的俄罗斯游戏 (Pathologic) 的模型格式进行逆向工程,但收效甚微。这是任何转换器/编辑工具都无法识别的专有模型格式(相信我,我已经尝试过!粉丝论坛上的某个人也向引擎背后的人证实了这一点)。我希望能够将模型读入原始引擎的潜在开源娱乐。原始游戏使用 Direct3D 并且是 2005 年的,所以我阅读了相关文档以开始使用。不幸的是,它不是“x”模型格式。
到目前为止我所拥有的(对于一个简单的网格):
- 纹理文件名/位置
- 面数和顶点数
- 每个顶点的 UV 坐标
- 顶点缓冲区
我难以理解的事情(最不重要)
文件头:这可能是什么意思?
文件中的“任意”填充:什么可以决定其大小?
12 元素浮点矩阵。可能是没有最后一行的变换矩阵 - 与齐次坐标系一起使用,但是在具有 4 个顶点和 2 个面的网格中有 6 个矩阵 - 是不是太多了?
描述每个顶点的神秘 4 个字节:某种颜色格式?
重复多次的 3 个 32 位浮点数的神秘集合 - 它可能是什么?
顶点法线可以存储在哪里?
附件是一个非常简单的网格(小于 1kB),我正在研究更复杂的网格。我相信它是一个简单的纹理平面。我已经开始使用 XY 平面中的类似网格,这个网格似乎更加随意。由于它是一个平面,我假设它有 4 个顶点和 2 个面。
据我所知文件的结构
- 0x00 处的标头。
- 纹理文件名长度为 0x11(此处为 16 个字符)
- 1 字节填充
- 纹理文件名 (h2_door_DXT1.tex)
- 1 字节填充
- 0x23 处的顶点数(4 个顶点)
- 0x27 处的面数(2 个面)
- 12 字节的循环 3x 4 字节浮点数(第一次出现)
- 神秘漂浮物
- 12 字节的重复 3x 4 字节浮点数(第二次出现)
- 12 元素浮点矩阵(转换矩阵?)
- 73 字节的未知数据
- 12 字节的重复 3x 4 字节浮点数(第三次出现)在 0xC0
- 0xCC 处四个顶点的数据。对于每个顶点,X、Y、Z 坐标有 3 个 int16,然后是 4 个神秘字节,最后是 UV 坐标的 2 个 32 位浮点数。
- 0x114 处的顶点缓冲区。两个三角形描述,每个三角形的顶点 ID 有 3 个 int16。
之后,它变成了 12 元素浮点矩阵和重复出现的 3x 浮点的混合体,它们之间有一些填充/幻数。
我很感激所有帮助回答我的问题/帮助解决我正在努力解决的要点。我还可以根据需要提供其他网格示例。
