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(3);
    source->SetExtent(0, 250, 0, 150, 0, 0);

    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(1,1,1);
    imageViewer->SetSize(800,600);
    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 = 0; i < 250; i++)
    {
        source->SetDrawColor(0,0,0,1); //black
        source->FillBox(0, 300, 0,300); //clear image
        source->SetDrawColor(255,0,0,1); //red
        source->FillBox(i,230,80,100);
        source->Update();
        imageViewer->Render();
        for(int i=0;i<5;i++)
        {
            filter->Modified();
            writer->Write();
        }

    }
    writer->End();
    iren->Start();
    return 0;
}
 
 

 

 
 
 
 

转载于:https://www.cnblogs.com/phoenixdsg/p/6160568.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值