[vtkusers] Help with VtkDatasetsurface filter

Bhanu Hariharan bhanu at petrotel.com
Wed Apr 3 10:42:59 EDT 2013


Thanks Alex.

However the resulting picture (full sized model) is the same. I expected
different picture but it is not.

I made outer cells all blue and in between cells all red. A transparent
image of this grid when all cells are rendered is purple (which is expected
blend of red and blue).

But it remains the same image when I render just surface - I expect to see
only BLUE?
Is this a VTK bug perhaps??

Thanks again.
Bhanu


On Tue, Apr 2, 2013 at 6:14 PM, Alex Malyushytskyy <alexmalvtk at gmail.com>wrote:

> I was not suggesting to use VTKActor, cause it means that your
> performance at least for large number of nodes
> will decrease. I only said it would make a difference ( possibly from
> very slow to slow or the same you currently have).
>
> As for opacity, I would expect picture be different, but I would not
> expect human eye to see the difference.
> Keep in mind that as far as I understand curse model only used during
> transition or rotation, resulted picture shown is full sized model,
>
> Regards,
>    Alex
>
>
> On Tue, Apr 2, 2013 at 3:14 PM, Bhanu Hariharan <bhanu at petrotel.com>
> wrote:
> > Alex,
> > I will try your suggestions - using VTKActor to see difference and
> different
> > frame rates.
> >
> > I have one more question that's not related to rendering performance. It
> > concerns opacity.
> >
> > I was alteast expecting to see different images when I specify opacity <
> 1
> > for the grid.
> >
> > Shouldn't a transparent image look different when I render all cells (all
> > layers) than when I render just surface cells?
> >
> >
> > Thanks again,
> > Bhanu
> >
> >
> >
> >
> > On Tue, Apr 2, 2013 at 4:49 PM, Alex Malyushytskyy <alexmalvtk at gmail.com
> >
> > wrote:
> >>
> >> LOD (level of details)  technique consists of run time assessment of
> >> performance and building a special model which will be used in certain
> >> circumstances and on the one hand would look as close as possible to
> >> the original, but on another hand allows achieve desired or better
> >> performance.
> >> That what LOD actor does, crude models will be silently created and
> >> displayed during rotation or when actor is moved.
> >>
> >> Now assume there are 2 model - lets say 1st is your unstructured grid,
> >> another is result of dataSetSurfaceFilter.
> >> Since both are using LOD actors, the following might happen:
> >>
> >> 1st model is found to be too big to be displayed and as a result crude
> >> model with N1 number of nodes is created and displayed
> >> 2nd model is found to be too big to be displayed and as a result crude
> >> model with N2 number of nodes is created and displayed
> >> or it is small enough , so it is displayed as is (but lets say still
> >> have N2 nodes)
> >>
> >> Now N1 might be mostly the same as N2.
> >> And you see no difference in performance during transition or rotation.
> >> Basically this means that LOD actor does his job well enough.
> >> I bet if you were using regular actors you would see a huge
> >> performance increase.
> >>
> >> If you need further performance you may just specify different frame
> rate.
> >> From http://www.vtk.org/doc/release/4.0/html/classvtkLODActor.html:
> >>
> >> "To control the frame rate, you typically set the
> >> vtkRenderWindowInteractor DesiredUpdateRate and StillUpdateRate. This
> >> then will cause vtkLODActor to adjust its LOD to fulfill the requested
> >> update rate.
> >> For greater control on levels of detail, see also vtkLODProp3D. That
> >> class allows arbitrary definition of each LOD.
> >> "
> >>
> >> Hope this helps,
> >>
> >> Alex
> >>
> >>
> >>
> >>
> >> On Tue, Apr 2, 2013 at 2:18 PM, Bhanu Hariharan <bhanu at petrotel.com>
> >> wrote:
> >> > Alex,
> >> >
> >> > To be specific in one of my cases,  No. of surfaces rendered were
> >> > reduced
> >> > from 6163542 to 373626 assuming grid has hexahedrons each with 6
> >> > surfaces. I
> >> > got the number 373626 by doing
> >> >
> >> > dataSetSurfaceFilter->GetOutput()->GetNumberOfCells()
> >> >
> >> > Thats a significant reduction of number of surfaces. These are
> rendered
> >> > using VTKLODActor.
> >> >
> >> > Can you please explain what you mean by "actually shown primitives
> >> > during
> >> > rotation". What are the shown primitives?
> >> >
> >> > I am just adding the output of the dataSetSurfaceFilter to a
> >> > vtkDataSetMapper and then to a vtkLODActor.
> >> >
> >> > All I know if no. of surfaces are reduced. Do I need to do/check
> >> > something
> >> > else?
> >> >
> >> > If you need something specific to answer more specifically, I can
> >> > provide
> >> > the details. It would be a great help.
> >> >
> >> > Thanks,
> >> > Bhanu
> >> >
> >> >
> >> > ---------- Forwarded message ----------
> >> > From: Alex Malyushytskyy <alexmalvtk at gmail.com>
> >> > Date: Tue, Apr 2, 2013 at 4:03 PM
> >> > Subject: Re: [vtkusers] Help with VtkDatasetsurface filter
> >> > To: "vtkusers at vtk.org" <vtkusers at vtk.org>
> >> >
> >> >
> >> > You may get only general advice asking general questions.
> >> > Compare  the number of nodes/cells you are you are getting from
> >> > vtkDataSetSurfaceFilter with
> >> > such in the unstructured grid,
> >> > Even though it may be significantly decreased in some cases, for
> >> > example if LOD actors are used,  they may decrease actually shown
> >> > primitives during rotation approximately to the same number and you
> >> > will not see any difference in the performance.
> >> >
> >> > Regards,
> >> >     Alex
> >> >
> >> >
> >> > On Tue, Apr 2, 2013 at 8:27 AM, Bhanu Hariharan <bhanu at petrotel.com>
> >> > wrote:
> >> >> Hi All,
> >> >> I was wondering if anyone would be kind enough to answer the
> following
> >> >> query
> >> >> for me.
> >> >>
> >> >> I had posted this a while back and still havent found the reason why
> >> >> vtkDataSetSurfaceFilter hasn't made rendering any faster. The
> >> >> interaction
> >> >> and rendering time to rotate zoom etc seem to be just the same as
> >> >> though I
> >> >> rendered all cells in the unstructured grid.
> >> >> The reason I chose to introduce rendering just surface cells in the
> >> >> first
> >> >> place was to make rendering faster. But I am surprised it doesnt make
> >> >> any
> >> >> difference at all :(.
> >> >> Any words or ideas?
> >> >>
> >> >> Thanks so much
> >> >> Bhanu
> >> >>
> >> >>
> >> >>
> >> >> On Mon, Mar 11, 2013 at 4:30 PM, Bhanu Hariharan <bhanu at petrotel.com
> >
> >> >> wrote:
> >> >>>
> >> >>> One related question though. I started using Surface Filter really
> >> >>> only
> >> >>> for performance reasons.
> >> >>>
> >> >>> I was thinking if I rendered just surface cells, the rendering and
> >> >>> rotation etc would be must faster.
> >> >>> However I do not find it any different than when I render all cells.
> >> >>> What
> >> >>> am I missing?
> >> >>> Any reasons anyone can think of, please let me know.
> >> >>>
> >> >>>
> >> >>>
> >> >>> Thanks,
> >> >>> Bhanu
> >> >>>
> >> >>>
> >> >>>
> >> >>> On Mon, Mar 11, 2013 at 4:12 PM, Bhanu Hariharan <
> bhanu at petrotel.com>
> >> >>> wrote:
> >> >>>>
> >> >>>> David,
> >> >>>> As you suggested, I got it to work using SetGlobalIds and then
> >> >>>> retrieving
> >> >>>> that using GetGlobalIds. Many thanks for your patience and help.
> >> >>>>
> >> >>>>
> >> >>>> -Bhanu
> >> >>>>
> >> >>>>
> >> >>>> On Wed, Mar 6, 2013 at 11:41 AM, Bhanu Hariharan <
> bhanu at petrotel.com>
> >> >>>> wrote:
> >> >>>>>
> >> >>>>> David,
> >> >>>>>
> >> >>>>> I am using vtk 5.2 - is it possible that this function was not
> >> >>>>> defined
> >> >>>>> in that version.
> >> >>>>>
> >> >>>>> I get the error that SetOriginalCellIdsName is not a member of
> >> >>>>> vtkDataSetSurfaceFilter   :(
> >> >>>>>
> >> >>>>> Bhanu
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>> On Wed, Mar 6, 2013 at 10:36 AM, David E DeMarle
> >> >>>>> <dave.demarle at kitware.com> wrote:
> >> >>>>>>
> >> >>>>>> Give DSF a name for the array.
> >> >>>>>> SetOriginalCellIdsName("idsintoDSForsomething")
> >> >>>>>> Then retrieve it from the output like
> >> >>>>>>
> DSF->GetOutput()->GetCellData()->GetArray("idsintoDSForsomething")
> >> >>>>>>
> >> >>>>>>
> >> >>>>>> David E DeMarle
> >> >>>>>> Kitware, Inc.
> >> >>>>>> R&D Engineer
> >> >>>>>> 21 Corporate Drive
> >> >>>>>> Clifton Park, NY 12065-8662
> >> >>>>>> Phone: 518-881-4909
> >> >>>>>>
> >> >>>>>>
> >> >>>>>> On Wed, Mar 6, 2013 at 11:29 AM, Bhanu Hariharan
> >> >>>>>> <bhanu at petrotel.com>
> >> >>>>>> wrote:
> >> >>>>>>>
> >> >>>>>>>
> >> >>>>>>> David,
> >> >>>>>>>
> >> >>>>>>> I had turned on PassThroughCell. But I do not know how to access
> >> >>>>>>> the
> >> >>>>>>> new Ids array after the fact.
> >> >>>>>>> VTK Doc says something about a 'OrginalCellIds' but I am not
> sure
> >> >>>>>>> how
> >> >>>>>>> to access this.
> >> >>>>>>> So I extracted the output of DSF to a vtkPolyData but still cant
> >> >>>>>>> figure out how to get to that new Ids array.
> >> >>>>>>> Any help with that is really appreciated.
> >> >>>>>>>
> >> >>>>>>> I will try your other suggestion in the meantime.
> >> >>>>>>>
> >> >>>>>>> Thanks,
> >> >>>>>>> Bhanu
> >> >>>>>>>
> >> >>>>>>>
> >> >>>>>>> On Wed, Mar 6, 2013 at 9:25 AM, David E DeMarle
> >> >>>>>>> <dave.demarle at kitware.com> wrote:
> >> >>>>>>>>
> >> >>>>>>>> Sorry for the confusion, it has been a long time since I added
> >> >>>>>>>> that
> >> >>>>>>>> code the DataSetSurfaceFilter. Turning PassThroughCell/PointIds
> >> >>>>>>>> in
> >> >>>>>>>> fact
> >> >>>>>>>> generates a new Ids array, which you can retrieve after the
> fact
> >> >>>>>>>> to
> >> >>>>>>>> do the
> >> >>>>>>>> lookups into the data that is input to the DSF and extract
> >> >>>>>>>> particular
> >> >>>>>>>> cells/points by their offset (n'th cell in the cell array, n'th
> >> >>>>>>>> point in the
> >> >>>>>>>> point array)
> >> >>>>>>>>
> >> >>>>>>>> However I still recommend making your own ids array and using
> >> >>>>>>>> that
> >> >>>>>>>> instead of PassThrough. vtkIdFilter will generate them for you.
> >> >>>>>>>> The
> >> >>>>>>>> array
> >> >>>>>>>> marked as the active global ids array is treated specially by
> >> >>>>>>>> most
> >> >>>>>>>> filters
> >> >>>>>>>> in that they try to preserve it across operations (including
> >> >>>>>>>> threshold and
> >> >>>>>>>> DSF). We added this to VTK a few years ago specifically for
> this
> >> >>>>>>>> case of
> >> >>>>>>>> finding out where particular result values come from (and in
> >> >>>>>>>> particular for
> >> >>>>>>>> surface selection). So the Threshold and surface filter will
> push
> >> >>>>>>>> globalIDS
> >> >>>>>>>> forward just fine. Once you get a result, grab the active
> >> >>>>>>>> globaIDs
> >> >>>>>>>> array,
> >> >>>>>>>> look for the values in it, and look them up in the original
> data.
> >> >>>>>>>> The
> >> >>>>>>>> extract selections filter will do the job of looking them up in
> >> >>>>>>>> the
> >> >>>>>>>> original
> >> >>>>>>>> data and pulling them out as a new dataset.
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>> David E DeMarle
> >> >>>>>>>> Kitware, Inc.
> >> >>>>>>>> R&D Engineer
> >> >>>>>>>> 21 Corporate Drive
> >> >>>>>>>> Clifton Park, NY 12065-8662
> >> >>>>>>>> Phone: 518-881-4909
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>> On Wed, Mar 6, 2013 at 10:02 AM, Bhanu Hariharan
> >> >>>>>>>> <bhanu at petrotel.com>
> >> >>>>>>>> wrote:
> >> >>>>>>>>>
> >> >>>>>>>>> David,
> >> >>>>>>>>> Thanks for replying. However I have a doubt.
> >> >>>>>>>>> Are you suggesting the VTKUnstructuredgrid should have an
> >> >>>>>>>>> globalids
> >> >>>>>>>>> array? Is that what the member is called - globalIds? I
> actually
> >> >>>>>>>>> pass
> >> >>>>>>>>> VTKUnstructuredgrid  to a VTKThreshold filter and then pass
> that
> >> >>>>>>>>> filter to
> >> >>>>>>>>> VTKdatasetsurfacefilter.
> >> >>>>>>>>>
> >> >>>>>>>>> Perhaps you can post a couple lines of code. That would be
> very
> >> >>>>>>>>> helpful.
> >> >>>>>>>>> Thanks,
> >> >>>>>>>>> Bhanu
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> On Tue, Mar 5, 2013 at 6:55 PM, David E DeMarle
> >> >>>>>>>>> <dave.demarle at kitware.com> wrote:
> >> >>>>>>>>>>
> >> >>>>>>>>>> The input data should have a globalids array containing a
> >> >>>>>>>>>> unique
> >> >>>>>>>>>> value for each cell. If it does, extract will preserve it.
> >> >>>>>>>>>> After
> >> >>>>>>>>>> the
> >> >>>>>>>>>> extraction, use that array in the polydata to do the look up
> to
> >> >>>>>>>>>> the original
> >> >>>>>>>>>> cell in the unstructured grid.
> >> >>>>>>>>>>
> >> >>>>>>>>>> On Mar 5, 2013 6:00 PM, "Bhanu Hariharan" <
> bhanu at petrotel.com>
> >> >>>>>>>>>> wrote:
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> Hi All,
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> I need some help doing the following. Please could one of
> you
> >> >>>>>>>>>>> guide me on how.
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> I use a vtkDataSetSurfaceFilter on VTKUnstructuredGrid to
> >> >>>>>>>>>>> render
> >> >>>>>>>>>>> skin of that grid. That works fine and I can see the number
> of
> >> >>>>>>>>>>> surfaces
> >> >>>>>>>>>>> shown by grabbing the
> >> >>>>>>>>>>> dataSetSurfaceFilter->GetOutput()->GetNumberOfCells().
> >> >>>>>>>>>>>
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> I need a way to map the surface back to the original cell
> id.
> >> >>>>>>>>>>> That
> >> >>>>>>>>>>> is if I have 2 cells and I render just skin, number of
> >> >>>>>>>>>>> surfaces
> >> >>>>>>>>>>> rendered are
> >> >>>>>>>>>>> 10. I need to be able to pick on any of these 10 surfaces
> and
> >> >>>>>>>>>>> map
> >> >>>>>>>>>>> them back
> >> >>>>>>>>>>> to either of the the 2 grid cells.
> >> >>>>>>>>>>>
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> http://www.vtk.org/doc says :
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> If PassThroughCellIdsOn is 1, then the output polygonal
> >> >>>>>>>>>>> dataset
> >> >>>>>>>>>>> will have a celldata array that holds the cell index of the
> >> >>>>>>>>>>> original 3D cell
> >> >>>>>>>>>>> that produced each output cell. This is useful for cell
> >> >>>>>>>>>>> picking.
> >> >>>>>>>>>>> I turned the PassThroughCellIds On and I have UseStrips
> turned
> >> >>>>>>>>>>> off.
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> Then I did
> >> >>>>>>>>>>> vtkPolyData *surfacePolyData =
> >> >>>>>>>>>>> dataSetSurfaceFilter->GetOutput();
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> But I do not see how I can access that celldata array that
> >> >>>>>>>>>>> holds
> >> >>>>>>>>>>> the original 3D cells for the surfaces.
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> Please can anyone advise on how.
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> Thanks in advance.
> >> >>>>>>>>>>> Bhanu
> >> >>>>>>>>>>>
> >> >>>>>>>>>>>
> >> >>>>>>>>>>>
> >> >>>>>>>>>>>
> >> >>>>>>>>>>>
> >> >>>>>>>>>>>
> >> >>>>>>>>>>> _______________________________________________
> >> >>>>>>>>>>> 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
> >> >>>>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>
> >> >>>>>>
> >> >>>>>
> >> >>>>
> >> >>>
> >> >>
> >> >>
> >> >> _______________________________________________
> >> >> 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
> >> >>
> >> > _______________________________________________
> >> > 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
> >> >
> >
> >
> _______________________________________________
> 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/20130403/7b44d75a/attachment.htm>


More information about the vtkusers mailing list