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 つあるため、頂点位置ごとに 1 つ、頂点法線ごとに 1 つ、計 8 つの Vector3 を取得します。飛行機の場合、ほとんどが正しいです (最初はより複雑なモデルを使用しましたが、精度は低くなりました)。
結果は次のとおりです。すべての法線が 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)
3 番目のポイント (2 番目と同じ) と最後の 2 つの法線が間違っています。正しいデータを取得できない理由がわかりません。vector3 配列を増やしてみましたが、送信するベクトルが 8 つしかないため、情報が欠落しているとは思いません。