Select Git revision
TrailPlotter.cpp
TrailPlotter.cpp 1.95 KiB
#include "TrailPlotter.h"
#include <vtkActor.h>
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkCleanPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkAppendPolyData.h>
#include <vtkDiskSource.h>
#include <vtkTriangleFilter.h>
#include <vtkStripper.h>
#define VTK_CREATE(type, name) \
vtkSmartPointer<type> name = vtkSmartPointer<type>::New()
TrailPlotter::TrailPlotter()
{
// trails sources
VTK_CREATE (vtkDiskSource, agentShape);
agentShape->SetCircumferentialResolution(20);
agentShape->SetInnerRadius(0);
agentShape->SetOuterRadius(30);
//speed the rendering using triangles stripers
vtkTriangleFilter *tris = vtkTriangleFilter::New();
tris->SetInputConnection(agentShape->GetOutputPort());
//tris->GetOutput()->ReleaseData();
vtkStripper *strip = vtkStripper::New();
strip->SetInputConnection(tris->GetOutputPort());
//strip->GetOutput()->ReleaseData();
_appendFilter = vtkSmartPointer<vtkAppendPolyData>::New();
_appendFilter->SetInputConnection(strip->GetOutputPort());
// Remove any duplicate points.
_cleanFilter = vtkSmartPointer<vtkCleanPolyData>::New();
//_cleanFilter->SetInputConnection(_appendFilter->GetOutputPort());
//Create a mapper and actor
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
//mapper->SetInputConnection(_cleanFilter->GetOutputPort());
_trailActor = vtkSmartPointer<vtkActor>::New();
//_trailActor->SetMapper(mapper);
}
TrailPlotter::~TrailPlotter()
{
}
void TrailPlotter::AddDataSet(vtkPolyData *_polydata)
{
#if VTK_MAJOR_VERSION <= 5
_appendFilter->AddInputConnection(_polydata->GetProducerPort());
#else
_appendFilter->AddInputData(_polydata);
#endif
_appendFilter->Update();
_cleanFilter->Update();
}
vtkActor *TrailPlotter::getActor()
{
return _trailActor;
}
void TrailPlotter::SetVisibility(bool status)
{
_trailActor->SetVisibility(status);
}