显示样式
在vtk中,显示样式是通过vtkProperty来控制的。这里介绍三种基本的属性设置方式:点方式,网格方式和面方式。其设置方法为
- actor->GetProperty()->SetRepresentationToPoints()
- actor->GetProperty()->SetRepresentationToWireframe()
- actor->GetProperty()->SetRepresentationToSurface()
示例说明
CMakeLists.txt文件代码如下:
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT( Representation )
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(Representation Representation.cpp)
TARGET_LINK_LIBRARIES(Representation ${VTK_LIBRARIES})
Representation.cpp文件代码如下:
#include <vtkConeSource.h>
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
#include <iostream>
int main(int argc, char *argv[])
{
vtkSmartPointer<vtkConeSource> coneSource =
vtkSmartPointer<vtkConeSource>::New();
coneSource->Update();
vtkSmartPointer<vtkPolyData> cone = coneSource->GetOutput();
int nPoints = cone->GetNumberOfPoints();
int nCells = cone->GetNumberOfCells();
std::cout<<"Points number:"<<nPoints<<std::endl;
std::cout<<"Cells number:"<<nCells<<std::endl;
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(cone);
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
actor->GetProperty()->SetColor(1.0, 0, 0); //设置颜色属性
actor->GetProperty()->SetRepresentationToPoints(); //点方式
//actor->GetProperty()->SetRepresentationToWireframe(); //网格方式
//actor->GetProperty()->SetRepresentationToSurface(); //默认设置,面方式
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
renderer->SetBackground(0.0,0.0,0.0);
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetSize( 640, 480 );
renderWindow->Render();
renderWindow->SetWindowName("Representation");
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}