#include "vtkActor.h"
#include "vtkPolyDataReader.h"
#include "vtkClipPolyData.h"
#include "vtkPlane.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkPolyDataNormals.h"
#include "vtkProperty.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkSmartPointer.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL2,vtkRenderingOpenGL2)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL2)
int main()
{
//read input data
vtkSmartPointer<vtkPolyDataReader> reader = vtkSmartPointer<vtkPolyDataReader>::New();
reader->SetFileName("...\\.vtk");
vtkSmartPointer<vtkPolyDataNormals> hippnormals = vtkSmartPointer<vtkPolyDataNormals>::New();
hippnormals->SetInputConnection(reader->GetOutputPort());
vtkSmartPointer<vtkPlane> plane = vtkSmartPointer<vtkPlane>::New();
plane->SetOrigin(0, 0, 0);
plane->SetNormal(0.8, -1, 0);
vtkSmartPointer<vtkClipPolyData> clipper = vtkSmartPointer<vtkClipPolyData>::New();
clipper->SetInputConnection(hippnormals->GetOutputPort());
clipper->SetClipFunction(plane);
clipper->GenerateClipScalarsOn();
clipper->GenerateClippedOutputOn();
clipper->SetValue(0.8);
vtkSmartPointer<vtkPolyDataMapper> clip_mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
clip_mapper->SetInputConnection(clipper->GetOutputPort());
clip_mapper->ScalarVisibilityOff();
vtkSmartPointer<vtkProperty> backProp = vtkSmartPointer<vtkProperty>::New();
backProp->SetDiffuseColor(1.00, 0.388, 0.278);
vtkSmartPointer<vtkActor> clip_actor = vtkSmartPointer<vtkActor>::New();
clip_actor->SetMapper(clip_mapper);
clip_actor->GetProperty()->SetColor(.200, .631, .788);
clip_actor->SetBackfaceProperty(backProp);
vtkSmartPointer<vtkPolyDataMapper> rest_mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
rest_mapper->SetInputConnection(clipper->GetClippedOutputPort());
rest_mapper->ScalarVisibilityOff();
vtkSmartPointer<vtkActor> rest_actor = vtkSmartPointer<vtkActor>::New();
rest_actor->SetMapper(rest_mapper);
rest_actor->GetProperty()->SetRepresentationToWireframe();
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(clip_actor);
renderer->AddActor(rest_actor);
renderer->SetBackground(1.0, 1.0, 1.0);
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
renWin->SetSize(640, 480);
renWin->Render();
vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
iren->Initialize();
iren->Start();
return EXIT_SUCCESS;
}
vtk切割polydata
最新推荐文章于 2024-07-02 11:04:01 发布