Partage
  • Partager sur Facebook
  • Partager sur Twitter

[opendgl]

demi sphere

Sujet résolu
    8 juillet 2007 à 13:25:18

    bonjour,

    J'aurais voulut savoir si l'on pouvait desiner une demi sphere avec opengl ou si il fait inporter un model?


    Et si il faut inporter un model peux ton modifier son diamettre?

    voila ++
    • Partager sur Facebook
    • Partager sur Twitter
      8 juillet 2007 à 18:50:55

      tu peut toujours créer ta fonction demi-sphère, mais je crois pas qu'openGL le fasse en natif.

      Pour ce qui est du rayon:

      PushMatrix
      scale
      drawSphere
      PopMatrix.

      la sphere a toujours un rayon de 1.
      • Partager sur Facebook
      • Partager sur Twitter
        8 juillet 2007 à 19:05:41

        opengl fonctionne en SDL non??
        alor il te suffit de blitter une moitier de sphere!!^^
        • Partager sur Facebook
        • Partager sur Twitter
          8 juillet 2007 à 19:10:58

          Citation : neuneutrinos

          opengl fonctionne en SDL non??
          alor il te suffit de blitter une moitier de sphere!!^^



          ...
          Ah ouais quand même...

          heu... tu pourrais préciser ?
          (sous entendu j'ai l'impression que tu te plante monumentalement mais il est possible que tu te sois mal exprimé)

          EDIT : sans vouloir être vexant bien sur. Ca arrive à tout le monde de se planter, moi le premier.
          • Partager sur Facebook
          • Partager sur Twitter
            8 juillet 2007 à 19:43:56

            Citation : neuneutrinos

            opengl fonctionne en SDL non??
            alor il te suffit de blitter une moitier de sphere!!^^



            Et non, car on utilise pas les fonctions de la SDL pour l'affichage; uniquement de l'OpenGL.

            Pour se remettre dans le contexte, OpenGL ne permet que de dessiner une scène 3D dans un conteneur (une fenêtre).
            Encore faut il donc choisir une bibliothèque pour gérer la fenêtre. Les plus utilisés sont SDL, glut, on encore celle propre à windows.


            Pour ce qui est de l'affichage d'une demie sphère, je ne crois pas que ce soit possible. Ca l'est peut être, mais je n'en ai jamais entendu parlé.
            Les cours sur les quadrique n'en parlent pas non plus. http://www.siteduzero.com/tuto-3-7124-1-les-quadriques.html

            L'importation d'un modèle reste peut être la meilleur solution ?
            • Partager sur Facebook
            • Partager sur Twitter
              8 juillet 2007 à 19:59:03

              Ou alors on peut coder sa fonction demi-sphere, c'est pas très compliqué avec ça.
              • Partager sur Facebook
              • Partager sur Twitter
                8 juillet 2007 à 22:05:35

                salut
                merci de votre attention

                alors je me plante pas je veux bien une demi sphere.
                Je n'utilise pas la sdl mais fltk pour la gestion des fenetre.
                Le rayon de sphere n'est pas forcement 1 exemple 0.5.

                Pour ce qui est de coder le fonction sa fait peux etre gros surtout qu'il n'y a pas que sa a faire tourner.

                La question sur le model et de savoir si l'on peux modifier ces cote pandent une excution du programme?

                voila ++
                • Partager sur Facebook
                • Partager sur Twitter
                  8 juillet 2007 à 22:25:57

                  Citation : dorone

                  Le rayon de sphere n'est pas forcement 1 exemple 0.5.


                  Au temps pour moi désolé.


                  Citation : dorone

                  Pour ce qui est de coder le fonction sa fait peux etre gros surtout qu'il n'y a pas que sa a faire tourner.


                  Oui, mais en revanche, si tu veux à chaque fois faire un model stocké sur le disque dur pour un solide un peut compliqué, tu ne vas pas t'en sortir.


                  Citation : dorone

                  La question sur le model et de savoir si l'on peux modifier ces cote pandent une excution du programme?


                  Tu veux dire "modifier la géométrie" ?
                  Oui tu peux, puisque normalement tu es de toute façon obligé de coder ta propre fonction d'import de model 3D si tu travailles avec OpenGL,
                  Et donc il te suffit de modifier les coordonnées des points indexés dans le tableau (ou la liste). A condition bien sûr, que tu saches ce que tu fais avec les points, parce que je vois pas trop l'intérêt de les modifier à la main dans le prog, a moins d'automatiser les modifs par un algorithme...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 juillet 2007 à 22:46:59

                    Ok merci je vais me pancher sur l'inport de model et je les modifirer dans le programme.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 juillet 2007 à 22:57:02

                      Citation : le grand schtroumpf

                      Citation : dorone

                      Le rayon de sphere n'est pas forcement 1 exemple 0.5.


                      Au temps pour moi désolé.



                      Mais le rayon de la sphère n'a rien à voir.
                      Avec une modification de l'échelle de la matrice comme tu l'as dit ça marchera très bien.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 juillet 2007 à 10:47:28

                        Selon moi, c'est possible mais je l'ai jamais fait.

                        Il "suffirait" de plaquer une texture à moitié transparente sur une sphère.

                        Mais encore une fois je sais pas si ça marche.

                        Sinon, il y a évidemment la possibilité d'utiliser le stencil-buffer, mais là ça devient compliqué et trop long à expliquer en 2 lignes.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                          9 juillet 2007 à 11:50:15

                          salut il est vraix que je n'avait pas penser a modifier l'echelle.

                          je vais y regarder merci
                          • Partager sur Facebook
                          • Partager sur Twitter
                            9 juillet 2007 à 15:10:43

                            Sinon, tu y fais a la main :

                            void recursSphere(Vecteur a,Vecteur b,Vecteur c,int precision)
                            {
                            if (precision==0)
                            {
                            Normalize(a);
                            Normalize(b);
                            Normalize(c);
                            glBegin(GL_TRIANGLES);
                            glNormalV(a);glVertexV(a);
                            glNormalV(b);glVertexV(b);
                            glNormalV(c);glVertexV(c);
                            glEnd();
                            return;
                            }
                            recursSphere(a,(a+b)/2,(a+c)/2,precision-1);
                            recursSphere((a+b)/2,b,(b+c)/2,precision-1);
                            recursSphere((a+c)/2,(b+c)/2,c,precision-1);
                            recursSphere((a+c)/2,(a+b)/2,(b+c)/2,precision-1);
                            }

                            void Sphere(int precision)
                            {
                            recursSphere(Vecteur(1,0,0),Vecteur(0,1,0),Vecteur(0,0,1),precision);
                            recursSphere(Vecteur(0,1,0),Vecteur(-1,0,0),Vecteur(0,0,1),precision);
                            recursSphere(Vecteur(-1,0,0),Vecteur(0,-1,0),Vecteur(0,0,1),precision);
                            recursSphere(Vecteur(0,-1,0),Vecteur(1,0,0),Vecteur(0,0,1),precision);
                            recursSphere(Vecteur(0,1,0),Vecteur(1,0,0),Vecteur(0,0,-1),precision);
                            recursSphere(Vecteur(-1,0,0),Vecteur(0,1,0),Vecteur(0,0,-1),precision);
                            recursSphere(Vecteur(0,-1,0),Vecteur(-1,0,0),Vecteur(0,0,-1),precision);
                            recursSphere(Vecteur(1,0,0),Vecteur(0,-1,0),Vecteur(0,0,-1),precision);
                            }

                            Ce code (que tu appelles via la fonction "Sphere") te pond une sphere entiere. En fait, il fait 8 huitiemes de sphere : il te suffit de commenter les 4 denieres lignes de la fonction sphere poru avoir les demi spheres.

                            Note1 : passe 2 ou 3 en parametre : c'est la précision du nombre de triangles a mettre : c'est exponetiel, évite de passer un nombre plus grand que 4 ou 5...
                            Note2 : ces fonction utilisent ma classe Vecteur : il s'agit d'un objet qui surcharge l'arithmétique des points et vecteurs, je te laisse adapter...
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                              9 juillet 2007 à 18:22:11

                              merci pour ce jolie code. je vais voir exactement quoi utiliser car la boucoup de solution

                              edite:10/07/07

                              bonjour,
                              je croix que je devient fou car suite a quelque codage la manipulation du logiciel devient trop mal faitte. J'aurais aimer cette fois savoir comment les logiciel de cao font pour faire une revolution etant donner qu'il ny a pas de fonction de basse.

                              je dévelope un peux, l'utilisateur va desinner la forme voulut, sa c pas le probleme il la desine en 2d mais apres je doit afficher le rendu dans la fenetre gl le probleme donc comment passer de sa
                              Image utilisateur

                              a un rendu gl en conaisant les point?
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                11 juillet 2007 à 1:11:46

                                Je sais pas si ca peut d'aider mais si tu veux la formule d'un cercle (aprés tu te débrouille pour l'appliqué et le dessiner).
                                R² = (X - A )² + (Y - B )²

                                Donc A et B c'est l'origine du cercle
                                R c'est le rayon
                                Et puis X et Y c'est les coordonnées des points qui serons sur le cercle.
                                on peut aussi l'écrire (avec un peu d'aide de wiki et oui la terminal et bien loin 2 ans ^^ avait oublier le X² + Y² = 1 )

                                Y = B - racine ( R²  - ( X - A ) ² )
                                Y = B + racine ( R²  - ( X - A ) ² )

                                Donc tu parcour donc tout ton image et puis tu desine ton ou tes points.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  11 juillet 2007 à 8:36:11

                                  pour faire des surfaces de révolution, déja, les logiciels de CFAO n'utilisent pas de triangles : tout se fait avec des BREP de surfaces analitiques.

                                  Pour décrire une surface de révolution, il faudra te servir de sinus et de cosinus, entre autres.
                                  Ensuite, pour la discrétiser (mise en triangles) tu prendras quelques points significatifs sur la surface analitique. Mais en interne, c'est pas des triangles : c'est surtout des NURBS.
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                                    11 juillet 2007 à 16:03:17

                                    re, la pige plus rien apres quelque recherche je ne comprend pas comment on fait exactement.

                                    j'arrive a calculer tous le point meme a la dessiner en 2d mais pas la modeliser avec des surface.Pour etre fran faudrais me developer comment placer les nurbs car je peux en faire une avec tous mais d'apres ce que j'ai compris ces une mauvais idée.

                                    Relier un serie de point cerait peux etre plus facile non ?

                                    je ne veux pas de code juste un peux plus de developement
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      12 juillet 2007 à 0:58:04

                                      Bah au pire, je ne mesure pas la difficulté comme ça sur un coup de tête, mais pourquoi ne pas créer une classe Demisphere que tu coderai intégralement avec des glVertex3d(x, y, z); ?

                                      Regarde, tu crées un point. A partir de là tu crées des triangles tous isocèles. Et à partir de là, tu peux créer des QUADS en partant de chaque sommet n'étant pas la base d'un triangle. Je pense que ça ne ce fait pas comme ça mais en réfléchisant bien ça ne doit pas être la fin du monde si ?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        12 juillet 2007 à 1:30:10

                                        Citation : Kevin Leonhart

                                        Citation : neuneutrinos

                                        opengl fonctionne en SDL non??
                                        alor il te suffit de blitter une moitier de sphere!!^^



                                        ...
                                        Ah ouais quand même...

                                        heu... tu pourrais préciser ?
                                        (sous entendu j'ai l'impression que tu te plante monumentalement mais il est possible que tu te sois mal exprimé)

                                        EDIT : sans vouloir être vexant bien sur. Ca arrive à tout le monde de se planter, moi le premier.



                                        Je pense qu'il disait ça en plaisantant ^^

                                        Sinon soit tu te fais ta fonction, soit comme tu l'a dit tu importe un mesh qu tu redimentionne.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          12 juillet 2007 à 10:51:10

                                          salut le probleme a un peux changer j'ai du editer un messega est tu na pas du le voir.

                                          maintenen le but est de faire une revolution le codage de la sphere ne resoudrais mon probleme que pour un rendu d'un outils tros lourd de faire sa pour tous les outils et sur l'evolution du programme il faudrais tou recoder.

                                          le problemme de la revolution ces que je ne touve pas de suprerbe exemple sur les nurbs.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            12 juillet 2007 à 17:33:47

                                            Oublie tout de suite cette histoire de Nurbs: c'est pas du tout adapté à la situation. C'est éventuellement utile pour décrire des surfaces est des courbes dans des logiciels de modélisations, style 3dsmax, maya, ou encore pour faire du design industriel. Juste pour dessiner une hémisphère, en faisant une révolution, il faut procéder ainsi: (ça va donner une UV Sphere, pour les familiers de Blender.)

                                            Tu definis un profil, à l'aide de quelques points, sur un plan. Par exemple un quart de cercle centré en (0,0,0), dont une extrémité est en (1,0,0) et l'autre en (0,1,0). Pas besoin de beaucoup de point, 5-6, c'est déja pas mal. Tout dépand de la résolution que tu veux obtenir. Ensuite, tu fais tourner ce profil autour d'un axe de révolution, dans notre cas, ca pourrai etre le vecteur (1,0,0). Ca va te donner un ensemble de points qui décrivent approximativement une hémisphère. Après, à toi de te débrouiller pour appeler glVertex3* dans le bon ordre, avec les bon point. Encore mieux, mais visiblement t'en est pas envore là: utilise un VBO pour le rendu, ca sera plus rapide.

                                            PS: essaye de formuler des phrases intelligibles et avec moins de fautes, ça sera plus agréable à lire pour tout le monde. (et t'aura moins de réponses à coté de la plaque.)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              12 juillet 2007 à 18:54:00

                                              J'aurais du faire un autre post.

                                              Le probleme c'est que je suis partie dans ton sens pendant un moment et que apres mure reflextion je doit faire une revolution car je ne gere pas que des 1/2 sphere.

                                              j'ai trouver des explication sur les revolution mais j'avoue cas mon niveaux de math et de opengl ces assez dur a mettre en place.

                                              Il me faudrais plus d'aide surr le principe de revolution

                                              merci

                                              ++



                                              [edit]

                                              je ferme le sujet car le probleme de la sphere est resolut
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                16 juillet 2007 à 14:31:28

                                                désolé de remettre le sujet au goût du jour vu que ton problème est résolu, mais une solution toute simple serait de faire un plan de clipping. Enfin à mon avis cela devrait fonctionner.

                                                Et la mise en oeuvre serait toute simple !
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                [opendgl]

                                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                • Editeur
                                                • Markdown