Voilà je viens de réussir à charger et à afficher mon fichier collada dans Directx.
Mon objet est un cube. (C'est pour ça que j'ai mis des valeurs statiques, pour les tableaux de coordonnées par exemple).
Je précise que je ne charge que la géométrie de l'objet depuis le fichier *.dae
Voila le code :
DAE *Objet_Collada = new DAE();
daeInt erreur;
// Triangle Vars
struct VertexPosColorStruct
{
D3DXVECTOR3 Pos;
D3DXVECTOR4 Color;
};
bool erreur_bool = false;
Objet_Collada->load("cubeM.dae");
domFloat_array* domFloat = 0 ;
erreur = Objet_Collada -> getDatabase() -> getElement((daeElement**)&domFloat, 0, NULL, COLLADA_TYPE_FLOAT_ARRAY);
if (erreur != DAE_OK)
erreur_bool = true;
domP* verticesCollada = 0 ;
erreur = Objet_Collada -> getDatabase() -> getElement((daeElement**)&verticesCollada, 0, NULL, COLLADA_TYPE_P);
if (erreur != DAE_OK)
erreur_bool = true;
int nbPositions = domFloat -> getCount();
domListOfUInts listeVertices = verticesCollada -> getValue();
int nbVertices = listeVertices.getCount();
float xPos[8];
float yPos[8];
float zPos[8];
int pos = 0;
for(int i = 0; i < nbPositions/3; i++)
{
xPos[i] = domFloat -> getValue()[pos]*10;
yPos[i] = domFloat -> getValue()[pos+1]*10;
zPos[i] = domFloat -> getValue()[pos+2]*10;
pos += 3;
}
VertexPosColorStruct vertices[36];
int numVertex = 0;
for(int i = 0; i < nbVertices; i++)
{
numVertex = verticesCollada -> getValue()[i];
vertices[i].Pos = D3DXVECTOR3(xPos[numVertex], yPos[numVertex], zPos[numVertex]);
if(i < 6)
vertices[i].Color = D3DXVECTOR4(1.0f,0.0f,0.0f,0.0f);
else if(i < 12)
vertices[i].Color = D3DXVECTOR4(0.0f,1.0f,0.0f,0.0f);
else if(i < 18)
vertices[i].Color = D3DXVECTOR4(0.0f,0.0f,1.0f,0.0f);
else if(i < 24)
vertices[i].Color = D3DXVECTOR4(1.0f,0.5f,0.0f,0.0f);
else if(i < 30)
vertices[i].Color = D3DXVECTOR4(0.0f,1.0f,0.5f,0.0f);
else if(i >= 30)
vertices[i].Color = D3DXVECTOR4(0.5f,0.0f,1.0f,0.0f);
}
Si quelqu'un a des questions ou veut un zip du projet complet dites le moi.