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

OpenGL Discussion :

Objets de base (cube, triangles, polygones etc)


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut Objets de base (cube, triangles, polygones etc)
    Bonjour,
    pour mon petit moteur 3D, je voudrais créer des formes de base (cube, polygones, sphere ...) indépendantes de l'API (OGL, OGLES, D3D). Le rendu selon chaque API sera fait plus tard. Je me demande ce dont j'aurai besoin à part les points définissant la forme.

    Par exemple pour un cube, est-ce que je peux modèliser le cube par ses 8 points ou bien 2 suffisent (ceux d'une diagonale) parce qu'il me parait juste de n'avoir qu'une diagonale pour déterminer le reste mais je ne m'en sors pas.

    Ensuite, je me demandais si les normales doivent etre stockées ou pas.

    Merci

  2. #2
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Salut,

    c'est à toi de décider ce que tu veux avoir comme informations dans tes objets et de trouver un compromis entre simplicité et précision.

    Pour un cube, plutôt que 2 points je n'en utiliserais qu'un seul, le centre, associé au rayon du cube. à partir de là tu peux calculer tes 8 sommets (fait le une fois à la création, pas à chaque frame).
    Pour les normales, elles ne "doivent" pas être stockées, mais ca sera effectivement plus rapide de les calculer une fois et de les stocker que de le refaire à chaque frame.

    Sinon, tu peux ajouter à tes objets
    - une couleur (ou un materiau, si tu utilises l'éclairage)
    - une texture
    - une display list: pour des petits objets comme un cube ca n'apporte rien mais si tu as de plus gros trucs à afficher.... Bon j'ai vu que maintenant on utilise plutôt les vertex buffer objects que les display list..mais vu que je n'ai pas encore franchi le pas.....

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut
    merci,
    pour le cube, si j'utilise le centre + le rayon, je calcule mes autres relativement au centre, non ? cela implique quoi pour le rendu ?

    Si j'ai une fonction render_OGLES() qui produit le rendu en se servant de l'API openGL ES, dans mon prog, je crée un objet Cube avec comme paramètres le centre et le rayon. Puis je calcule les autres pts que je stock où ?

    merci

  4. #4
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    OK, pour faire simple, t'as une classe qui ressemble à ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    struct Point3D
    {
      float x, y, z;
    };
     
    class GLCube
    {
       Point3D m_centre;
       float m_rayon;
     
       Point3D m_sommets[8];
     
       GLCube(float rayon, Point3D centre);
      ~GLCube();
    };
    dans ton constructeur, tu mets à jour les 8 sommets:
    m_sommets[0] = (m_centre.x - rayon, m_centre.y - rayon, m_centre.z - rayon)
    m_sommets[1] = (m_centre.x + rayon, m_centre.y - rayon, m_centre.z - rayon)
    m_sommets[2] = (m_centre.x - rayon, m_centre.y - rayon, m_centre.z + rayon)
    , etc (NOTE: c'est pas du code là....)

    Un alternative est de créer un cube unité (diagonale (-1,-1,-1) => (1,1,1) )
    et d'utiliser glScalef pour fixer la taille et glTranslatef pour déplacer le centre. L'avantage est que tu n'as plus de sommets à stocker, mais je crois que glScale est assez lourd pour les performances (à confirmer svp)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut
    j'ai voulu réagir avant de lire ton post ... lol

    Pour le reste, j'avais bien compris .

    Merci

  6. #6
    Membre confirmé Avatar de babar63
    Homme Profil pro
    Développeur jeux vidéos/3d Temps réel
    Inscrit en
    Septembre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur jeux vidéos/3d Temps réel

    Informations forums :
    Inscription : Septembre 2005
    Messages : 241
    Par défaut
    Bonjour,
    Pour ma part, je n'aurais pas mis de centre. La longueur d'une arête est suffisante pour calculer les coordonnées locales du cube. Ensuite une matrice permet de situer (/orienter) le cube dans le monde (/caméra).

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/09/2007, 17h29
  2. Transformer Objets en Base de données
    Par vain_mich dans le forum JDBC
    Réponses: 2
    Dernier message: 14/05/2007, 09h27
  3. Objet de base d'une classe derivée
    Par Seth77 dans le forum C#
    Réponses: 7
    Dernier message: 03/05/2007, 13h39
  4. Objet en base
    Par Mercenary Developer dans le forum JDBC
    Réponses: 2
    Dernier message: 11/04/2006, 12h34
  5. Fractale à base de triangles
    Par ixterm dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 25/03/2005, 10h14

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