[vtkusers] How to avoid model splatting on a ImageData

Eric E. Monson emonson at cs.duke.edu
Tue Mar 10 09:37:55 EDT 2009


Hey Arturo,

You can do what you want, but to get "free space" around your donut,  
the output will need to be an Unstructured Grid rather than ImageData  
(which is just defined in a cube, all filled with points).

I think you have the right idea about the vtkImplicitModeller methods:  
SetSampleDimensions sets the number of grid points in each direction,  
while the SetModelBounds specifies the extent of the output in the  
coordinate space of your data. You can try setting it manually to (-5,  
5, -5, 5, -1, 1) if you want. The output of vtkImplicitModeller is a  
vtkImageData, so I don't think you have to create that new "image",  
just grab the output and pipe it in to your writer.

If you put a threshold filter after the implicit modeller, you'll get  
an unstructured grid with "free space" around your donut. (I just  
tried it in ParaView, so I don't have VTK code handy.) If you really  
need ImageData out, then there may be a way to "zero out" the values  
over a certain threshold, but there will still be points all  
throughout the rectangular solid space.

If this doesn't answer your questions, you may have to clarify in what  
way this is "not working" and what you mean by not wanting the data  
splatted all over the volume (maybe the "free space" issue?).

Talk to you later,
-Eric

------------------------------------------------------
Eric E Monson
Duke Visualization Technology Group


On Mar 9, 2009, at 5:46 PM, Arturo Caissut wrote:

> Hi,
> I need to read a PolyData 3D model, pass it through two filters  
> (implicit modeller & image threshold) and then save the resulting  
> image on a ImageData.
> My problem is that I don't want the resulting model image to be  
> "splatted" all over the ImageData extension (with a deformation as a  
> collateral result), but I cannot avoid this.
> Maybe I'm making some confusion between implicit modeller  
> SetSampleDimensions and SetModelBounds, but I'm not sure.
>
> I'll try to explain myself with an example: let's say I have a  
> radius=4 circle stored into a polydata. My aim is to create a  
> 50x50x50 MetaImage file whit a radius 4 " donut"on the center, and a  
> lot of "free space" all around. I think I should procede with  
> something like:
>
> vtkPolydataReader *reader = vtkPolyDataReader::New();
> reader->SetFileName("something.vtk");
>
> vtkImplicitModeller *implicit = vtkImplicitModeller::New();
> implicit->SetInput(reader->GetOutput());
> implicit->SetMaximumDistance(1);         //I don't want my donut to  
> be too large
> implicit->SetSampleDimensions(50, 50, 50);    //Is this correct?
> implicit->SetModelBounds(reader->GetOutput()->GetBounds());
> implicit->Update();
>
> vtkImageData *image = vtkImageData::New();
> image->SetDimensions(50, 50, 50);
> image->SetOrigin(0.0, 0.0, 0.0);
> image->SetSpacing(1,1,1);
> image = implicit->GetOutput();
> image->Update();
>
> vtkMetaImageWriter *miwriter = vtkMetaImageWriter::New();
> miwriter->SetInput(image);
> miwriter->SetFileName("something_else.mhd");
> miwriter->Write();
>
>
> But this doesn't work.
> Can you find any error?
>
>
> Thank you,
> Arturo
>
>
>
>
> _______________________________________________
> 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090310/d6f995c9/attachment.htm>


More information about the vtkusers mailing list