[vtkusers] vtkSurfaceReconstructionFilter with vtkPolyData giving wrong output ?

Ashika Umanga Umagiliya aumanga at biggjapan.com
Wed Jan 26 22:19:54 EST 2011


Any tips anyone ??






On 25 January 2011 16:31, Ashika Umanga Umagiliya <aumanga at biggjapan.com> wrote:
> Sorry, these are the correct images,
>
>
> [Correct] Mesh generated by vtkSurfaceReconstructionFilter  -
> http://oi51.tinypic.com/9863c4.jpg
> [Correct] Original contour lines  -  http://oi53.tinypic.com/23jjok7.jpg
>
> [Incorrect] Mesh Generated by vtkVoxelContoursToSurfaceFilter  -
> http://oi53.tinypic.com/33dv81k.jpg
>
>
> On 25 January 2011 16:27, Ashika Umanga Umagiliya <aumanga at biggjapan.com> wrote:
>> Greetings all,
>>
>> I use "vtkSurfaceReconstructionFilter" to generate mesh from a point cloud.
>> I refered the example at
>> http://www.vtk.org/doc/release/4.0/html/c2_vtk_e_1.html#c2_vtk_e_vtkSurfaceReconstructionFilter
>> Only different is, instead of "vtkProgrammableSource" , I have used
>> "vtkPolyData" as the input for the filter.(please refer code snippet
>> below)
>>
>> Generated mesh from the vtkSurfaceReconstructionFilter looks like this -
>> http://oi53.tinypic.com/33dv81k.jpg
>>
>> This is how the correct output should be similar to (these use the
>> same point data) -
>>  1) Draw original contour lines -  http://oi53.tinypic.com/33dv81k.jpg
>>  2) Generate mesh by vtkVoxelContoursToSurfaceFilter -
>> http://oi51.tinypic.com/9863c4.jpg
>>
>> What could be the issue  ?
>>
>> Thanks in advance.
>> umanga
>>
>> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> //Prepare vtkPolyData
>>
>> vtkPoints *points=vtkPoints::New();
>> vtkPolyData *polyData=vtkPolyData::New();
>> polyData->Initialize();
>> polyData->SetPoints(points);
>>
>> //Then add points  to the vtkPolyData
>> for(int i=0;i<numOfContours;i++){
>>  double x=conters.getContour(i)->getX();
>>  double y=1.0*i;
>>  double z=contours->getContour(i)->getY();
>>
>>  points->InsertNextPoint(x,y,z)
>> }
>>
>>
>> //Generate mesh rest if same as the example)
>>
>> vtkSurfaceReconstructionFilter *surf=vtkSurfaceReconstructionFilter::New();
>> surf->SetInputConnection(pointSource->GetOutputPort());
>> surf->SetInput(polyData);  // <------ only different with the example
>>
>> vtkContourFilter *cf=vtkContourFilter::New();
>> cf->SetInputConnection(surf->GetOutputPort());
>> cf->SetValue(0,0.0);
>>
>> vtkReverseSense *reverse=vtkReverseSense::New();
>> reverse->SetInputConnection(cf->GetOutputPort());
>> reverse->ReverseCellsOn();
>> reverse->ReverseNormalsOn();
>>
>> vtkPolyDataMapper *map=vtkPolyDataMapper::New();
>> map->SetInputConnection(reverse->GetOutputPort());
>> map->ScalarVisibilityOff();
>>
>> //Create actor
>> vtkActor *surfaceActor=vtkActor::New();
>> surfaceActor->SetMapper(map);
>>
>> renderer->AddActor(surfaceActor);
>>
>



More information about the vtkusers mailing list