IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Lister les vertices adjacents à chaque vertice ?


Sujet :

DirectX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut Lister les vertices adjacents à chaque vertice ?
    Bonjour, je cherche à lister pour chaque vertice d'un mesh, les vertices qui sont "à 1 edge" tout autour (je ne sais pas si le terme adjacent convient).
    Est-ce qu'il y aurait un méthode simple, en fait je vois bien un moyen un moyen mais je galère un peu du fait que le nombre peu varier, il faudrait d'abord compter le nombre et ensuite les lister...

    Merci

  2. #2
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Tout dépend des structures de données que tu utilises ..
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Ceci peut-être ?

    Bakura, le roi des papiers et des ressources en tout genre .

  4. #4
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Ah, mais pour faire ça de manière simple et efficace, il faut changer de structures de données, qui soient adaptées au problème.

    Plusieurs structures de données pour les maillages 3D existent : le directed-edge mesh, halfedge-mesh, winged-edge mesh.

    Par contre, pour trouver une documentation simple et gratuite expliquant le fonctionnement des 2 premiers...
    En effet, maintenir les invariants du maillage n'est pas évident du tout pour halfedge et directed edge (qui est une spécialisation des halfedge mesh) ; malheureusement, LA référence pour les deux premiers que tous les articles scientifiques citent est payante.

    Winged-edge mesh est en quelque sorte un ancêtre.

    Le plus simple, c'est d'utiliser l'une des deux bibliothèques suivantes, spécialisées pour le calcul géométrique :
    - CGAL
    - OpenMesh

    Sinon ce que tu peux faire, c'est pour chaque sommet, associer les sommets/triangles adjacents, la méthode bourrin quoi, comme dans le lien de Bakura.
    Et idem pour les triangles (mais c'est facultatif, parce qu'on peut avoir accès à ces informations indirectement en passant par les sommets composant le triangle).

    J'ai aussi une implémentation de cette dernière structure en C++ templatisée, pas totalement finie (il manque les operations d'Euler par exemple), mais très utilisable.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut
    Bon, je n'ai pas tout compris les histoire de direct edge, half edge etc. je pense que je vais opter pour la méthode bourin, je m'en sortirai bien.
    Merci pour vos réponses.

  6. #6
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    De toute façon, c'est le genre de choses que tu peux pré-calculer je pense. En utilisant la structure de données que je t'ai passé dans le lien, tu lances lien une fois au début pour chaque mesh, tant pis si ça prends du temps.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut
    Oui en fait ce n'est pas un problème si ça prend du temps, ce qui m'a bloqué c'est que je pensais commencer par compter pour chaque vertice (Vn), le nombre de vertices adjacents, mais pour les compter il faut que je parcours tous les polygones, si un point correspond au vertice Vn, ajouter les 2 autres à la liste des vertices adjacents etc. donc ça suppose que je suis déjà entrain de créer la liste et que donc je ne peux pas connaitre sa taille avant pour faire un new int[taille] par exemple.
    Peut etre que c'est a cause de mes connaissances limitées... Je vais peut etre utiliser un liste temporaire par exemple de 100 puisqu'il y a peu de chance qu'il y ai 100 vertices adjacents à un autre.

  8. #8
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Bon, je n'ai pas tout compris les histoire de direct edge, half edge etc. je pense que je vais opter pour la méthode bourin, je m'en sortirai bien.
    Merci pour vos réponses.
    Mais c'était certainement pas avec mon post que tu vas comprendre ce que c'est en détail !
    Je t'ai donné les noms des structures de données, c'est tout. Après, il faut faire des recherches !

    Oui en fait ce n'est pas un problème si ça prend du temps, ce qui m'a bloqué c'est que je pensais commencer par compter pour chaque vertice (Vn), le nombre de vertices adjacents, mais pour les compter il faut que je parcours tous les polygones, si un point correspond au vertice Vn, ajouter les 2 autres à la liste des vertices adjacents etc. donc ça suppose que je suis déjà entrain de créer la liste et que donc je ne peux pas connaitre sa taille avant pour faire un new int[taille] par exemple.
    Peut etre que c'est a cause de mes connaissances limitées... Je vais peut etre utiliser un liste temporaire par exemple de 100 puisqu'il y a peu de chance qu'il y ai 100 vertices adjacents à un autre.
    std::vector<>, ça te dit quelque chose ?
    Tu devrais lire la FAQ C++ de developpez, elle est bien faite, et il y a beaucoup de choses à apprendre.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut
    std::vector<>, ça te dit quelque chose ?
    Moi qui croyait qu'un truc aussi simple n'existait que sur ma TI-82... Mais pourquoi ils ont mis ça à la fin de mon bouquin sur le C++ ?! Après tout ça fait que 10 ans que je programme en C++
    Bref y'a des chance que ça m'aide... Sinon j'avais bien compris qu'il faudrait que je cherche au sujet des direct-half-truc, mais ça ira plus vite à la bourin.
    Merci encore.

  10. #10
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Vive les bouquins qui introduisent la STL à la fin... Sérieusement, t'avais jamais entendu parler de la STL en 10 ans ? ^^ Faudrait vraiment que t'y mettes hein, c'est indispensable .

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut
    Ouai j'ai appris comme ça, mon but à la base c'était de faire des jeux, j'ai surtout appris des codes que j'ai trouvé plus quelques bases de c++ dans des livres genre c++ pour les nuls, je me suis bien débrouillé sans STL en tout cas, je ferais en fonction de mes besoins et de mon temps car ce n'est pas mon travail.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut
    Enfin je dis que je me suis débrouillé sans STL en fait j'en sais rien, je suppose.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/01/2015, 17h19
  2. Réponses: 2
    Dernier message: 28/02/2014, 16h55
  3. [Drupal] lister les marques de voitures et les types de chaque marque
    Par gdhia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 07/12/2012, 14h45
  4. Réponses: 2
    Dernier message: 07/03/2007, 16h30
  5. [TP]Lister les fichiers d'un répertoire
    Par nvtitan dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 21/06/2002, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo