/* ---------------------------------------------------------- * 文件名称:main.cpp * 作者:秦建辉 * * 微信:splashcn * * 开发环境: * Visual Studio V2019 * VTK 9.0.1 * * 版本历史: * * V1.0 2021年04月23日 * VTK例子代码 ------------------------------------------------------------ */ #include <vtkSmartPointer.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkRenderWindowInteractor.h> #include <vtkInteractorStyleTrackballCamera.h> #include <vtkCylinderSource.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkProperty.h> #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle); // vtkSmartPointer #pragma comment(lib,"vtkCommonCore-9.0.lib") // vtkRenderWindow #pragma comment(lib,"vtkRenderingCore-9.0.lib") // vtkInteractorStyle #pragma comment(lib,"vtkInteractionStyle-9.0.lib") // vtkRenderingOpenGL2 #pragma comment(lib,"vtkRenderingOpenGL2-9.0.lib") // vtkCylinderSource #pragma comment(lib,"vtkFiltersSources-9.0.lib") // vtkAlgorithm #pragma comment(lib,"vtkCommonExecutionModel-9.0.lib") int main() { // 生成一个中心在渲染场景原点的柱体 vtkSmartPointer<vtkCylinderSource>cylinder = vtkSmartPointer<vtkCylinderSource>::New(); cylinder->SetHeight(3.0); // 高度 cylinder->SetRadius(1.0); // 半径 cylinder->SetResolution(10); // 多边形边数 // 渲染多边形几何数据 vtkSmartPointer<vtkPolyDataMapper>cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New(); cylinderMapper->SetInputConnection(cylinder->GetOutputPort()); // 表达场景中的几何数据 vtkSmartPointer<vtkActor>cylinderActor = vtkSmartPointer<vtkActor>::New(); cylinderActor->SetMapper(cylinderMapper); // 负责场景渲染过程 vtkSmartPointer<vtkRenderer>renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->AddActor(cylinderActor); renderer->SetBackground(0.1, 0.2, 0.4); // 将操作系统与VTK渲染引擎结合起来,负责管理本地计算机系统中窗口创建和渲染过程 vtkSmartPointer<vtkRenderWindow>renWin = vtkSmartPointer<vtkRenderWindow>::New(); renWin->AddRenderer(renderer); renWin->SetSize(300, 300); // 提供平台独立的响应鼠标,键盘和时钟事件的交互机制 vtkSmartPointer<vtkRenderWindowInteractor>iren = vtkSmartPointer<vtkRenderWindowInteractor>::New(); iren->SetRenderWindow(renWin); // 交互器样式的一种,通过控制相机对物体进行旋转放大缩小等操作 vtkSmartPointer<vtkInteractorStyleTrackballCamera>style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New(); iren->SetInteractorStyle(style); iren->Initialize(); iren->Start(); return EXIT_SUCCESS; }