#include <itkTriangleCell.h>
#include <itkPolygonCell.h>
+#include <vtkActor.h>
+#include <vtkPolyDataNormals.h>
#include <vtkPolyData.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkQuadricLODActor.h>
+#include <vtkStripper.h>
+
+#define cpPlugins_Mesh_MAX_POLYS 65535
// -------------------------------------------------------------------------
void cpPlugins::Mesh::
const_cast< vtkPolyData* >( this->GetVTK< vtkPolyData >( ) );
if( mesh != NULL )
{
- std::cout << "Mesh: " << mesh << std::endl;
- /* TODO
- vtkImageSliceMapper* mapper = vtkImageSliceMapper::New( );
- vtkImageActor* actor = vtkImageActor::New( );
- mapper->SetInputData( image );
- actor->SetMapper( mapper );
- this->m_Actor = actor;
- */
+ unsigned long nPolys = mesh->GetNumberOfPolys( );
+ if( nPolys >= cpPlugins_Mesh_MAX_POLYS )
+ {
+ auto normals = vtkPolyDataNormals::New( );
+ auto stripper = vtkStripper::New( );
+ auto mapper = vtkPolyDataMapper::New( );
+ auto actor = vtkQuadricLODActor::New( );
+
+ double r[ 2 ];
+ mesh->GetScalarRange( r );
+
+ normals->SetInputData( mesh );
+ normals->SetFeatureAngle( 60.0 );
+ stripper->SetInputConnection( normals->GetOutputPort( ) );
+ mapper->SetInputConnection( stripper->GetOutputPort( ) );
+ mapper->UseLookupTableScalarRangeOff( );
+ mapper->SetScalarRange( r[ 0 ], r[ 1 ] );
+ actor->SetMapper( mapper );
+ actor->DeferLODConstructionOff( );
+ this->m_Actor = actor;
+ mapper->Delete( );
+ stripper->Delete( );
+ normals->Delete( );
+ }
+ else
+ {
+ auto mapper = vtkPolyDataMapper::New( );
+ mapper->SetInputData( mesh );
+ auto actor = vtkActor::New( );
+ actor->SetMapper( mapper );
+ this->m_Actor = actor;
+ mapper->Delete( );
+
+ } // fi
} // fi
}