VTK学习
渲染窗口的显示
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
renWin->SetSize(640, 480);
renWin->Render();
renWin->SetWindowName("002");
vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
iren->Initialize();
iren->Start();
界面交互
1.鼠标左键+shift 整体移动
2.鼠标左键+ctrl 旋转
3.P键 显示外接长方体
4.E键 退出
数据源 生成柱体
//vtkCylinderSource 渲染柱体 生成的数据类型是vtkPolyData
vtkSmartPointer<vtkCylinderSource> cylinder= vtkSmartPointer<vtkCylinderSource>::New();
cylinder->SetHeight(3);
cylinder->SetRadius(1);
cylinder->SetResolution(10); //设置等边多边形边数
渲染数据
//vtkPolyDataMapper 渲染多边形几何数据(vtkPolyData) 将输入的数据转换为几何图元(点、线、多边形)进行渲染
//SetInputConnection VTK可视化管线的输入数据接口
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
可视化数据
//vtkActor 表达场景中的几何数据 数据可视化表达
//SetMapper 设置生成几何图元的mapper 连接一个actor到可视化管线的末端
vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper(cylinderMapper);
管理渲染过程
//vtkRenderer 管理场景的渲染过程
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(cylinderActor); //将vtkProp类型的对象添加到渲染场景中
renderer->SetBackground(0.1, 0.2, 0.6); //RGB 分量取值0-1
添加灯光
//添加灯光
vtkSmartPointer<vtkLight> light1 = vtkSmartPointer<vtkLight>::New();
light1->SetColor(1, 0, 0);
light1->SetPosition(0, 0, 1);
light1->SetFocalPoint(renderer->GetActiveCamera()->GetFocalPoint());
renderer->AddLight(light1);
vtkSmartPointer<vtkLight> light2 = vtkSmartPointer<vtkLight>::New();
light2->SetColor(0,0, 1);
light2->SetPosition(0, 0, -1);
light2->SetFocalPoint(renderer->GetActiveCamera()->GetFocalPoint());
renderer->AddLight(light2);
设置相机
//设置相机
vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New();
camera->SetClippingRange(0.04, 2.4);
camera->SetFocalPoint(0.05, -0.2, -0.05);
camera->SetPosition(0.3, -0.1, -0.3);
camera->SetViewUp(-0.2, 1, 0.03);
renderer->SetActiveCamera(camera);
设置渐变背景
renderer->SetGradientBackground(1);
renderer->SetBackground2(0.1,0.2,0.6);
设置渲染窗口
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
renWin->SetSize(400,400); //设置窗口大小
renWin->Render();
设置窗口鼠标、键盘的交互
//vtkRenderWindowInteractor 提供平台独立的响应鼠标 键盘 和时钟事件的交互机制
vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin); //设置渲染窗口
//vtkInteractorStyleTrackballCamera 交互器样式 用户通过控制相机对物体作旋转 放大 缩小等操作
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
iren->SetInteractorStyle(style); //定义交互器样式
iren->Initialize();//为处理窗口事件做准备
iren->Start(); //进入事件响应循环