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 :

Camera derrière un objet


Sujet :

OpenGL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 91
    Points : 62
    Points
    62
    Par défaut Camera derrière un objet
    Bonjour,

    J'ai maintenant un cube qui se deplace dans l'espace et qui tourne comme une voiture (normal quoi).Le problème est que la camera le suit toujours, mais j'aimerai qu'elle tourne en même tps que lui. En gros que le joueur voit toujours le cul de la voiture.
    Pour ca je pense qu'il suffit de changer le gluLookAt mais j'hesite entre la 2e ou la 3e ligne. et je ne sais pas par quelles valeurs les changer. Si j'y met l'angle de rotation du cube ca donne pas le bon effet car la camera est située derrière lui.

    Merci

  2. #2
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    tu peux detailler un peu plus stp

    genre montrer ton bout de code ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 91
    Points : 62
    Points
    62
    Par défaut
    C'est dur de montrer le code sur ca parce que j'en ai pas (puisque j'arrive pas a le faire).
    Ma camera regarde toujours la meme direction et bouge dans la meme direction que le cube :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    glLoadIdentity;
    gluLookAt( 0.0 + pos_x, 15.0 , -30.0 + pos_z, 
                    0.0 + pos_x, 0.0 , 20.0 + pos_z,   
                    0.0 , 1.0 , 0.0 );
    Sachant que pos_x et pos_z sont la position du cube.

    Maintenant notre cube tourne grace a la fonction glRotate. La camera doit tourner en meme temps que lui. Elle doit toujours voir sa face arriere meme quand le cube tourne sur lui meme.

    Voila j'espere que c'est plus explicite> Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,

    Fais toi un petit schéma, et tu verras que:
    - la caméra doit suivre le "centre" du cube, à une distance que tu peux vouloir régler,
    - et quand le cube tourne autour de son centre, la caméra doit également tourner du même angle autour de ce même point.

    (Mais si, fais un schéma, et ça te sautera aux yeux.)
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  5. #5
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Citation Envoyé par thewho
    Bonjour,

    Fais toi un petit schéma, et tu verras que:
    - la caméra doit suivre le "centre" du cube, à une distance que tu peux vouloir régler,
    - et quand le cube tourne autour de son centre, la caméra doit également tourner du même angle autour de ce même point.

    (Mais si, fais un schéma, et ça te sautera aux yeux.)


    exact avec des sin et cos(angle) tu vas t en sortir, mais ca risque d etre pas terrible comme effet juste comme ca car tu risque d avoir l impression que c tout ton monde qui tourne et pas juste ton cube

    (ps : lol moi aussi j ai debuté openGL avec un cube et la camera dessus , au final ca a donné ce jeu :
    http://www.hotdownloads.com/index.php3?job=3&id=70889 )

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 91
    Points : 62
    Points
    62
    Par défaut
    ok je vois que c'est le même angle mais ces cos/sin je les met dans quelle partie de la camera ? la premiere la deuxième ligne ou la 3e ligne? (dans le gluLookAt).

    Et je suis d'accord que je verrai pas tourner mais alors comment je peux faire pour mon jeu de kart si je le suit pas ? A un moment le circuit fera un demi tour et je verrai plus la piste mais la face de mon kart :p

    Ton jeu est tres bien mais la caméra regarde toujours vers le haut : c'est ce que j'ai pour l'instant. Et now je pense suivre la rotation sinon je vois pas d'autres moyens pour l'instants...des idées ?

  7. #7
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Citation Envoyé par Dr@ke
    ok je vois que c'est le même angle mais ces cos/sin je les met dans quelle partie de la camera ? la premiere la deuxième ligne ou la 3e ligne? (dans le gluLookAt).

    ca doit etre un truc du style ca , si j ai bien compris ce que tu cherche a faire ...

    la premiere ligne du lookat c la pos de ta camera , donc c la que tu dois reproduire l angle de rotation de ton kart


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    gluLookAt( kart_x + ( sin(angle_kart) * distance_kart ) , y , kart_z + (cos(angle_kart) * distance_kart ,
     
    kart_x,kart_y,kart_z,0,1,0);

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 91
    Points : 62
    Points
    62
    Par défaut
    ok la ca devrait changer la position de la caméra. Mais elle ne tournera pas sa "tête". Bon je vais deja testé ca, apres je pense qu'il faut modifier la 2nd ligne qui lui donne la direction de son regard.

  9. #9
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    la je comprends pas pourquoi tu dis ca

    en faisant ca , ta camera sera exactement a l arriere de ton kart , a supposer que ton modele soit orienté correctement au depart ,

    donc tu te retrouve avec ca :




    * ------- * -------------------- *
    cam kart direction du regard

    la deuxieme ligne comme tu dis est le point que la cemera fixe

    http://www.mevis.de/~uwe/opengl/gluLookAt.html

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    un truc simple a faire :

    ton kart doit avoir un vecteur de direction non ? dans ce cas la il te suffit de placer la camera a position -(direction*k) avec k une valeur definissant l'eloignement de la camera par rapport au kart.
    et puis ensuit il suffit de faire regarder la camera dans la direction du kart (param 4,5 et 6 de gluLookAt)

    en gros c donne environs ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    float kartDirection[3];
    float kartPosition[3];
    [...]
    float camPosition[3];
    float distanceCamKart = 10;// 10 est un exemple...
    camPosition[0] = kartPosition[0] -kartDirection[0] * distanceCamKart;
    camPosition[1] = kartPosition[1] -kartDirection[1] * distanceCamKart;
    camPosition[2] = kartPosition[2] -kartDirection[2] * distanceCamKart;
     
    gluLookAt (camPosition[0],camPosition[1],camPosition[2],kartPosition[0],kartPosition[1],kartPosition[2],0,1,0);
    et voila
    * 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

Discussions similaires

  1. Camera qui n'affiche que certains objet
    Par info_sara dans le forum Ogre
    Réponses: 0
    Dernier message: 03/03/2012, 21h29
  2. Réponses: 4
    Dernier message: 24/03/2011, 09h12
  3. Réponses: 6
    Dernier message: 12/11/2010, 04h19
  4. Objet derrière un autre et pourtant affiché
    Par mister3957 dans le forum DirectX
    Réponses: 3
    Dernier message: 24/11/2005, 22h21
  5. Un objet rendu apparaît derrière un autre objet
    Par jamal24 dans le forum OpenGL
    Réponses: 2
    Dernier message: 01/05/2003, 20h47

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