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 :

[tsf, rot] faire bouger la caméra ou un cube, c'est pareil?!


Sujet :

OpenGL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Par défaut [tsf, rot] faire bouger la caméra ou un cube, c'est pareil?!
    HELLO LE MONDE !!

    J'éprouve encore du mal à comprendre certaines notions en OpenGL....
    Ce sont les rotations et translations, mais mon incompréhension sur ces points est plus générale encore.

    quand on fait un glTranslatef() ou glRotatef() avant un objet comme un cube ou une plaque 2D, c'est bien cet objet qui tourne ou translate....

    Mais si l'on décide que l'objet ne se déplace pas et que c'est la caméra qui doit se déplacer....on fait comment là ??
    Je connais une méthode qui consiste à faire un glLoadIdentity() avant certains éléments de la scène pour annuler les translations et rotations qui étaient appliquées aux autres objets de la scène (avant ou après) et ne faire ce genre de transformations pour qques objets parmis tant d'autres.

    Mais le problème reste entier pour moi, comment ne faire bouger QUE la caméra et pas les objets envirronants. (Si la scène deviens excésivement complexe, le fait faire translater ou tourner tous les objets de la scène autour de la caméra va faire tout lager !! d'où ma demande si vous la connaissez)

    Qu'en pensez-vous ??
    Séb.

  2. #2
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 549
    Par défaut
    En fait de notion de caméra il faut penser déplacement inverse
    en gros :
    si tu veux t'éloigner d'un objet tu dois l'éloigner de toi, facile
    si tu veux te déplacer vers la gauche tu dois déplacer les objets vers la droite

    la caméra c'est toujours le centre du monde
    tu dois penser en opérations inversées

    une fonction utile qui fait cela à ta place : gluLookAt
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Par défaut
    GRRRRR !! C'est bien ce que je craignais !!
    Ok, merci pour ces renseignements utiles.

    Petite question encore : au lieu de GluLookAt(), on peut quand même utiliser à la place (pour déplacer la scène donc) glTranslate() ou glRotate(), car se qui me dérange dans GluLookAt(), c'est qu'il doit toujours avoir un point cible à "regarder" (les 3 paramètres suivants dans la fonction). Ce qui fait que si on translate (donc de manière rectiligne) et si l'on dépasse le point ciblé au départ, la caméra va se retourner subitement en arrière ca le point ciblé est maintenant en arrière.

    Une dernière question : c'est OpenGL ou DirectX qui permet de faire les effets les plus réalistes?

    Merci encore.
    Séb.

  4. #4
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 549
    Par défaut
    oui on peux utiliser des glTranslate et des glRotate pour obtenir les même résultat que GluLookAt
    sinon ton problème osé tu peux le résoudre en déplaçant aussi le point ciblé

    Citation Envoyé par cyber_N
    Une dernière question : c'est OpenGL ou DirectX qui permet de faire les effets les plus réalistes?
    OpenGL !!!
    non sérieusement, Ne poses jamais ce genre de question, les pro-directx vont te répondre ... directx et les pro-opengl vont te répondre opengl (je suis pro-opengl donc )
    de mon avis les deux peuvent te permettre d'obtenir le même résultat, il suffit de savoir bien les utiliser

    les principaux avantages d'opengl étant sa portabilité et sa facilité d'apprentissage
    perso je déteste directx vu du programmeur, c'est une merde à programmer, son orientation objet est prise de tête
    mais c'est mon avis

    et puis, c'est quoi un effet réaliste ? un vaisseau qui explose ? j'en ai jamais vu en vrai
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Par défaut
    Ok pour OpenGL! Je suis tout à fait pour et d'accord avec toi.

    Mais je ne comprends pas pourquoi tant de jeux commerciaux très récents voir à venir, utilise DirectX si c'est prise de tête et en plus de MicroSoft, donc propriétaire et donc payant.
    C'est vrai quoi!

  6. #6
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Salut,

    Il a quoi directx en plus que opengl? Je sais que c est une question de boulet..mais je veus savoir
    En tout cas moi j'choisi opengl..simple, portable..
    merci 8)

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    DirectX a en plus des bibliothèques de son, de réseau, de video, etc... OpenGL lui ne fait que le rendu graphique.

    A part ça, rien ne sert de démarrer un troll : c'est exactement la même chose, simplement un peu différemment.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Par défaut
    Je ré-itère ma question:

    Loulou24 a écrit:
    DirectX a en plus des bibliothèques de son, de réseau, de video, etc... OpenGL lui ne fait que le rendu graphique.
    C'est pour cela que tant de boites de développement de jeux utilise DirectX?
    Sinon Pourquoi??

    Merci encore.
    Séb.

  9. #9
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Normallement en OpenGL il y a toujours des equivalents non?

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    C'est pour cela que tant de boites de développement de jeux utilise DirectX?
    Sinon Pourquoi??
    Je me suis jamais vraiment penché sur la question. Peut-être au niveau du support ? (qui assure le support d'OpenGL ?)
    Ou alors parce que la plateforme visée est dans 95% des cas Windows, et que DirectX s'y intègre parfaitement ?

    Bon et puis il ne faut pas oublier que Mr Carmack nous livre toujours des moteurs 3D écrits en OpenGL, comme quoi ce n'est qu'une question de choix.

  11. #11
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    et il ne faut pas oublier que par derriere ce sont les même cartes (et tres probablement les même "fonctions" du proc graphique qui sont utilisée... apres tout depend du talent du developpeur, pas tellement de l'API utilisée...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Par défaut
    Je vais sans doute dire un truc con mais les moteurs de jeux actuel sont fait pour les 2 enfin ils peuvent tourner soit en OpenGL soit DirectX?!?

    De toute facon il n'y a pas de bataille entre OpenGL et DirectX car c'est un choix perso et chaqu'un a ses avantage et inconveniants et si aussi bien OpenGL que DirectX arrivent a gerer des jeux dit de se nom alors c'est qu'il sont a peu pres equivalent au final car personnelement je ne peux pas vraiment differencier si un jeux tourne en OpenGL ou DirectX si je n'est pas vu le logo microsoft games au debut lol...

    Sinon pour ton probleme de camera tu peux faire de 2 facon soit deplacer tes objets ou deplacer la camera
    Pour deplacer les objets il te suffit just d'agir avec les glTranslate() ou glRotate()

    Sinon moi j'agit sur le GluLookAt() avec des variable et ca donne a peu pres le meme resultat mais je ne sais pas si c'est codement correct.

    Mais je ne comprends aps tres bien ton probleme ici:
    Petite question encore : au lieu de GluLookAt(), on peut quand même utiliser à la place (pour déplacer la scène donc) glTranslate() ou glRotate(), car se qui me dérange dans GluLookAt(), c'est qu'il doit toujours avoir un point cible à "regarder" (les 3 paramètres suivants dans la fonction). Ce qui fait que si on translate (donc de manière rectiligne) et si l'on dépasse le point ciblé au départ, la caméra va se retourner subitement en arrière ca le point ciblé est maintenant en arrière.
    Si tu parle de principe de camera libre* et bein on peut le faire en bidouillant un peu avec 2 3 variables

    *camera libre: defini par (tX,tY,tZ,rX,rY,RZ)
    tX=position en X etc...
    rX=rotation dans les coordonnés World
    contrairement à la camera cible comme GluLookAt()
    camera cible=gluLookAt (tX,tY,tZ,tpX,tpY,tpZ,0,1,0);
    ou tpX=position du point cible

    Or si tu resort tes vieux cour de maths tu peux te demerdé pour retrouver tout ca avec les coordonnées polaires (cercle trigonometrique).

    De tout facon meme la camera libre a un point cible mais tu ne le gere pas.

    mais si tu fais que des translation de camera tu peux te démerder pour que le vecteur camera Vc=(tX;tpX) (tY;tpY) (tZ;tpZ) et apres il te suffit de rajouter une variable un petit exemple en algo (donc pas de langage specifique) rapide:

    X=-5
    Y=-5
    Z=0
    mouvx++;
    gluLookAt (X+mouvx),Y,Z,((X+5)+mouvx),(Y+5),Z,0,1,0);

    Je sais pas si j'ai été clair car en me relisant ca parait un peu brouillon
    En tout cas si tu veux que je schématise le principe pour meiux replacer les tX rX tpX etc.. ésite pas.

    Sinon es ce que quelqu'un a essayer de faire un translate ou rotate sur le gluLookAt ?
    A se moment la es ce que le gluLookAt est considéré comme un objet dis camera?

    Enfin je pensse que ca doit donner un truc bizarre car si on translate un "objet" qui definit sa position lui meme...

    Je ne connais pas enormement de choses en OpenGL mais en revanche je susi infographiste donc je connais assez bien la 3D donc c'est possible que je me soit expliqué plus de facon infographiste que coder.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Par défaut
    Tiens, salut Métrix (RE) !!

    Tu as été très clair sur le sujet !!
    Merci pour l'info !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire bouger le curseur automatiquement...
    Par shadowbob dans le forum C++
    Réponses: 2
    Dernier message: 08/12/2005, 20h56
  2. Réponses: 2
    Dernier message: 05/07/2005, 17h40
  3. Réponses: 10
    Dernier message: 06/05/2005, 19h02
  4. [FLASH MX2004] Faire bouger un clip
    Par Ticoche dans le forum Flash
    Réponses: 2
    Dernier message: 21/11/2004, 10h17
  5. Faire bouger un personnage
    Par DeusXL dans le forum DirectX
    Réponses: 35
    Dernier message: 09/06/2004, 15h49

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