Creation d'un vidéo à partir d'une animmation
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:
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();
}
}
} |