欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

VTK生成一个圆柱

程序员文章站 2022-04-01 08:44:18
...

最近开始学习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;
}
相关标签: VTK