VTK生成一个圆柱

最近开始学习VTK 编程技术,特此记录,以便后期回顾!代码来源于数据《VTK图形图像开发进阶》。代码注释加深自己对各个类的理解。

#include <vtkAutoInit.h> 
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);


#include <vtkSmartPointer.h>  //智能指针
#include <vtkRenderer.h>  //vtk 规范渲染器
#include <vtkRenderWindow.h>  //创建渲染窗口用于画图
#include <vtkRenderWindowInteractor.h>  //渲染窗口交互器
#include <vtkInteractorStyleTrackballCamera.h> //vtk 交互方式(interactor style) 对于相机的交互操作
#include <vtkCylinderSource.h>  //vtkPolyDataAlgorithm  //生成一个以原点为中心的圆柱体
#include <vtkPolyDataMapper.h> //用于渲染多边形几何数据(vtkPolyData ) 派生自vtkMapper
#include <vtkActor.h> //渲染场景中的可视化

int _tmain(int argc, _TCHAR* argv[])
{
    // 1 、创建圆柱实体
    vtkSmartPointer<vtkCylinderSource> cylinder = vtkSmartPointer<vtkCylinderSource>::New();
    cylinder->SetRadius(1);
    cylinder->SetHeight(3);
    cylinder->SetResolution(10);

    //2 、创建Mapper 渲染多边形几何数据(vtkPolyData)  //渲染多边形几何数据,将输入的数据转换为几何图元(点、线、多边形)进行渲染。
    vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    //cylinderMapper->SetInputData(cylinder);
    cylinderMapper->SetInputConnection(cylinder->GetOutputPort()); // vtkAlogrithm*

    //3、创建Actor 渲染场景中的可视化
    vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor> ::New();
    cylinderActor->SetMapper(cylinderMapper);

    //4、创建vtkRenderer规范渲染器  //负责管理场景的渲染过程
    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(cylinderActor);
    renderer->SetBackground(0.1, 0.2, 0.4);

    //5、创建vtkRenderWindow  渲染窗口
    vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
    renWin->AddRenderer(renderer);
    renWin->SetSize(300, 300);
    renWin->SetPosition(300, 300);

    //6、创建vtkRenderWindodwInteractor 渲染窗口交互器
    vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    iren->SetRenderWindow(renWin);

    //创建vtkInteractorStyleTrackballCamera 相机交互器  //交互方式,控制相机对物体进行旋转、放大、缩小等操作
    vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
    iren->SetInteractorStyle(style);

    iren->Initialize();
    iren->Start();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/u014801811/article/details/81216942
今日推荐