Dans mon précédent post je listais des outils qui permettent de générer des fichiers xaml contenant des objets 3D. Ce n'est bien sur pas le seul moyen d'obtenir des objets 3D dans une application WPF.
L'exemple de code attache à ce post illustre une approche différente ou les données sont lues directement dans un fichier Collada. Cette application WPF n'est pas en mesure de charger tous les fichiers Collada existant loin de la mais devrait récupérer correctement les informations associées au tag <triangles> d'un tel fichier. La capture d'écran incluse dans le fichier zip montre l'affichage d'un fichier appelé MissionDolores.dae contenu dans le fichier MissionDolores.kmz récupéré sur le web.
Il est intéressant de noter que la géométrie est correctement lue mais les textures sont pour l'instant incorrectement mappées sur certaines portions du bâtiment. Le mappage des textures donne pour l'instant des résultats très différents que l'on travaille sur la CTP de février ou la beta 2 de WPF.
Le fichier zip attaché contient par ailleurs un fichier .dae qui peut être charge dans l'application en guise de test. Ce fichier a été généré avec la version gratuite du logiciel Sketchup. Pour effectuer un zoom pour voir l'ensemble de la géométrie vous pouvez utiliser le bouton droit de la sourie, pour effectuer des rotations de l'objet, le bouton gauche.
Même si cet exemple de code se limite a extraire uniquement certaines informations d'un fichier Collada sans tenter de récupérer les propriétés des matériaux, les effets ou les propriétés physique qui peuvent être sauvegarde sous ce format, j'espère qu'il pourra tout de même être utile comme base de travail a ceux qui souhaiteraient utiliser ce format dans une application WPF. Et accessoirement utile à ceux qui aimeraient récupérer dans leur application WPF le travail qu'ils ont pu effectuer dans des logiciels ne supportant pas encore directement le format xaml.
Bonne semaine a tous,
guillaume