我最近涉足 DirectX 并且一直在使用 Anim8or 进行一些操作,并且发现了几种可以导出模型的基于文本的文件类型。我特别喜欢 VTX 文件。我已经学会了如何从中解析一些基础知识,但我显然遗漏了一些东西。
它以.Faceset
with is 开头(在同一行),后跟文件中的网格数。
对于每个网格,按顺序有一个.Vertex
部分和一个.Index
部分,第一对.Vertex
/.Index
部分是第一个网格,第二组是第二个网格,依此类推。
在文件的一个.Vertex
部分中,每行有 8 个数字和未定义的行数(除非您想相信 Anim8or 在该部分之前放置的注释,但这似乎不是文件规范的一部分,只是Anim8或善良)。前 3 个数字对应于稍后将用作顶点的特定点的 X、Y 和 Z 坐标,其他 5 个我不知道。大多数时候,最后两个数字都是 0,但我注意到这并不总是正确的,只是通常是正确的。
接下来是匹配.Index
部分。本节有 4 个数字。前 3 个是前面提到的顶点的参考编号,3 个点在模型中标记了一个三角形。0 表示第一个提到的顶点,1 表示下一个,依此类推,就像从零开始的数组。第四个数字似乎总是-1,我不知道它有什么重要性,我不能保证它总是-1。如果您无法确定,我对这种文件类型中的任何内容都不太确定。
我现在选择忽略文件中的其他信息,因为我是新手,不想让事情过于复杂。比如每一.Index
节之后是:
.Brdf
// Ambient color
0.431 0.431 0.431
// Diffuse color
0.431 0.431 0.431
// Specular color and exponent
1 1 1 2
// Kspecular = 0.5
// end of .Brdf
在我看来,这是关于刚刚描述的网格的表面。但是放置网格不需要它,所以我现在移过了它。
继续讨论真正的问题...当 VTX 文件中只有一个网格(即.FaceSet
1)时,我可以加载 VTX 文件。我几乎可以成功加载具有多个网格的 VTX 文件,每个网格都已成功构建,但相对于其他网格没有正确放置。我从论坛中的 Anim8or 线程下载了一个 AT-AT 模型,它由 344 个网格组成,当我仅使用我目前提到的规格加载文件时,看起来 AT-AT 好像爆炸了它是如何制作它的示意图(当在 Anim8or 中加载时,所有部件都很接近,类似于完全组装的 AT-AT)。所有的碎片都正确定向并且具有相同的向上方向,但是碎片之间有很多额外的空间。
有人知道如何正确读取 VTX 文件吗?或者知道一个可以解释其他数字含义的网站?
编辑:
文件扩展名 .VTX 用于许多不同的事情,并且根据预期用途具有许多不同的结构。Valve、Visio、Anim8or 和其他几个使用 VTX,我只对 Anim8or 导出的 VTX 文件及其使用的结构感兴趣。