[vtkusers] "Filling" parts of a volume that are "inside" a set of polyhedra

David Gobbi david.gobbi at gmail.com
Sun Jul 23 23:43:03 EDT 2017


You can use as many closed surfaces as you want with
vtkPolyDataToImageStencil, as long as the surfaces don't intersect.
Intersection would break the topological constraints of the filter.

But if you have each polyhedron as a separate vtkPolyData, then iterating
over them all should still be fast, because for each polyhedron you can
ignore all voxels except for the ones that are inside.

 - David

On Sun, Jul 23, 2017 at 9:34 PM, Elvis Stansvik <
elvis.stansvik at orexplore.com> wrote:

> 2017-07-24 5:30 GMT+02:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:
> > 2017-07-24 5:25 GMT+02:00 Dean Inglis <inglis.dl at gmail.com>:
> >> good to know David, thanks!!!
> >
> > Many thanks to both of you. I had not found vtkPolyDataToImageStencil
> > yet, but was looking more towards the concept of implicit functions.
> > But this sounds like a much better approach, so I think I was right in
> > reaching out :)
>
> Just one thing I saw in the docs for vtkPolyDataToImageStencil now:
>
>    "The polydata can either be a closed surface mesh or a series of
> polyline contours (one contour per slice)."
>
> Does this mean that, since I have a set of closed surfaces (upwards a
> 100 or so), I'd have to repeat the process David described, once for
> each of my polyhedron? Or is there some way to generate a stencil from
> many closed surfaces in one go?
>
> Elvis
>
> >
> > Elvis
> >
> >>
> >> - Dean
> >>
> >> On Sun, Jul 23, 2017 at 11:21 PM, David Gobbi <david.gobbi at gmail.com>
> wrote:
> >>>
> >>> Hi Elvis,
> >>>
> >>> I'd recommend generating a stencil with vtkPolyDataToImageStencil, then
> >>> iterating over over all the voxels inside the stencil with
> >>> vtkImagePointDataIterator:
> >>>
> >>> http://www.vtk.org/doc/nightly/html/classvtkPolyDataToImageStencil
> .html
> >>> http://www.vtk.org/doc/nightly/html/classvtkImagePointDataIterator
> .html
> >>>
> >>> The iterator can efficiently give you the pointId for every voxel
> enclosed
> >>> by the polyhedral surface (works for concave as well as convex
> surfaces).
> >>> Once you have the pointId, you can set that voxel to whatever you want.
> >>> There's a brief and vaguely relevant description on gitlab:
> >>> https://gitlab.kitware.com/vtk/vtk/merge_requests/1118
> >>>
> >>>  - David
> >>>
> >>>
> >>> On Sun, Jul 23, 2017 at 6:45 PM, Elvis Stansvik
> >>> <elvis.stansvik at orexplore.com> wrote:
> >>>>
> >>>> Hi all,
> >>>>
> >>>> I have a set of points describing multiple convex polyhedra. The
> >>>> polyhedra are for the most part disjoint in space, but they may
> >>>> intersect slightly in some places.
> >>>>
> >>>> I need to create an empty voxel volume (all scalars 0), and then
> >>>> "fill" the voxels that are inside one (or several) of the polyhedrons
> >>>> with some Perlin noise. I also have access to normals for the faces
> >>>> constituting the polyhedra, if necessary.
> >>>>
> >>>> Finally, I also have a single separate polyhedron (non-convex this
> >>>> time), and as a finishing step, I'd like to fill the voxels that are
> >>>> inside this polyhedron with a constant scalar value.
> >>>>
> >>>> Can VTK help me here?
> >>>>
> >>>> As this is new territory for me as far as VTK goes, any
> >>>> pointers/advice on how to go about it would be much appreciated.
> >>>>
> >>>> Cheers,
> >>>> Elvis
> >>>
> >>>
> >>> _______________________________________________
> >>> 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
> >>>
> >>> Search the list archives at: http://markmail.org/search/?q=vtkusers
> >>>
> >>> Follow this link to subscribe/unsubscribe:
> >>> http://public.kitware.com/mailman/listinfo/vtkusers
> >>>
> >>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170723/905633ac/attachment.html>


More information about the vtkusers mailing list