Suite à mon dernier post concernant l'affichage de fichier Collada dans une application WPF j'ai transformé le code parsant le fichier collada pour générer un vertexBuffer, un indexBuffer et à charger les textures appropriées pour pouvoir afficher le contenu d'un fichier collada dans une application managed directX. Le fichier collada n'est correctement parsé que s'il contient des informations sur les normales, sur les coordonnées de texture est si la géométrie y est décrite sour la forme d'une liste de triangles.
Voici le résultat sur le fichier utilisé pour le post précédent:

Pour utiliser la classe dans le fichier attaché il faut taper le code suivant pour assurer le chardement des informations contenu dans le fichier dae.
collada =
new ColladaLoader(e.Device);
collada.Load(
"Villada.dae");
Puis utiliser le code suivant pour effectuer le rendu de ce qui a été chargé:
IDictionaryEnumerator enumGeometrie = collada.colladaGeometries.GetEnumerator();
while (enumGeometrie.MoveNext())
{
ColladaGeometry collGeom = enumGeometrie.Value as ColladaGeometry;
if (collGeom == null)
continue;
foreach (LoadedEntity entity in collGeom.models)
{
if (entity.materials.Length == 0)
continue;
if (entity.textures.Length == 0)
continue;
device.SetTransform(
TransformType.World,
Matrix.Multiply(Matrix.Scaling(0.1f, 0.1f, 0.1f), Matrix.Translation(0.0f, 5.0f, 0.0f)));
device.Indices = entity.iBuff;
device.SetStreamSource(0, entity.vBuff, 0);
device.Material = entity.materials[0];
device.SetTexture(0, entity.textures[0]);
device.DrawIndexedPrimitives(
PrimitiveType.TriangleList, 0, 0,
entity.numVertices, 0, entity.numPrimitives);
}
}
N'hésitez pas à me faire pars de vos remarques,
Bonne semaine,
guillaume