Bonjour,

Je suis en train de faire un raytracer et j'ai un petit problème qui vient surement de ma caméra. Dans l'image final, les axes x et y sont inversés, x étant verticalement maintenant. Je suppose que c'est du à une mauvaise initialisation de la caméra?

Ma caméra est défini comme un vecteur3D position, direction, upVecteur, rightVecteur.

J'initialise ma caméra par rapport à la scène comme ceci:
(center est le point au centre de la scène

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
//camera
    Camera * cam = new Camera();
 
    //position de la caméra
    Vec3Df camPos = Vec3Df(center[0], center[1], center[2] + 7);
    cout<<"camPos "<<camPos<<endl;
 
    //direction de la camera
    Vec3Df direction = Vec3Df(center[0]-camPos[0], center[1]-camPos[1], center[2]-camPos[2]);
    direction.normalize();
    cout<<"direction "<<direction<<endl;
 
    //up vector de la caméra
    Vec3Df upVector = Vec3Df(0.0f, 1.0f, 0.0f);
    cout<<"upVector "<< upVector<<endl;
 
    //right vector de la camera
    //Vec3Df produitRV = Vec3Df::crossProduct(direction, upVector);
    //cam->setRightVector(produitRV);
    //Vec3Df rightVector = cam->getRightVector();
    Vec3Df rightVector = Vec3Df(1.0f, 0.0f, 0.0f);
    cout<<"rightVector "<<rightVector<<endl;
Est-ce que c'est bien comme ca que je dois faire pour le vecteur up et right?