<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">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.<br>
      <br>
      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.<br>
      <br>
      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.<br>
      <br>
      In summary, the solution is to modify the vtkPolyDataMapper, not
      the vtkPolydata, in order to draw only the fibers you need in
      OpenGL.<br>
      <br>
      Le 2014-05-23 13:58, Nil Goyette a écrit :<br>
    </div>
    <blockquote cite="mid:537F8C3B.1050306@imeka.ca" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <div class="moz-cite-prefix">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.<br>
        <br>
        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?<br>
        <br>
        Le 2014-05-21 10:43, Nil Goyette a écrit :<br>
      </div>
      <blockquote cite="mid:537CBB87.5070203@imeka.ca" type="cite">
        <meta http-equiv="content-type" content="text/html;
          charset=ISO-8859-1">
        Hi,<br>
        <br>
        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:<br>
        <ol>
          <li>Use vtkExtractSelectedPolyDataIds to extract only the
            cells I need. I think this would be super slow.<br>
          </li>
          <li>Add/delete cells when the cube pass by. I think this would
            also be slow.</li>
          <li>Extend vtkPolyData to add the concept of visibility
            (vtkStructuredVisibilityConstraint). This looks like the
            best option to me but I may be wrong.</li>
        </ol>
        <p>I wonder what's the best way to filter the fibers. Do you
          have any suggestions for me? Thanks for your time.<br>
        </p>
        [1] <a moz-do-not-send="true" class="moz-txt-link-freetext"
          href="https://github.com/scilus/fibernavigator">https://github.com/scilus/fibernavigator</a><br>
        [2] <a moz-do-not-send="true" class="moz-txt-link-freetext"
          href="http://imgur.com/1edZpWT">http://imgur.com/1edZpWT</a><br>
      </blockquote>
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      <table cellpadding="2" cellspacing="2" width="218" border="0"
        height="96">
        <tbody>
          <tr>
            <td valign="middle"> <a href="http://imeka.ca/"> <img
                  alt="Logo Imeka"
                  src="cid:part3.08010909.07000004@imeka.ca" width="66"
                  height="67"> </a> </td>
            <td valign="top"> Nil Goyette, M.Sc.<br>
              Programmer<br>
              <a href="http://imeka.ca/">www.imeka.ca</a> </td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>