[vtkusers] Polydata filtering in real-time

Cory Quammen cory.quammen at kitware.com
Wed Jun 4 14:55:59 EDT 2014


Hi Nil,

You shouldn't actually need to modify the code. You should just be able to
turn off use of OpenGL display lists with
vtkMapper::ImmediateModeRenderingOff().

http://www.vtk.org/doc/nightly/html/classvtkMapper.html#ab9db044b3f5113808d2de42f13bb4fe8

Let us know if that gives you the same near-real-time updates that removing
calls to glNewList does.

Thanks,
Cory



On Wed, Jun 4, 2014 at 2:48 PM, Nil Goyette <nil.goyette at imeka.ca> wrote:

>  HI all, I tried more things and I can finally call it a success.
> Modifying the vtkPolyData when the cube moves is a bad idea for real-time
> rendering. A simple polydata->Modified() takes 3-4 seconds to render the
> next frame. There's too much fibers and not enough time in a second.
>
> I had some good results using another vtkPolyData, building it with the
> small subset of fibers passing by the cube and displaying it with a normal
> mapper. It was rendering in real-time most of the time, but not in the part
> with the most fibers.
>
> After a lot of trials and errors to make it fast, I discovered the OpenGL
> list functions in vtkOpenGLPolyDataMapper.cxx: glGenLists, glNewList,
> glEndList and glCallList. I understand why they were used in the code
> (compiling a list of commands to make them fast *after*), but I had to
> remove them to render in real-time. Now moving around in the scene is
> slower, but rendering the filtered fibers is as fast as I wanted it to be.
>
> In summary, the solution is to modify the vtkPolyDataMapper, not the
> vtkPolydata, in order to draw only the fibers you need in OpenGL.
>
> Le 2014-05-23 13:58, Nil Goyette a écrit :
>
> While waiting for an answer, I tried coding the third solution I had:
> "Extend vtkPolyData to add the concept of visibility". I took
> vtkStructuredGrid as an example, noted where this->CellVisibility appears
> and extended vtkPolyData with the important methods: Initialize,
> GetCellType and GetCell_1-2, added Blank, UnBlank, etc.
>
> Of course, it didn't work and I'm not sure why.  It seems GetCell and
> GetCellType are never called. I was sure that one method somewhere during
> the rendering process called them but it's not the case. What I don't
> understand then is, if all methods related to CellVisibility are not
> called, how can it works for vtkStructuredGrid? There's no example using
> vtkStructuredVisibilityConstraint. Do I need to pass the result of
> polydata->GetCellVisibilityArray() to another method?
>
> Le 2014-05-21 10:43, Nil Goyette a écrit :
>
> Hi,
>
> I'm searching how to recreate the FiberNavigator [1] using vtk and I'm
> stuck on one problem. As you can see in my screenshot [2], we use a little
> teal cube to filter which fibers we want to see. The cube will be a
> vtkBoxWidget and the fibers are a vtkPolyData. The problem is that there's
> no concept of cell visibility in a vtkPolyData. I found this feature in
> vtkStructuredGrid but I believe my data doesn't fit the class' description.
> I found three ways to do what I want:
>
>    1. Use vtkExtractSelectedPolyDataIds to extract only the cells I need.
>    I think this would be super slow.
>     2. Add/delete cells when the cube pass by. I think this would also be
>    slow.
>    3. Extend vtkPolyData to add the concept of visibility
>    (vtkStructuredVisibilityConstraint). This looks like the best option to me
>    but I may be wrong.
>
> I wonder what's the best way to filter the fibers. Do you have any
> suggestions for me? Thanks for your time.
>  [1] https://github.com/scilus/fibernavigator
> [2] http://imgur.com/1edZpWT
>
>
> --
>    [image: Logo Imeka] <http://imeka.ca/>  Nil Goyette, M.Sc.
> Programmer
> www.imeka.ca <http://imeka.ca/>
>
> _______________________________________________
> 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/20140604/89e22c5a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Imeka.png
Type: image/png
Size: 6630 bytes
Desc: not available
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20140604/89e22c5a/attachment.png>


More information about the vtkusers mailing list