#0 

25-03-2008 23:05:28

blm91
Membre
Date d'inscription: 08-01-2008
Messages: 16

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


#1 

26-03-2008 02:05:19

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

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 ?


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#2 

26-03-2008 11:09:28

blm91
Membre
Date d'inscription: 08-01-2008
Messages: 16

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


#3 

26-03-2008 18:28:04

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

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 @+


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#4 

08-04-2008 11:30:43

blm91
Membre
Date d'inscription: 08-01-2008
Messages: 16

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
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
29 invités en ligne
Aucun membre connecté
RSS Feed