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 :

[ViewMatrix] Différence de rendu


Sujet :

OpenGL

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 34
    Par défaut [ViewMatrix] Différence de rendu
    Bonjour,

    Je tente actuellement de m'emparer petit à petit des notions englobant la création d'une caméra, et je suis confronté à une différence de rendu entre mon implémentation de caméra, et celle rendu par l'appel de la fonction gluLookAt.

    Et je n'arrive pas à comprendre pourquoi.
    En fait, pour être précis, on dirait que dans mon rendu, la distance de la caméra par rapport à la scène est doublée. *

    Pourtant, il me semble bien d'après les différents articles, documentations, et consorts que j'ai pu lire à ce sujet faire la même chose que ce que glulookat fait.

    Voici ce que je fais :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Camera::Camera()
    {
    	glMatrixMode(GL_PROJECTION);
    	gluPerspective(90.f, 4.f/3.f, 0.1f, 100.f);
    	glMatrixMode(GL_MODELVIEW);
    	eye_.set(1.f,0.f,1.f);
    	target_.set(0.f,0.f,0.f);
    	up_.set(0.f,1.f,0.f);
     
    	lookAt();
    }
     
    void	Camera::update(int elapsedTime) const
    {
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
     
    	glMultMatrixf(&viewMatrix_[0][0]);
    	glTranslatef(-eye_.x, -eye_.y, -eye_.z);
    	//gluLookAt(1,0,1,0,0,0,0,1,0);
    }
     
    void	Camera::lookAt()
    {
    	const static int x = 0, y = 1, z = 2, w = 3;
     
    	Vector3	left, forward, zAxis;
     
    	forward = target_ - eye_;
    	forward.normalize();
    	zAxis = -forward;
    	zAxis.normalize();
     
    	//Left
    	left = Vector3::cross(forward, up_);
    	left.normalize();
     
    	up_ = Vector3::cross(left, forward);
    	up_.normalize();
     
    	viewMatrix_.identity();
     
    	viewMatrix_[x][x] = left.x;
    	viewMatrix_[y][x] = left.y;
    	viewMatrix_[z][x] = left.z;
    	viewMatrix_[w][x] = -Vector3::dot(eye_, left);
     
    	viewMatrix_[x][y] = up_.x;
    	viewMatrix_[y][y] = up_.y;
    	viewMatrix_[z][y] = up_.z;
    	viewMatrix_[w][y] = -Vector3::dot(eye_, up_);
     
    	viewMatrix_[x][z] = zAxis.x;
    	viewMatrix_[y][z] = zAxis.y;
    	viewMatrix_[z][z] = zAxis.z;
    	viewMatrix_[w][z] = -Vector3::dot(eye_, zAxis);
     
    	viewMatrix_[x][w] = 0.f;
    	viewMatrix_[y][w] = 0.f;
    	viewMatrix_[z][w] = 0.f;
    	viewMatrix_[w][w] = 1.f;
    }
    Lorsque je veux tester pour gluLookAt, je dé commente la l.20 et je commente les deux lignes du dessus, et vice versa.

    La méthode update est appelée avant chaque rendu, la méthode lookAt n'est - pour le moment - appelée qu'à la construction de l'objet Camera.

    Les objets mathématiques utilisés (Vector3, Matrix4, etc.) proviennent tous de la librarie de DHPoware, trouvable ici.

    Du coup, je ne comprends pas bien ce que je fais de mal. La matrice de projection/perspective doit elle intervenir dans le calcul ? Un problème d'initialisation ?
    Je suis pas mal bloqué face à cette différence, du coup, si quelqu'un pouvait m'aiguiller, je lui serai grandement reconnaissant(e).

    * Cf: Pièce-jointe.
    Images attachées Images attachées  

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

Discussions similaires

  1. Différence de rendu du code entre IE et Google Chrome
    Par polynesian turtle dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/01/2010, 14h20
  2. Différence de rendu entre notebook et PC
    Par LordBob dans le forum Webdesign & Ergonomie
    Réponses: 4
    Dernier message: 21/06/2009, 22h02
  3. Différence de rendu d'un tableau en CSS sous IE et Firefox
    Par bubulemaster dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 19/06/2008, 21h12
  4. [VBO] différence frame - rendu
    Par crischprolch dans le forum OpenGL
    Réponses: 0
    Dernier message: 20/03/2008, 09h28
  5. Caractères - Unicode - différence de rendu PC Mac
    Par bestdomdom dans le forum Général Python
    Réponses: 3
    Dernier message: 04/06/2007, 15h41

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