Здравствуйте, Rusland, Вы писали:
R>Как программно записать движение 3D модели (x файл) в видео файл?
Если для DX 9 — то следующий код !
Рендеришь все в последовательность кадров
// тут рендеришь сцену
m_pd3dDevice->BeginScene();
....
m_pd3dDevice->EndScene();
// сразу после EndScene() - вставляешь код типа следующего
static int iCurrentFrame = 0;
LPDIRECT3DSURFACE9 pSurface;
m_pd3dDevice->GetRenderTarget( 0, &pSurface );
char szBuffer[64];
sprintf(szBuffer, "frame_%05d", iCurrentFrame++);
std::string strNewFileName = std::string(szBuffer) + ".bmp";
D3DXSaveSurfaceToFile( strNewFileName.c_str(), D3DXIFF_BMP, pSurface, NULL, NULL );
Для версий DX < 9 после рендера получаешь HDC окна, в которое отрисовываешь, и сохраняешь через GDI функции в BMP файл содержимое.
Потом сшиваешь последовательность в любой подходящий формат при помощи любой проги для видеомонтажа: Adobe Premier, 3DS Max, Adobe After Effects, etc.
Еще один ньюанс — при рендеринге нужно поставить фиксированный FrameRate — чтобы видео не было дерганным. 25|30 FPS