[vtkusers] how to output an avi file in VTK

Wang HJ hjwang126 at hotmail.com
Mon May 29 04:30:56 EDT 2006


Hi,Marc

Thank you for your reply, I have done it like you said, now *.avi can be 
created,  the animation just contains one still image although the still 
image can last sometime( not change anymore), why? Do I need another 
statements? Looking forwards to receiving your new suggestion. Thanks ,
now my code is :

vtkWindowToImageFilter *imageFilter = vtkWindowToImageFilter::New();
  imageFilter->ReadFrontBufferOff();
  imageFilter->SetInput(renWin);// renwin is defined as vtkRenderWindow 
*renWin
  vtkAVIWriter *w=vtkAVIWriter::New();
  w->SetInput(imageFilter->GetOutput());
  w->SetFileName("c:/TestAVIWriter.avi");
  w->Start();
  for (i = 0; i < 9; ++i)
    {
    // Render the image and rotate the active camera by one degree
    renWin->Render();
  // aRenderer->GetActiveCamera()->Azimuth(10);
   aRenderer->GetActiveCamera()->Elevation(-10);
   aRenderer2->GetActiveCamera()->Elevation(10);
   imageFilter->Update();
    w->Write();
   }
   w->End();

  HJ



>From: Marc Cotran <marc at cotran.ca>
>To: Wang HJ <hjwang126 at hotmail.com>
>Subject: Re: [vtkusers] how to output an  avi file in VTK
>Date: Sun, 28 May 2006 23:58:39 -0400
>
>Wang HJ wrote:
>>Hi everybody
>>
>>I have a program to render images in a loop (so it looks like an 
>>animation) in vtk, now I want to save those results in an avi file, I knew 
>>I could use the class vtkAVIWriter, but I do not know how to use it, I 
>>wrote my code like:
>>vtkAVIWriter *w=vtkAVIWriter::New();
>>w->SetFileName("c:/TestAVIWriter.avi");
>>w->Start();
>>  for (i = 0; i < 9; ++i)
>>    {
>>    // Render the image and rotate the active camera by one degree
>>    renWin->Render();
>>  // aRenderer->GetActiveCamera()->Azimuth(10);
>>   aRenderer->GetActiveCamera()->Elevation(-10);
>>   aRenderer2->GetActiveCamera()->Elevation(10);
>>   w->Write();
>>   }
>>   w->End();
>Hello,
>
>You have to specify the input as a vtkImageData object. What you are trying 
>to do can be accomplished as follows:
>
>   vtkWindowToImageFilter *imageFilter = vtkWindowToImageFilter::New();
>    imageFilter->ReadFrontBufferOff();
>    imageFilter->SetInput(myRenderWindowInstance);
>
>    vtkAVIWriter *writer = vtkAVIWriter::New();
>
>    writer->SetFileName("tester.avi");
>    writer->SetInput(imageFilter->GetOutput());
>    writer->Start();
>
>    for (int i = 0; i < 30; i++)
>    {
>        do something;
>        myRenderWindowInstance->Render();
>        writer->Write();
>    }
>
>    writer->End();
>
>HTH,
>
>Marc





More information about the vtkusers mailing list