J'ai essayé d'utiliser le SDK FBX (2011.3.1) pour charger des fichiers FBX et les enregistrer en tant que fichiers Collada afin de pouvoir importer des fichiers FBX dans Panda3D. Malheureusement, les fichiers Collada résultants ne sont pas utilisables pour plusieurs raisons, notamment:
- Il y a une technique supplémentaire spécifique aux Mayas
diffuser
<diffuse>
<texture texture="Map__2-image" texcoord="CHANNEL0">
<extra>
<technique profile="MAYA">
<wrapU sid="wrapU0">TRUE</wrapU>
<wrapV sid="wrapV0">TRUE</wrapV>
<blend_mode>ADD</blend_mode>
</technique>
</extra>
</texture>
</diffuse>
Il attribue un nom de canal texcoord qui n'est référencé nulle part ailleurs dans le fichier (dans l'exemple de code précédent, aucune géométrie n'utilise "CHANNEL0" ...)
Chaque polygone est exporté deux fois, une première fois avec un matériau de base (uniquement couleur diffuse, couleur spéculaire, etc.) et une deuxième fois avec un matériau texturé -> cela double le nombre de polygones de chaque modèle sans raison valable
Quoi qu'il en soit, le fichier Collada résultant ne peut pas être ouvert correctement avec OpenCOLLADA ou "dae2egg" de Panda3D.
Quelqu'un a-t-il une expérience sur la façon de le "réparer" et de le rendre compréhensible par les importateurs Collada courants et réputés tels que OpenCOLLADA?
Réponses:
L'outil AC # est votre ami ici - vous pouvez rapidement écrire quelque chose en utilisant le framework .NET System.Xml qui itère sur le fichier d'entrée, repère les parties que vous n'aimez pas et les élimine (ou les ajuste) du document avant de le réécrire encore dehors. C'est effectivement ce que fait XSLT, mais dans la pratique, j'ai toujours trouvé qu'il était plus facile d'écrire du code C # pour décrire la transformation que de trouver la syntaxe XSLT cryptique pour faire la même chose.
Ce que vous devez faire, c'est regarder les «mauvais» cas et repérer ce qu'ils ont en commun. Par exemple, si toutes les techniques diffuses qui ont une texture qui utilise texcoord = "CHANNEL0", c'est facile à trouver. Vous venez d'itérer tous les objets et pour chaque objet, vérifiez toutes ses techniques pour l'attribut incriminé. Si vous ne le trouvez pas, ajoutez le nœud à un document de sortie et continuez. Si vous ne reconnaissez pas le nœud, ajoutez-le à la sortie et continuez. Si vous le trouvez, ne vous embêtez pas à l'ajouter au document de sortie et il sera effectivement supprimé.
Cependant, repérer des polygones en double est un peu plus délicat, car vous devrez analyser chaque paire de polygones pour l'équivalence. Ce serait beaucoup plus simple si vous pouviez décider d'une règle, telle que "Je me fiche des polygones plats, seulement des polygones texturés", alors vous pouvez simplement jeter les polygones appropriés.
Cependant, il me semble très étrange que vous obteniez des doublons; la duplication de la géométrie est un grand non-non pour des raisons évidentes, donc je suis surpris que FBX le fasse. Je n'ai jamais utilisé Collada avec Maya / Max, donc je ne peux pas garantir ce que FBX produit. Mais je demanderais, êtes-vous super doublement sûr qu'il n'y a vraiment pas de géométrie en double dans le fichier FBX?
la source
Trouvez ou écrivez un autre exportateur, ou peut-être (puisque les fichiers Collada ne sont que du XML) utiliser [XSLT] [1] pour transformer les données indésirables ou les convertir en une forme plus généralisée?
la source