我正在尝试从 fbx 文件中获取顶点位置数据,为了测试我使用的是一个简单的平面,它位于 xz 平面中,它的 4 个顶点是(+/-1、0、+/-1)。顶点数据在我用来导出平面的 Maya 中确认。
这是我的顶点提取代码:
void getVertices()
{
foreach (ModelMesh mesh in model.Meshes)
foreach (ModelMeshPart part in mesh.MeshParts)
{
nVerts = part.NumVertices;
Vector3[] vec = new Vector3[nVerts * 2];
part.VertexBuffer.GetData<Vector3>(vec);
Console.WriteLine("#Vertices in Model: " + nVerts);
for (int i = 0; i < vec.Length; i++)
{
Console.WriteLine(i + " " vec[i].ToString());
}
}
}
由于有 4 个顶点,我得到 8 个 Vector3,每个顶点位置 1 个,每个顶点法线一个。对于飞机来说,大多数是正确的(我一开始使用了更复杂的模型,但不太准确)。
结果如下:所有法线都应指向 Y 方向。
点数:(1,0,-1) (1,0,1) (1,0,1) (-1,0,1)
法线 (0,1,0) (0,1,0) (1,-1,0) (0,0,0)
第三点,(与第二点相同)和最后的2个法线是错误的。我不知道为什么我没有得到正确的数据。我尝试增加 vector3 数组,但它只有 8 个要发送的向量,所以我认为我没有遗漏任何信息。