[vtkusers] using vtkSmoothPolyDataFilter with...errr... polydata?

Paul McIntosh paul.mcintosh at monash.edu
Fri Aug 30 21:28:59 EDT 2013


thanks! yes I was reading the manual at the same time and came to the same conclusion ;)

smoothFilter->SetInputData( 1, polydata);

Cheers,

Paul

----- Original Message -----
> From: "Alex Malyushytskyy" <alexmalvtk at gmail.com>
> To: "Paul McIntosh" <paul.mcintosh at monash.edu>
> Cc: "VTK" <vtkusers at vtk.org>
> Sent: Saturday, 31 August, 2013 11:23:53 AM
> Subject: Re: [vtkusers] using vtkSmoothPolyDataFilter with...errr... polydata?
> 
> 
> 
> vtk algorithms either require connection or data.
> 
> 
> to make a connection you call :
> 
> 
> SetInputConnection
> 
> 
> 
> to provide data as input you call :
> SetInput
> 
> 
> in vtk 6.0+ you if not mistaken it is:
> 
> SetInput Data
> 
> 
> 
> Alex
> 
> 
> 
> 
> On Fri, Aug 30, 2013 at 5:48 PM, Paul McIntosh <
> paul.mcintosh at monash.edu > wrote:
> 
> 
> 
> 
> Hi All,
> 
> I have a dumb question - how do I used vtkSmoothPolyDataFilter
> with...errr... polydata?
> 
> I am trying to do the equivalent of :
> http://www.paraview.org/Wiki/VTK/Examples/Cxx/PolyData/ConvexHullShrinkWrap
> 
> But instead of using a point source I want to load an STL and get
> points from that. Seems that vtkSmoothPolyDataFilter only likes
> vtkAlgorithmOutput and not actual concrete data. Is there an easy
> way to make this work?
> 
> Here is my code as reference.
> 
> Cheers,
> 
> Paul
> 
> 
> #include <vtkSmartPointer.h> #include <vtkPolyData.h> #include
> <vtkSphereSource.h> #include <vtkPointSource.h> #include
> <vtkSmoothPolyDataFilter.h> #include <vtkXMLPolyDataWriter.h>
> #include <vtkSTLReader.h> #include <vtkActor.h> #include
> <vtkRenderWindow.h> #include <vtkRenderer.h> #include
> <vtkRenderWindowInteractor.h> #include <vtkPolyDataMapper.h>
> #include <vtkCamera.h> #include <vtkWeightedTransformFilter.h>
> #include <vtkXMLUnstructuredGridReader.h> #include
> <vtkUnstructuredGrid.h> #include <vtkXMLPolyDataReader.h> #include
> <vtkDataSetMapper.h> #include <vtkDataSetSurfaceFilter.h> // C/C++
> #include <iostream> #include <sstream> #include <stdio.h> using
> namespace std ; // just to make things nicer later and save some
> documentation reading ;) struct boundingBox { double xmin ; double
> xmax ; double ymin ; double ymax ; double zmin ; double zmax ; };
> int main ( int argc , char * argv []) { // check and get options
> provided if ( argc != 2 ) { cout << "Required parameters:" << endl ;
> cout << " Filename (Full path to stl file e.g. something.stl)" <<
> endl ; // cout << " Magnification (Image resolution size multipler
> e.g. 2)" << endl; // cout << " x (x camera offset position from
> centre)" << endl; // cout << " y (y camera offset position from
> centre)" << endl; // cout << " z (z camera offset position from
> centre)" << endl; return EXIT_FAILURE ; } std :: string inputfile =
> argv [ 1 ]; // Read STL std :: cout << "Reading: " << inputfile <<
> std :: endl ; vtkSmartPointer < vtkSTLReader > stlReader =
> vtkSmartPointer < vtkSTLReader >:: New (); stlReader -> SetFileName
> ( inputfile . c_str ()); vtkSmartPointer < vtkPolyData > polydata =
> vtkSmartPointer < vtkPolyData >:: New (); polydata = stlReader ->
> GetOutput (); stlReader -> Update (); vtkSmartPointer <
> vtkDataSetMapper > mapper = vtkSmartPointer < vtkDataSetMapper >::
> New (); mapper -> SetInputConnection ( stlReader -> GetOutputPort
> ()); // the bounding box will tell us where the object is and how
> big it is... double centre [ 3 ]; double bounds [ 6 ]; double
> results [ 3 ]; boundingBox boxBounds ; mapper -> GetBounds ( bounds
> ); mapper -> GetCenter ( centre ); boxBounds . xmin = bounds [ 0 ];
> boxBounds . xmax = bounds [ 1 ]; boxBounds . ymin = bounds [ 2 ];
> boxBounds . ymax = bounds [ 3 ]; boxBounds . zmin = bounds [ 4 ];
> boxBounds . zmax = bounds [ 5 ]; // possibly remesh with finer
> detail with subdivide filter? // convert to pointset // create
> sphere around bounds (possibly transformed to a better shape?) //
> shrinkwrap // spit out the result as an stl std :: cout <<
> "vtkSphereSource: " << std :: endl ; vtkSmartPointer <
> vtkSphereSource > sphereSource = vtkSmartPointer < vtkSphereSource
> >:: New (); sphereSource -> SetRadius ( 1000 ); // will calculate
> this later from bounding box sphereSource -> SetPhiResolution ( 50
> ); sphereSource -> SetThetaResolution ( 50 ); sphereSource ->
> SetCenter ( centre ); sphereSource -> Update (); //
> vtkSmartPointer<vtkPointSource> pointSource =
> vtkSmartPointer<vtkPointSource>::New(); //
> pointSource->SetNumberOfPoints(40); // pointSource->SetRadius(2); //
> pointSource->Update(); { vtkSmartPointer < vtkXMLPolyDataWriter >
> writer = vtkSmartPointer < vtkXMLPolyDataWriter >:: New (); writer
> -> SetFileName ( "input.vtp" ); writer -> SetInputConnection (
> sphereSource -> GetOutputPort ()); writer -> Write (); } {
> vtkSmartPointer < vtkXMLPolyDataWriter > writer = vtkSmartPointer <
> vtkXMLPolyDataWriter >:: New (); writer -> SetFileName (
> "points.vtp" ); writer -> SetInputConnection ( pointSource ->
> GetOutputPort ()); writer -> Write (); } std :: cout <<
> "ShrinkWrapping: " << inputfile << std :: endl ; vtkSmartPointer <
> vtkSmoothPolyDataFilter > smoothFilter = vtkSmartPointer <
> vtkSmoothPolyDataFilter >:: New (); smoothFilter ->
> SetInputConnection ( 0 , sphereSource -> GetOutputPort ());
> //smoothFilter->SetInputConnection(1, pointSource->GetOutputPort());
> smoothFilter -> SetInputConnection ( 1 , polydata ); smoothFilter ->
> Update (); vtkSmartPointer < vtkXMLPolyDataWriter > writer =
> vtkSmartPointer < vtkXMLPolyDataWriter >:: New (); writer ->
> SetFileName ( "output.vtp" ); writer -> SetInputConnection (
> smoothFilter -> GetOutputPort ()); writer -> Write (); return
> EXIT_SUCCESS ; }
> 
> 
> 
> --
> 
> Dr Paul McIntosh
> Senior HPC Consultant, Technical Lead,
> Multi-modal Australian ScienceS Imaging and Visualisation Environment
> ( www.massive.org.au )
> Monash University, Ph: 9902 0439 Mob: 0434 524935
> 
> _______________________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
> 
> 
> 

-- 
Dr Paul McIntosh
  Senior HPC Consultant, Technical Lead,
    Multi-modal Australian ScienceS Imaging and Visualisation Environment (www.massive.org.au)
       Monash University, Ph: 9902 0439 Mob: 0434 524935



More information about the vtkusers mailing list