VTK初学一,动画加AVI录制终于做出来了

时间:2023-03-08 15:45:00
VTK初学一,动画加AVI录制终于做出来了
 

#ifndef INITIAL_OPENGL
#define INITIAL_OPENGL
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)
#endif
#include <iostream> using namespace std;
#include <vtkSmartPointer.h>
//#include <vtkJPEGReader.h>
#include <vtkImageCanvasSource2D.h>
#include <vtkAVIWriter.h>
#include<vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkImageViewer2.h>
#include <vtkCommand.h>
#include <vtkWindowToImageFilter.h> int main()
{
vtkSmartPointer<vtkImageCanvasSource2D> source =vtkSmartPointer<vtkImageCanvasSource2D>::New();
source->SetScalarTypeToUnsignedChar();
source->SetNumberOfScalarComponents();
source->SetExtent(, , , , , ); vtkSmartPointer<vtkAVIWriter> writer =vtkSmartPointer<vtkAVIWriter>::New();
vtkSmartPointer<vtkRenderWindowInteractor> iren=vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkImageViewer2>imageViewer=vtkSmartPointer<vtkImageViewer2>::New();
imageViewer->SetInputConnection(source->GetOutputPort());
imageViewer->SetupInteractor(iren);
imageViewer->GetRenderer()->ResetCamera();
imageViewer->GetRenderer()->SetBackground(,,);
imageViewer->SetSize(,);
iren->Initialize();
// iren->Start();
vtkSmartPointer<vtkWindowToImageFilter> filter=vtkSmartPointer<vtkWindowToImageFilter>::New();
filter->SetInput(imageViewer->GetRenderWindow());
writer->SetInputConnection(filter->GetOutputPort());
writer->SetFileName("test.avi");
writer->Start(); for(unsigned int i = ; i < ; i++)
{
source->SetDrawColor(,,,); //black
source->FillBox(, , ,); //clear image
source->SetDrawColor(,,,); //red
source->FillBox(i,,,);
source->Update();
imageViewer->Render();
for(int i=;i<;i++)
{
filter->Modified();
writer->Write();
} }
writer->End();
iren->Start();
return ;
}