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;
}
推荐阅读
-
Java一个简单的红包生成算法
-
分享一个可以生成各种进制格式IP的小工具实例代码
-
基于PyQt5制作一个数据图表生成器
-
基于PyQt5制作一个数据图表生成器
-
项目开发:C#控制台调用另一个winform生成的dll,显示dll中的界面
-
一个android sqlite CRUD代码生成小工具 博客分类: android sqliteDAO代码生成orm
-
project生成aar文件并且在另一个project中使用遇到的坑和解决方案
-
给定一个图,为最小生成树,加入若干边使得图变为完全图且MST不改变,问最小总权是多少
-
mysql 生成一个临时日历表 博客分类: java mysql
-
分布式id生成策略,我和面试官扯了一个半小时