bonjour,
j'ai un petit souci,j'ai une carte dans ma fenetre et je peu me balader autour en utilisant une caméra paramétrer et je peu faire une animation en temp reel avec la camera en enregistrant des point camera puis en faisant une interpolation linéaire entre les point camera.voila vous voyez un peu le projet ,maintenant ce qui me géne c'est le fait de produire une sequence video de cette animation .je sais pas vraiment comment faire ,j'ai deja chercher et il y a une solution c'est de produire une image a chaque moment de deplacement de la camera puis apres les rassembler dans uns list de QList<imge_cam>
et generer une sequence vido avec des format standard ,bref maintenant je sais meme pas l'architecture qu'il faut suivre donc si quelqu'un à une aider ou un tuto qui peu m'aider ,cela sera tres cool .

voila le code de mon animation :



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
void VisuController::launchAnimation() {
    // viewpoints list
    std::list<ViewpointModel> * viewpoints = _viewpointController->getViewpoints();
    // iterator
    list<ViewpointModel>::iterator it;
//<<<<<<< .mine
  //  int scale = 200;
//=======
    int scale = 40;
//>>>>>>> .r431
    float dx, dy, dz, drotx, droty, drotz;
    // for each point
    for( it = (*viewpoints).begin(); it != (*viewpoints).end(); it++ ) {
        // go to the current viewpoint
        _camera.getOrigin()._x =  (*it).getOrigin()._x ;
        _camera.getOrigin()._y = (*it).getOrigin()._y ;
        _camera.getOrigin()._z = (*it).getOrigin()._z ;
        _camera.getRot()._x = (*it).getRot()._x ;
        _camera.getRot()._y = (*it).getRot()._y ;
        _camera.getRot()._z = (*it).getRot()._z ;
        _view->updateGL();
        // if it was the last, we stop
        if( (++it) == (*viewpoints).end() )
            break;
 
        --it;
        // calculate distance between each image
        dx = ( (*(++it)).getOrigin()._x - (*(--it)).getOrigin()._x ) / scale;
        dy = ( (*(++it)).getOrigin()._y - (*(--it)).getOrigin()._y ) / scale;
        dz = ( (*(++it)).getOrigin()._z - (*(--it)).getOrigin()._z ) / scale;
        drotx = ( (*(++it)).getRot()._x - (*(--it)).getRot()._x ) / scale;
        droty = ( (*(++it)).getRot()._y - (*(--it)).getRot()._y ) / scale;
        drotz = ( (*(++it)).getRot()._z - (*(--it)).getRot()._z ) / scale;
        // move the camera
        for( int i = 0; i < scale; i++ ) {
            moveLeft( dx );
            moveUp( dy );
            zoomIn( dz );
            lookUp( drotx );
            lookLeft( droty );
            _view->updateGL();
        }
    }
}