[vtk-developers] Empty output of vtkImageAlgorithm subclass

David Doria daviddoria+vtk at gmail.com
Fri Jan 15 12:00:39 EST 2010


I have created a class derived from vtkImageAlgorithm called
vtkVoxelizePolyData.

To set the output of the new filter, in RequestData (as usual) I did:

vtkInformation *outInfo = outputVector->GetInformationObject(0);
  vtkImageData *output = vtkImageData::SafeDownCast(
		  outInfo->Get(vtkDataObject::DATA_OBJECT()));

vtkSmartPointer<vtkImageData> grid = vtkSmartPointer<vtkImageData>::New();

.... fill grid....

output->ShallowCopy(grid);

I know 'grid' is valid at this point because just before the end of
RequestData I did:

  vtkSmartPointer<vtkXMLImageDataWriter> writer =
      vtkSmartPointer<vtkXMLImageDataWriter>::New();
  writer->SetFileName("insideFilter.vti");
  writer->SetInput(grid);
  writer->Write();

  output->ShallowCopy(grid);

and it looks correct in paraview.

However, if I run the filter and write the file of the filter output,
it is empty!

  vtkSmartPointer<vtkVoxelizePolyData> voxelize =
vtkSmartPointer<vtkVoxelizePolyData>::New();
  voxelize->SetInput(reader->GetOutput());
  voxelize->Update();

  vtkImageData* voxelized = voxelize->GetOutput();

  vtkSmartPointer<vtkXMLImageDataWriter> writer =
vtkSmartPointer<vtkXMLImageDataWriter>::New();
  writer->SetFileName(outputFilename.c_str());
  writer->SetInput(voxelized);
  writer->Write();

Any thoughts on what could be going wrong here??

Thanks,

David



More information about the vtk-developers mailing list