[Gelöst] Fehler beim laden von meheren Meshes

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Altair
Beiträge: 26
Registriert: 28.06.2010, 15:51

[Gelöst] Fehler beim laden von meheren Meshes

Beitrag von Altair »

Hallo an alle,

ich wollte mein Loader jetzt auf mehere Meshes umstellen, das Ansicht klappt soweit an sich, aber das Model wird völlig falsch dargestellt. Eine Fehlermedlung kommt nicht und alles wird auch ausgelesen. Um zu gucken, ob der Fehler bei mir liegt habe ich das Model mit den AssimpViewer geladen, und da wurde es richtig angezeigt.
Hier ein Bild was ich meine:
http://img257.imageshack.us/i/autoy.png/

Laden tu ich das ganze so:

Code: Alles auswählen

ModelData.NumMeshes = 0;
	DP::Math::CMatrix4x4 WorldMatrix; // Weltmatrix
	SModel Model; // Temponäres Modeldaten

	aiMesh** ppMesh = pScene->mMeshes;
	aiMaterial** ppMaterial = pScene->mMaterials;

	aiNode* pSceneroot = pScene->mRootNode;
                aiNode** ppChildren = pSceneroot->mChildren;
                aiNode* pChild = NULL;

	unsigned int ModelID = 0;
	unsigned int MaterialID = 0;

	unsigned int I = 0;
	bool RootNode = true;

	int b = 0;

	do
	{
		if(RootNode)
		{
			pChild = pSceneroot;
			RootNode = false;
		}
		else
		{
			pChild = ppChildren[I];
			I++;
		}

		if(!(pChild->mNumMeshes > 0))
			continue;

                                 // Überträgti die Werte der Matrix in die andere Matrix 
		AssimpMatrixToDPMatrix(&pChild->mTransformation, &WorldMatrix);

		for(unsigned int i = 0; i < pChild->mNumMeshes; i++)
		{
			Model.WorldMatrix = WorldMatrix;

			ModelID = pChild->mMeshes[i];unsigned int NumVertex = ppMesh[ModelID]->mNumVertices;
			ModelData.NumVertices.push_back(NumVertex);
			Model.Vertices = new SVertex[NumVertex];

			for(unsigned int j = 0; j < NumVertex; j++)
                                                 {
                                                         Model.Vertices[j].Pos.x = ppMesh[ModelID]->mVertices[j].x;
                                                         Model.Vertices[j].Pos.y = ppMesh[ModelID]->mVertices[j].y;
                                                         Model.Vertices[j].Pos.z = ppMesh[ModelID]->mVertices[j].z;
                                                  }
                                                 // Normale, Texturkoordinaten und Materialien auslesen
                                    }
                         } while(I < pSceneroot->mNumChildren);
Ich seh jetzt nichts, was ich da falsch mache, müsste doch alles richtig sein?
Mfg Altair

EDIT:
Ich hab rausgefunden, dass es was mit der Matrix zu tun haben muss, wenn ich nämlich die Matrizen alle auf die Einheitsmatrix setze, wird die Form des Autos zwar richtig angezeigt, aber die Räder sind z.B. auch auf den Ursprung... Mach ich bei den Code da oben irgentwas mit den Matrizen falsch?
EDIT2:
Man musste die Matrizen noch einmal Transposieren (Sag man das so?), aber jetzt ist alles am richtigen Platz und so wie es sein sollte
Antworten