Bonsoir tout le monde,
Je réalise actuellement une fonction dont le but est de créer, pour chaque triangle d'un mesh, une liste des pointeurs sur les triangles voisins, autrement dit, ceux partageant au moins un sommet commun. Pour y parvenir, j'utilise la fonction getIndices() afin de parcourir les indices des sommets des triangles et vérifier si un même indice se retrouve dans d'autres triangles.
Toutefois, lorsque j'ai débogué ma fonction, je me suis rendu compte que les indices n'apparaissaient jamais plus d'une fois et se suivaient quasiment : 0 2 1, 3 5 4, 6 8 7, etc. Du coup, ma fonction ne fonctionne pas.
La question que je me pose concerne l'origine de cette anomalie. Le modèle utilisé est une surface simple réalisée sous Blender et exportée en 3ds. L'erreur pourrait venir de là...
Du coup, j'aimerais profiter de l'expérience des membres de ce forum sur l'utilisation de la fonction getIndices(), voir s'ils ont déjà rencontré ce type de problème. Merci d'avance pour votre aide.
A bientôt !
Hors ligne
Il faudrait vérifier si des vertexs différents ne partagent pas la même coordonée ce qui pourrait expliquer le problème que tu rencontres. Il peut y avoir plusieurs réponses, pour l'instant je chercherai du côté du script d'export de blender si par hazard il ne doublerai pas les vertexs par exemple : 0 2 1 et 3 5 4, est-ce que les vertexs 2 et 1 n'auraient pas la même position que les vertexs 3 et 4 ?
As-tu essayé avec un autre format 3D ?
Hors ligne
Bonjour,
Merci pour ta réponse.
Avant d'exporter au format 3ds sous Blender, j'ai regardé si les vertices de ma surface n'étaient pas doublés à l'aide du bouton "Remove doubles" mais apparemment non. Donc effectivement, il se pourrait bien que l'export ne soit pas optimisé. Là, j'ai un peu modifié ma fonction pour qu'elle compare non plus les indices communs mais les sommets communs en comparant les positions (+/- erreur). Elle fonctionne mais je trouve que c'est dommage de ne pas profiter directement des indices.
Par contre, je n'ai pas essayé d'autres format. Je vais tenter avec un fichier .x puisque son contenu est lisible.
Après, il faudrait peut-être que je teste un fichier 3ds construit sous 3ds max.
Hors ligne
Dans certains cas il peut aussi y avoir des vertexs doublés car le modèle possède deux coordonées de textures, un pour sa texture ordinaire et l'autre pour son lightmap par exemple.
Dans ton cas c'est pas ça, mais je te le dis juste au cas ou sur certains format tu peux retrouver se modèle volontairement.
Voilou @+
Hors ligne
Bonjour,
Merci pour l'info. Je tâcherai de m'en souvenir si le cas se présente.
Pour la suite de l'histoire, j'ai supprimé dans mon code tout ce qui était accès aux indices et me suis uniquement basé sur les coordonnées 3D de mes vertices. Même si ce code est légèrement plus lent, il permet de passer outre les problèmes d'indices. Pour éviter toute erreur de précision, la comparaison des coordonnées se fait en tenant compte d'une erreur +/- ERROR_VALUE. Sans cette précaution, deux points même identiques peuvent apparaître distincts.
A bientôt !
blm91
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 108 invités en ligne Aucun membre connecté RSS Feed |