Je tente de lire dans un maillage à partir d'un fichier .dae vers un projet DirectX en utilisant TinyXML et j'ai de la difficulté à comprendre comment les fichiers .dae stockent les données de maillage.Comment les fichiers .dae stockent-ils les données de maillage?
je crois que je l'ai trouvé où les données de maillage sont stockées: dans la balise <library_geometries>
il y a le code suivant:
<library_geometries>
<geometry id="Tall_bodyShape" name="Tall_bodyShape">
<mesh>
<source id="Tall_bodyShape-positions" name="position">
<float_array id="Tall_bodyShape-positions-array" count="2910"> *** lots of numbers *** </float_array>
<technique_common>
<accessor source="#Tall_bodyShape-positions-array" count="970" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Tall_bodyShape-normals" name="normal">
<float_array id="Tall_bodyShape-normals-array" count="3948"> *** lots of numbers *** </float_array>
<technique_common>
<accessor source="#Tall_bodyShape-normals-array" count="1316" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Tall_bodyShape-UVChannel_1" name="UVChannel_1">
<float_array id="Tall_bodyShape-UVChannel_1-array" count="2892"> *** lots of numbers *** </float_array>
<technique_common>
<accessor source="#Tall_bodyShape-UVChannel_1-array" count="1446" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Tall_bodyShape-vertices">
<input semantic="POSITION" source="#Tall_bodyShape-positions"/>
</vertices>
<triangles material="Tall_bodySG" count="1883">
<input semantic="VERTEX" source="#Tall_bodyShape-vertices" offset="0"/>
<input semantic="NORMAL" source="#Tall_bodyShape-normals" offset="1"/>
<input semantic="TEXCOORD" source="#Tall_bodyShape-UVChannel_1" offset="2" set="0"/>
<p> *** lots of numbers *** </p>
</triangles>
</mesh>
<extra>
<technique profile="MAYA">
<double_sided>1</double_sided>
</technique>
</extra>
</geometry>
</library_geometries>
Ainsi, les vertices sont stockés dans la balise <source>
nommée "position"
, les Normales sont stockés dans la balise <source>
nommée "normal"
et la balise <triangles>
répertorient les coordonnées UV et les normales associées à quel sommet. Je suppose que les triangles sont énumérés dans une méthode de «ligne» ou de «dépouillée», mais cela ne dit pas lequel et quoi que j'essaie, ils affichent tous les deux un désordre de triangles en forme de boule.
Est-ce que quelqu'un sait s'il y a d'autres données de maillage que j'ai manqué dans une autre partie du dae ou dans lesquelles je me suis peut-être trompé? Si nécessaire, je peux afficher la fonction dans laquelle je charge dans les données de maillage.
EDIT: Note supplémentaire: Je suis certain que le fichier .dae est correct et valide car il peut être correctement chargé dans le PhyreEngine (j'utilise un .dae que j'ai utilisé pour un projet universitaire l'année dernière).
Vous devez appliquer les transformations dans la scène. – jterrace
Voulez-vous dire dans la section avec la balise 'library_visual_scenes' qui énumère une charge de choses sur catrig et les os? Le seul autre truc que j'ai pu trouver concernait l'animation. Je pensais que, parce que le modèle 3D est un maillage unique (l'artiste l'a extrudé à partir d'une seule boîte) qu'il serait dans une pose complète, pas de chevauchement, lorsque seulement les verticies sont extraites. – Edward