DirectX 10 : Charger et afficher un fichier .dae (Collada) [Résolu]

Signaler
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010
-
Messages postés
94
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2013
-
Bonjour,

Comme le dit le titre j'utilise DirectX 10 et collada-dom.

Je voudrais charger et afficher un fichier collada dans mon application avec colla-dom mais je ne sais pas trop comment m'y prendre c'est pour ça que je viens vous demander.

Merci.

4 réponses

Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

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.
Messages postés
94
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2013

Salut.

N'ayant pas d'Exe, je ne peux pas jugé.
Mais en voyant que tu reponds à ton propre Post, je comprends que tu as dû bien travailler !!!

Je suis en train d'essayer de faire ça sous OpenGL
As tu utilisé des Bibliothèques ??
Quel site tu me conseils ??

Merci.

Peux tu m'envoyer le projet que j'Observé ça ?
Qu'as tu fais d'autre depuis ??

++
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

Salut,

Ca fait un moment que je n'y ai pas touché mais comme librairie j'ai utilisé colladaDOM, voici le site et la tu a direcetement un exemple avec OpenGL, je me souviens avoir galerer un moment avant d'arriver a compiler un projet avec cette librairie et VS8 mais apres ca a l'air de bien fonctionner.

Je n'ai pas les sources avec moi je pourrais les recuperer a la fin de la semaine surement et je te le ferais passer.

Voila si tu a un probleme dit le je pourrai peut être t'aider.
Messages postés
94
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2013

MERCI !!!!