[vtkusers] Help with VtkDatasetsurface filter

Cory Quammen cquammen at cs.unc.edu
Thu Apr 4 11:21:54 EDT 2013


The LOD actor might be causing the differences in the image. Which LOD
actor are you using?  If you are using vtkLODActor, then you might be
getting the middle level of detail which is a point sampling of the
unstructured mesh rather than the surface (see the documentation:
http://www.vtk.org/doc/nightly/html/classvtkLODActor.html). That would
explain the purple. When fed the output of the surface filter, this
LOD actor would be sampling only from the surface. That would explain
the blue.

The vtkDataSetSurfaceFilter won't do anything for you other than
ensure that only the surface is displayed when using an LOD technique.
It will also give you the boundary geometry that you could potentially
use for purposes other than display.

Cory

On Thu, Apr 4, 2013 at 11:08 AM, Bhanu Hariharan <bhanu at petrotel.com> wrote:
> Cory,
> I have pasted a code snippet. Let me know if you need to know anything else.
> I really need to know the answers.
> It is starting to look like using a DataSetSurfaceFilter is of no use if it
> is going to give me same result (performance and image) as the
> vtkDataSetMapper that I had already been using.
>
> Starting to wonder when does one use a datasetsurfacefilter anyway if
> vtkdatasetmapper can get the same job done.
>
>
>    If( ShowOnlySurface )
>     {
>             MyDataSetSurfaceFilter->SetInput( MyThresholdFilter->GetOutput()
> );
>             MyDataSetSurfaceFilter->Update();
>
>            MyDataSetMapper->SetInput( MyDataSetSurfaceFilter->GetOutput());
>    }
>    else
>    {
>             MyDataSetMapper->SetInput( MyThresholdFilter->GetOutput());
>     }
>
> MyLODActor->SetMapper(MyDataSetMapper);
> MyRenderer->AddActor(MyLODActor);
>
> Thanks,
> Bhanu
>
>
>
> On Thu, Apr 4, 2013 at 9:29 AM, Cory Quammen <cquammen at cs.unc.edu> wrote:
>>
>> Bhanu,
>>
>> It's hard to know exactly what might be going on without seeing some
>> code or images. I would think, like you, that the two images should be
>> the same when the surface property is set to semi-transparent.
>>
>> Using a vtkUnstructuredGridVolumeMapper will almost certainly be
>> slower than using vtkUnstructuredGridVolumeMapper because volume
>> rendering is in general much more computationally intensive than
>> surface rendering.
>>
>> Cory
>>
>> On Thu, Apr 4, 2013 at 10:18 AM, Bhanu Hariharan <bhanu at petrotel.com>
>> wrote:
>> > Cory,
>> > Thanks very much for showing interest and taking the time to help me
>> > out.
>> >
>> > I think your explanation makes perfect sense. I do use
>> > vtkDataSetMapper...so
>> > you hit the bull's eye.
>> > I missed the line in the documentation about vtkDataSetMapper. I had
>> > been
>> > chasing vtkDataSetSurfaceFilter.
>> >
>> > That explains why I do not see any performance difference on doing an
>> > explicit vtkDataSetSurfaceFiltermyself.
>> >
>> > But I still have little trouble understanding the transparent grid.
>> > I made boundary 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). This was using just vtkDataSetMapper.
>> >
>> > Now if vtkDataSetMapper is rendering only boundary surfaces( by doing an
>> > internal vtkDataSetSurfaceFilter )
>> > shouldnt I expect only  a blue image?
>> >
>> > Or could it be that when the image is transparent,
>> > vtkDataSetSurfaceFilter
>> > handles it somewhat differently?
>> > Like rendering all surfaces atleast once or something ( just trying to
>> > explain the purple color).
>> >
>> > Please let me know what you think of it?
>> >
>> > Thanks
>> > Bhanu
>> >
>> >
>> > PS: Would using a vtkUnstructuredGridVolumeMapper instead of a
>> > vtkDataSetMapper cause a performance HIT?
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > On Wed, Apr 3, 2013 at 9:27 PM, Cory Quammen <cquammen at cs.unc.edu>
>> > wrote:
>> >>
>> >> Bhanu,
>> >>
>> >> Could you post a small snippet showing how you are using VTK to render
>> >> your unstructured grid?
>> >>
>> >> I suspect you are using a vtkDataSetMapper. The documentation for this
>> >> class says:
>> >>
>> >> "The 2D faces of 3D cells are mapped only if they are used by only one
>> >> cell, i.e., on the boundary of the data set."
>> >>
>> >> If you are in fact using a vtkDataSetMapper, I believe it is applying
>> >> a vtkDataSetSurfaceFilter underneath and rendering only the boundary
>> >> polygons. Hence you should see no difference in either image or
>> >> performance if you apply the vtkDataSetSurfaceFilter yourself before
>> >> sending it to a vtkDataSetMapper.
>> >>
>> >> If you ever want to render the whole volume, you would need to use
>> >> something like a vtkUnstructuredGridVolumeMapper.
>> >>
>> >> Hope that helps,
>> >> Cory
>> >>
>> >> On Wed, Apr 3, 2013 at 9:59 PM, Alex Malyushytskyy
>> >> <alexmalvtk at gmail.com>
>> >> wrote:
>> >> > As far as I understand if all internal surfaces were eliminated (for
>> >> > example
>> >> > by vtkDataSetSurfaceFilter ) you would see only blue,
>> >> > but I do not think vtkDataSetSurfaceFilterdoes it.
>> >> >
>> >> > Below is only my assumption, since I did not look in the
>> >> > vtkDataSetSurfaceFilter internals and documentation does not answer
>> >> > the
>> >> > question, but I would expect that filter only combines small
>> >> > primitives
>> >> > which are in the same geometrical plane and are connected into large
>> >> > and
>> >> > eliminates duplicates when it works on the unstructured grid .
>> >> >
>> >> > It the array you colored original database is transferred you will
>> >> > see
>> >> > the
>> >> > same colors as with original database.
>> >> >
>> >> > Regards,
>> >> >       Alex
>> >> >
>> >> >
>> >> > On Wed, Apr 3, 2013 at 7:42 AM, Bhanu Hariharan <bhanu at petrotel.com>
>> >> > wrote:
>> >> >>
>> >> >> 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
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > 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
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Cory Quammen
>> >> Research Associate
>> >> Department of Computer Science
>> >> The University of North Carolina at Chapel Hill
>> >
>> >
>>
>>
>>
>> --
>> Cory Quammen
>> Research Associate
>> Department of Computer Science
>> The University of North Carolina at Chapel Hill
>
>



-- 
Cory Quammen
Research Associate
Department of Computer Science
The University of North Carolina at Chapel Hill



More information about the vtkusers mailing list