前言
本文的主要目的是想通过一个例子来了解VTK的一些基本概念
程序参考链接VTK基本概念之主要对象
显示柱体的VTK程序
CMakeLists.txt文件代码
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(RenderCylinder)
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(RenderCylinderAndCone RenderCylinderAndCone.cpp)
TARGET_LINK_LIBRARIES(RenderCylinderAndCone ${VTK_LIBRARIES})
RenderCylinderAndCone.cpp代码
#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>
int main()
{
vtkSmartPointer<vtkCylinderSource> cylinder =
vtkSmartPointer<vtkCylinderSource>::New();
//设置圆柱的高度
cylinder->SetHeight( 3.0 );
//设置圆柱的直径
cylinder->SetRadius( 1.0 );
//设置圆柱有多少个侧面
cylinder->SetResolution( 10 );
vtkSmartPointer<vtkConeSource> Cone = vtkSmartPointer<vtkConeSource>::New();
//设置圆锥的高度
Cone->SetHeight( 7.0 );
//设置圆锥的直径
Cone->SetRadius( 1.0 );
//设置圆锥有多少个侧面
Cone->SetResolution( 6 );
//===================圆柱的
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper->SetInputConnection( cylinder->GetOutputPort() );
vtkSmartPointer<vtkActor> cylinderActor =
vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper( cylinderMapper );
//设置圆柱的颜色
cylinderActor->GetProperty()->SetColor(1.0, 0.0, 0.0);
//===================圆锥的
vtkSmartPointer<vtkPolyDataMapper> coneMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
coneMapper->SetInputConnection(Cone->GetOutputPort());//Mapper data
vtkSmartPointer<vtkActor> coneActor = vtkSmartPointer<vtkActor>::New();
coneActor->SetMapper(coneMapper);
//设置圆锥的颜色
coneActor->GetProperty()->SetColor(0, 1.0, 0.0);
//==================渲染器
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
//将圆柱actor添加到渲染器中
renderer->AddActor( cylinderActor );
//将圆锥actor添加到渲染器中
renderer->AddActor( coneActor );
//设置渲染场景的背景颜色 也就是窗口的颜色
renderer->SetBackground( 1.0, 1.0, 1.0 );
vtkSmartPointer<vtkRenderWindow> renWin =
vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer( renderer );
//设置窗口的大小
renWin->SetSize( 640, 480 );
renWin->Render();
//设置窗口的名字
renWin->SetWindowName("RenderCylinderAndCone");
//将窗口添加到WindowInterctor中去
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;
}
一个渲染器(vtkRender)中可以包含多个actor