[vtkusers] vtkSmoothPolyDataFilter + unstructuredGrid

Bill Chivas noo134 at googlemail.com
Mon Dec 14 03:50:04 EST 2009


I mean vtkDataSetSurfaceFilter (similar to vtkGeometryFilter).
At step 3, if i replace it with vtkGeometryFilter, i get only the outer.

vtkSmoothPolyDataFilter on which cells is applied? hexahedrons?


2009/12/11 David Gobbi <david.gobbi at gmail.com>

> By "vtkDataSurfaceFilter" you mean "vtkGeometryFilter", right?
>
> And no, the interior hexahedrons are definitely not smoothed.  No way
> no how.  And because of this, some of the inside points might end up
> on the outside after smoothing, resulting in an invalid data set.
>
> You need a step 5 which smooths the interior points, based on the
> connectivity information.  Such a filter does not exist in VTK, it
> would have to be written.
>
>   David
>
>
> On Fri, Dec 11, 2009 at 9:04 AM, Bill Chivas <noo134 at googlemail.com>
> wrote:
> > Thank you both.
> > I'll try out your suggestions.
> > By far, i tried the following pipeline:
> > 1) UnstructuredGrid
> > 2) vtkShrinkFilter (so i can see the hexahedrons)
> > 3) vtkDataSetSurfaceFilter (!)
> > 4) vtkSmoothPolyDataFilter
> >
> > I get what i want. I'm not really sure if ALL hexahedrons are smoothed
> (and
> > not only the outer ones).
> > What do you think?
> >
> > Thanks,
> > Bill
> >
> >
> >
> > 2009/12/11 David Gobbi <david.gobbi at gmail.com>
> >>
> >> Hmm... if GeometryFilter keeps all the points, then it's possible that
> >> you could generate a new vtkDataSet that combines the points from the
> >> smoothed polydata with the cells of your grid.  Something like this:
> >>
> >> smoothFilter->Update();
> >> gridProducer->Update();
> >> vtkDataSet *newdata = vtkDataSet::New();
> >> newdata->DeepCopy(gridProducer->GetOutput());
> >> newdata->SetPoints(smoothFilter->GetOutput()->GetPoints());
> >>
> >> Note that code like this can crash if the assumptions aren't correct.
> >> Also, only the outer layer of points will be smoothed, so the
> >> resulting data object might contain invalid cells.  But still, this
> >> should give you ideas about how to find a proper solution.
> >>
> >>    David
> >>
> >>
> >> On Fri, Dec 11, 2009 at 8:40 AM, Bill Chivas <noo134 at googlemail.com>
> >> wrote:
> >> > vtkGeometryFilter works fine. I wonder if i could get back to
> >> > unstructuredGrid and hexahedrons by using the points.
> >> > I noticed that the number of points are the same in unstructuredGrid
> and
> >> > vtkGeometryFilter (vtkPolyData).
> >> > Could i "reproduce" the original hexahedron topology?
> >> >
> >> > Thanks,
> >> > Bill
> >> >
> >> > 2009/12/11 David Gobbi <david.gobbi at gmail.com>
> >> >>
> >> >> On Fri, Dec 11, 2009 at 7:11 AM, Bill Chivas <noo134 at googlemail.com>
> >> >> wrote:
> >> >> > Hello all,
> >> >> >
> >> >> > I would like to use vtkSmoothPolyDataFilter  on an
> unstructuredGrid,
> >> >> > but
> >> >> > i
> >> >> > read the particular filter applies only to vtkPolyData.
> >> >> > My unstructuredGrid consists of hexahedrons.
> >> >> > How could i use the filter?
> >> >> > One idea i thought is to extract the surface iterately and apply to
> >> >> > these
> >> >> > surfaces, but i don't know if it's ok.
> >> >>
> >> >> I've seen some people create a "skin" polydata with
> vtkGeometryFilter,
> >> >> apply the smoothing to the "skin" and then use a custom filter to
> >> >> propagate the smoothing throughout the interior of their mesh.  The
> >> >> vtkGeometryFilter is a basic anything-to-polydata filter, so it is
> >> >> easy to use.  The final step of using the smoothed polydata to create
> >> >> a smoothed mesh is nontrivial, though.
> >> >>
> >> >>    David
> >> >
> >> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20091214/f1a312b6/attachment.htm>


More information about the vtkusers mailing list