CAMERA


    Documentation











[revenir à la page d'accueil]

CAMERA représente une projection de la scène 3D vers l'image.

Les fonctions principales sont la description d'une projection :

extern void camera_set_projection_opengl(CAMERA *camera);
    récupère la projection openGL en cours d'utilisation et l'utilise pour initialiser l'objet CAMERA.

extern void camera_set_pos(CAMERA *camera, float x, float y, float z);
    indique la position de la camera dans la scène (facultatif lors de l'utilisation de camera_set_projection_opengl()).

et la génération d'un rayon pour un pixel de l'image :
extern void camera_sample_pixel(CAMERA *camera, float x, float y, MODEL *model, RAY *ray);
    calcule et renvoie un rayon passant par le pixel de coordonnées x et y.

extern void camera_get_viewport(CAMERA *camera, int viewport[4]);
    renvoie la partie de l'image utilisée pour générer les rayons. Le rectangle correspondant est décrit par les coordonnées d'un sommet, ainsi que sa largeur et sa hauteur :

    viewport[0]= xmin,
    viewport[1]= ymin
    viewport[2]= largeur
    viewport[3]= hauteur





Exemples d'utilisations de CAMERA :

    MODEL *model= render_get_model(render);
    CAMERA *camera= render_get_camera(render);

    /* recupere la projection openGL actuelle */
    camera_set_projection_opengl(camera);
    
    /* recupere le plan image :
        viewport[0]= xmin, [1]= ymin, [2]= largeur, [3]= hauteur */
    camera_get_viewport(camera, viewport);

    /* parcours l'image et genere un rayon par pixel */
    for(y= 0; y < viewport[3]; y++)
    {
        for(x= 0; x < viewport[2]; x++)
        {
                camera_sample_pixel(camera,
                    (float) x + (float) viewport[0],
                    (float) y + (float) viewport[1],
                    model, &ray);

                /* faire quelquechose avec le rayon */
                ...
       }
    }