Liebe Leser
Ich habe ein Problem mit Assimp. Es Importiert Normalvektoren falsch. Ich laden .3ds damit.
Wenn ich in AC3D eine Kugel erstelle, deren Normalvektoren nach außen zeigen, (korekt)
zeigt mir meine Anwendung, dass die Normalvektoren nach innen zeigen. (falsch)
Ich muss die Normalvektoren immer umkehren (flipp normal), damit sie später korrekt angezeigt werden.
Die Positionsdaten werden auch irgendwie vertauscht. Ich weiß nicht woran das liegt.
Siehe Bilder im Anhang
Bild1 -> Ac3D
Bild2 -> Meine Anwendung.
Hier ist die Schleife, die die Infos lädt.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
for(int v = 0; v < mp_Mesh[m].mpMesh->mNumVertices; v++)
{
SVERTEX Vertex;
Vertex.Pos.x = mp_Mesh[m].mpMesh->mVertices[v].x;
Vertex.Pos.y = mp_Mesh[m].mpMesh->mVertices[v].y;
Vertex.Pos.z = mp_Mesh[m].mpMesh->mVertices[v].z;
Vertex.Normal.x = mp_Mesh[m].mpMesh->mNormals[v].x;
Vertex.Normal.y = mp_Mesh[m].mpMesh->mNormals[v].y;
Vertex.Normal.z = mp_Mesh[m].mpMesh->mNormals[v].z;
if(mp_Mesh[m].mpMesh->HasTextureCoords(0))
{
Vertex.Tex.x = mp_Mesh[m].mpMesh->mTextureCoords[v]->x;
Vertex.Tex.y = mp_Mesh[m].mpMesh->mTextureCoords[v]->y;
}
else
{
Vertex.Tex.x = 0.0f;
Vertex.Tex.y = 0.0f;
}
Geo_Puffer->Set_Vertex(VertexCounter, &Vertex);
VertexCounter += 1;
}
|