Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1618 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  OpenGl et extruder un polygone

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

OpenGl et extruder un polygone

n°1725757
lordankou
Posté le 28-04-2008 à 17:25:56  profilanswer
 

Bonjour,
 
J'ai creer un polygone a partir d'une multitude de point (x,y,Z) sachant que les Z ont tous la meme valeur pour un polygone donne. et je voudrais extruder ce polygone jusqu'a z=0 mais je n'ai pas trouver de maniere simple
pour l'instant la seule chose que j'ai trouve c'est dessiner le dessus puis le dessous et ensuite chaque cote !
je trouve cette methode un peu barbare et super longue.
il n'y a pas d'autres moyen ?
 
merci
sylvain

mood
Publicité
Posté le 28-04-2008 à 17:25:56  profilanswer
 

n°1725772
IrmatDen
Posté le 28-04-2008 à 17:46:27  profilanswer
 

Salut,
 

lordankou a écrit :

pour l'instant la seule chose que j'ai trouve c'est dessiner le dessus puis le dessous et ensuite chaque cote !
je trouve cette methode un peu barbare et super longue.


C'est à dire?
 
De façon générale (et pour autant que je sache bien sûr :)) :  
1. Pour chaque sommet accompagné de sa normale unitaire N, tu en crées un autre en décalant ses coordonnées de N * longueur de l'extrusion
2. Ensuite, tu génères les faces pour modeler les "côtés", et éventuellement le dessus selon que tu veuilles un objet bouché ou pas
 
Mais j'ai du mal à comprendre ton post et savoir si c'est ce que tu fais déjà?

n°1725777
lordankou
Posté le 28-04-2008 à 17:55:36  profilanswer
 

oui c'est ce que je fais mais du coup ca ralenti beaucoup le systeme a chaque fois que j'effectue une rotation, deplacement et qu'il doit tout recalculer  :(
 
je pensais peut etre qu'il existait une fonction pour extruder directement en openGl

n°1725782
IrmatDen
Posté le 28-04-2008 à 18:01:44  profilanswer
 

Pourquoi il doit tout recalculer?? Faut stocker le résultat et appliquer les modifs sur l'objet résultant, pas tout refaire en permanence (je dis pas qu'il n'y a pas des cas où c'est nécessaire, m'enfin, ça me paraît douteux :D)

n°1725783
bjone
Insert booze to continue
Posté le 28-04-2008 à 18:02:33  profilanswer
 

tu générès la géométrie obtenue dans un cache.
l'extrusion est un traitement unique, tu n'as pas le refaire frame par frame.
 
oups grilled  :o


Message édité par bjone le 28-04-2008 à 18:03:09
n°1725790
lordankou
Posté le 28-04-2008 à 18:22:01  profilanswer
 

disons que je j'effectue des mouvement lateraux autour de mon objet (le deplacer a gauche, a droite) donc je suis bien oblige de redessiner mes surfaces a chaques fois ?  :??:

n°1725796
Joel F
Real men use unique_ptr
Posté le 28-04-2008 à 18:38:11  profilanswer
 

redessiner oui, recalculer na

n°1725797
lordankou
Posté le 28-04-2008 à 18:49:51  profilanswer
 

et c'est quoi la difference car la franchement plus je regarde de tuto et plus ca se contredit dans tous les sens.
pour moi quand je dis redessiner c'est par exemple :

Code :
  1. glBegin(GL_POLYGON);
  2. // for all point
  3. for(vector<point*>::iterator m = (*l)->getListPoint().begin(); m != (*l)->getListPoint().end();++m){
  4.  glVertex3f((*m)->getX(),(*m)->getY(),(*m)->getZ());
  5. }
  6. // end polygone
  7. glEnd();

n°1725802
IrmatDen
Posté le 28-04-2008 à 18:56:07  profilanswer
 

Bah ouais, c'est ça grosso modo (et de façon brute aussi); où est le recalcul de l'extrusion dont tu parles là-dedans?

Message cité 1 fois
Message édité par IrmatDen le 28-04-2008 à 18:56:27
n°1725807
bjone
Insert booze to continue
Posté le 28-04-2008 à 19:04:50  profilanswer
 

lordankou a écrit :

disons que je j'effectue des mouvement lateraux autour de mon objet (le deplacer a gauche, a droite) donc je suis bien oblige de redessiner mes surfaces a chaques fois ?  :??:


 
c'est la matrice qui déplace l'objet.
(mais sinon il faut appeller les commandes de l'api pour traçer l'objet)


Message édité par bjone le 28-04-2008 à 19:05:56
mood
Publicité
Posté le 28-04-2008 à 19:04:50  profilanswer
 

n°1725814
lordankou
Posté le 28-04-2008 à 19:18:53  profilanswer
 

IrmatDen a écrit :

Bah ouais, c'est ça grosso modo (et de façon brute aussi); où est le recalcul de l'extrusion dont tu parles là-dedans?


 
oui j'ai confondu calcul et dessin sur le coup (c'est la fin de la journee aussi)
 
 
mais d'un point de vue technique a partir de quand on est cense voir des ralentissement dans une scene affichee ? (nbr de polygone affichee par exemple ?)

n°1725822
bjone
Insert booze to continue
Posté le 28-04-2008 à 19:57:22  profilanswer
 

avec des glVertex3f(), tout de suite.
 
commence a regarde les VBO + Index buffer
http://www.g-truc.net/article/vbo-fr.pdf
(premier lien gargle)


Message édité par bjone le 28-04-2008 à 20:03:21
n°1725828
lordankou
Posté le 28-04-2008 à 20:07:53  profilanswer
 

je vais pas y aller par 4 chemins :  
est ce que ça vaut le coup les VBO sachant que la rapidité n'est pas non plus quelque choses de super important ?  
 
je souhaite juste afficher une carte en 3D avec mes comtés extrudés et dans ce sens est ce que les VBO sont intéressants (notamment vu le temps que ça risque de me prendre pour l'implémenter) ?

n°1725829
bjone
Insert booze to continue
Posté le 28-04-2008 à 20:12:45  profilanswer
 

sans VBO, les performances (géométriques) sont indexées sur le CPU et non le GPU.
 
entre du poussage de vertex contenu dans un std::vector<> et la copie du std::vector<> dans un VBO une fois toutes les 36 du mois, en ligne de code ça peut être la même chose.


Message édité par bjone le 28-04-2008 à 20:31:30
n°1725837
lordankou
Posté le 28-04-2008 à 20:26:35  profilanswer
 

bon bah j'ai de la lecture pour ce soir  :love:  
 
merci pour l'aide je vais voir ce que je dois modifier dans mes classes ou juste prendre les donnes pour les copier. enfin bref je vais etudier ca de pres !

n°1726093
lordankou
Posté le 29-04-2008 à 11:45:36  profilanswer
 

apres une bonne nuit J'ai deux trois questions (je sais je suis chiant !)
j'ai rapidement lu l'article sur les vbo qui est assez technique pour moi et en meme temps j'en ai profite pour lire les display list.
 
et pour l'instant en fait je dessine une par une chaque vertice de mes polygones en parcourant donc tous les points.
 
solutions qui n'est pas tres interessant car au final une fois la carte affichee je ne vais pas modifier les points mais juste effectuer des rotations autour par exemple.
 
donc dans ce cadre la les display listes sont beaucoup plus interessantes non ? (plutot que de lire chaque point un par un et de tracer mon polygone apres)
 
je suis desole pour toutes ces question mais je n'ai qu'un temps limite pour faire l'appli et je n'y connais rien a la 3D et pas beaucoup en c++

n°1726149
bjone
Insert booze to continue
Posté le 29-04-2008 à 12:36:56  profilanswer
 

les display list sont une approche plus ancienne.
le max de perfs que tu obtiendras sera en VBO+index buffer, en respectant les types "accélérés".  
un VBO avec des types malchoisis pour le hard peut être contre-performant. (donc rester avec des floats la pluspart du temps l'opengl part un peu dans tous les sens au niveau types, enfin c'est pas vraiment un problème)
 
balade toi sur le site de nvidia et d'ati, y'a pas mal de docs pour connaitre les bonnes pratiques (modernes, économe en cpu, et maximisant les perfs gpus)
 
http://developer.nvidia.com/object/using_VBOs.html


Message édité par bjone le 29-04-2008 à 12:53:23

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  OpenGl et extruder un polygone

 

Sujets relatifs
detection symetrie axiale dans un polygone[OpenGl] gluLookAt
Opengl 3 : glColoropengl: intersection de segment en mode blend.
[OpenGL] Afficher un champ de vecteurs dynamiqueProfondeur en opengl
Textures et normales en openglGerer plusieurs fenêtres OpenGL.
C++ opengl lumières qui changent selon zoomC++ openGL problème couleur
Plus de sujets relatifs à : OpenGl et extruder un polygone


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR