CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Opengl] Polygone concaves

[notch]
[notch]
Niveau 10
10 août 2013 à 19:49:53

Bonjour,

Je débute avec OpenGl, et actuellement, j'aurais besoin de pouvoir tracer des polygones qui sont potentiellement concaves (et si possible des polygones non-simples, cad avec des segments qui se coupent entre eux si ce n'est pas plus compliqué).

Donc le code avec glBegin(GL_POLYGON), marche trés bien pour les polygones convexes, j'ai essayé de le modifier avec les tesselators glu mais ça n'affiche rien, et j'ai vu que glu était deprecated.

Donc, je voudrais savoir comment faire :noel: ?

ps: j'ai aussi cherché des algos pour couper un polygone concave en plusieurs polygones convexes mais j'ai rien trouvé de satisfaisant :(

Pseudo supprimé
Pseudo supprimé 10 août 2013 à 20:14:25

C'est pas le même langage pour moi,
Mais ce que j'aurai fais c'est que je l'aurai découpé en triangles,
Puisque ceux-si ne peuvent pas être concavent à priori.

[notch]
[notch]
Niveau 10
10 août 2013 à 20:24:00

Serialesky
Posté le 10 août 2013 à 20:14:25
C'est pas le même langage pour moi,
Mais ce que j'aurai fais c'est que je l'aurai découpé en triangles,
Puisque ceux-si ne peuvent pas être concavent à priori.

Bah c'est ce qu'est censé faire les tesselators glu normalement :(
Enfin, ca ne me dérangerait pas de découper les polygones en triangles mais je n'arrive pas à trouver d'algorithmes expliqué (Sur wikipedia, ils parlent de l'ear clipping mais qui possede une complexité de O(n² ) . Ils parlent également d'un autre algo en O(n ln n) ou il faut découper le polygone en plusieurs polygones monotones mais pareil j'arrive pas à trouver quelquechose d'expliqué sur google :( )

hyrulink2
hyrulink2
Niveau 7
10 août 2013 à 21:58:50

http://www.philvaz.com/compgeom/

a l'air d'être ce que tu recherches, il donne l'implem en C à la fin

[notch]
[notch]
Niveau 10
11 août 2013 à 13:55:04

hyrulink2
Posté le 10 août 2013 à 21:58:50
http://www.philvaz.com/compgeom/

a l'air d'être ce que tu recherches, il donne l'implem en C à la fin

Non, c'est un algo pour triangulariser des polygones convexes, dans le cas des polygones concaves, ils disent de le séparer en plusieurs polygones convexes sans donner de détail or c'est ca que je cherche à faire :noel:

chris_27
chris_27
Niveau 10
11 août 2013 à 16:47:24

As-tu essayé de regarder du coté des algos de calcul d'enveloppe convexe ? J'ai l'impression que quand tu tombes sur une arête de l'enveloppe convexe qui n'est pas un coté de ton polynôme, c'est signe qu'il faut casser ton polynôme en deux. À voir.

hyrulink2
hyrulink2
Niveau 7
11 août 2013 à 17:29:34

Non c'est bien un algo qui marche sur des polynomes concaves: d'abord le polynome est triangulé avec l'algo de O'Rourke, ce qui a l'air de correspondre à la fonction Triangulate de triphilvaz.c, ensuite l'algo de Hertel-Mehlhorn est lancé pour enlever les diagonales inutiles, ce qui correspond visiblement à la fonction HMAlgor.

En tout cas les exemples montrent clairement que ça marche sur des polygones concaves.

L'implem a l'air un peu degeu avec des variables globales de partout mais je la trouve bien commentée, ça doit pas être bien difficile de l'adapter avec une vraie interface.

chris_27
chris_27
Niveau 10
11 août 2013 à 17:42:57

hyrulink2 : c'est quand même un peu du gâchis d'aller jusqu'à une triangularisation, non ?

[notch]
[notch]
Niveau 10
11 août 2013 à 17:56:19

Si possible oui j'aimerais éviter la triangularisation, mais si je trouve pas d'autres option, je serais bien obligé :(
Et puis bon, au pire j'esserais de réinventer la roue :(

Paulop
Paulop
Niveau 12
11 août 2013 à 18:22:31

Tu vises qu'elle plateforme ? Parce que selon la plateforme tu pourrais avoir des différences dans la manière de faire.

[notch]
[notch]
Niveau 10
11 août 2013 à 18:33:23

Paulop
Posté le 11 août 2013 à 18:22:31
Tu vises qu'elle plateforme ? Parce que selon la plateforme tu pourrais avoir des différences dans la manière de faire.

Je vois pas en quoi le choix de la plateforme changerait quelquechose, mais je vise du multi-plateforme (windows, mac et linux).

Paulop
Paulop
Niveau 12
11 août 2013 à 18:43:49

Parce que par exemple OpenGL ES ne supporte pas les fonctions de tesselation de GLU (qui est deprecated comme tu l'as dis). Ou bien parce que OpenGL 4 inclut des outils pour faire de la tesselation sur le GPU et pas les autres version.

Bref sinon ça pourrait t'aider : http://glprogramming.com/red/chapter14.html#name13

Sinon pour GLU qui marche pas, essaie de désactiver le culling ?

Si tes modèles sont statiques, je te conseille de les convertir en polygones convexes avant de les charger dans ton application.

[notch]
[notch]
Niveau 10
11 août 2013 à 18:55:43

Paulop
Posté le 11 août 2013 à 18:43:49
Parce que par exemple OpenGL ES ne supporte pas les fonctions de tesselation de GLU (qui est deprecated comme tu l'as dis). Ou bien parce que OpenGL 4 inclut des outils pour faire de la tesselation sur le GPU et pas les autres version.

Bref sinon ça pourrait t'aider : http://glprogramming.com/red/chapter14.html#name13

Sinon pour GLU qui marche pas, essaie de désactiver le culling ?

Si tes modèles sont statiques, je te conseille de les convertir en polygones convexes avant de les charger dans ton application.

Opengl 4 n'est pas supporté partout il me semble non ? :(
GLU marche mais pas les fonctions de tesselations (enfin, ca ne me met aucune erreur mais ca n'affiche rien :( )
Les polygones risquent pour la plupart de ne pas être statiques (genre le zoom est assez important dans le gameplay et sur certaines portions qui sont enfaite des courbes, il faudra recalculer avec un nombre de points plus ou moins grand pour que ca apparaisse bien en fonction du zoom de l'utilisateur :( )

petit ps: c'est de la 2d et non de la 3d :noel:

Paulop
Paulop
Niveau 12
11 août 2013 à 19:00:24

Non c'est pas supporté partout, juste sur les derniers GPU.

Ben je vois que la triangulation du coup. Si tu as des trous dans tes polygones, tu vas pleurer :hap:

Pour GLU, désactive le culling au cas où.

[notch]
[notch]
Niveau 10
11 août 2013 à 19:03:54

Paulop
Posté le 11 août 2013 à 19:00:24
Non c'est pas supporté partout, juste sur les derniers GPU.

Ben je vois que la triangulation du coup. Si tu as des trous dans tes polygones, tu vas pleurer

Pour GLU, désactive le culling au cas où.

Non heureusement, pas de trou dans les polygones :noel:
Là, jviens de trouver ca à l'instant: http://stackoverflow.com/questions/694108/decomposition-to-convex-polygons
Ca à l'air pas mal, je vais essayer d'implementer pour voir ce que ca donne :noel:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment