<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <tt>Thanks,<br>
      <br>
      I realized my problem now. I was doing tracer -&gt;
      vtkSelectPolyData -&gt; vtkClipPolyData. But the output of
      vtkSelectPolyData is already what I needed. It just so happen to
      work with the .ply because it has scalar data for the color at
      each pixel while the obj relies on texture mapping. I thought the
      vtkSelectPolydata worked by outputing the original polydata with a
      boolean scalar that indicated what points were selected, but it
      actually extracts the selected polydata. <br>
      <br>
      Thank you very much!<br>
      Adam<br>
      <br>
      <br>
    </tt>On 5/19/2011 3:32 PM, J&eacute;r&ocirc;me wrote:
    <blockquote
      cite="mid:BANLkTi=kv4drH4L8DM5Nax-xZMr1+JCq6Q@mail.gmail.com"
      type="cite">Hi,<br>
      <br>
      If you want to track the bug, you should avoid a so complicated
      code (I got some<br>
      build error, I don't know if my fixes are coherent with your
      issue...). The error<br>
      message deals with Clip, so basically you write a test pipeline
      like this :<br>
      &nbsp;&nbsp; reader -&gt; clip -&gt; update<br>
      If the error doesn't occur, add and test new functionnality step
      by step.<br>
      <br>
      For your case, I just opened your data with paraview : it seems
      that your obj file<br>
      doesn't contain point data. Please, try to generate scalar data
      before clipping, <br>
      as the error says.<br>
      <br>
      Jerome<br>
      <br>
      <div class="gmail_quote">2011/5/19 agerlach <span dir="ltr">&lt;<a
            moz-do-not-send="true" href="mailto:agerlach@gmail.com">agerlach@gmail.com</a>&gt;</span><br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          OK. Here is an attempt at an example of my problem.
          Unfortunately for some<br>
          reason I cannot get an observer to work to identify the end of
          the<br>
          tracerWidet event. I'm sure it is something simple. So, may
          need some help<br>
          getting that to work before I will be able to demonstrate my
          problem.<br>
          (Please be patient, I'm a newbie) In my main application it
          uses a gui so I<br>
          use the gui button press to turn tracerWidet off and then
          compute the area.<br>
          <br>
          To run place the following ply and obj model and texture in
          the same folder<br>
          as the exe.<br>
          <a moz-do-not-send="true"
            href="http://www.intellimedsystems.com/files/AreaTruth_T1.jpg"
            target="_blank">http://www.intellimedsystems.com/files/AreaTruth_T1.jpg</a>
          Texture<br>
          <a moz-do-not-send="true"
            href="http://www.intellimedsystems.com/files/AreaTruth.ply"
            target="_blank">http://www.intellimedsystems.com/files/AreaTruth.ply</a>
          ply model<br>
          <a moz-do-not-send="true"
            href="http://www.intellimedsystems.com/files/AreaTruth.obj"
            target="_blank">http://www.intellimedsystems.com/files/AreaTruth.obj</a>
          obj model<br>
          <br>
          Run and type y to use the obj otherwise the ply will be
          loaded.<br>
          <br>
          #include &lt;vtkPolyDataMapper.h&gt;<br>
          #include &lt;vtkActor.h&gt;<br>
          #include &lt;vtkRenderWindow.h&gt;<br>
          #include &lt;vtkRenderer.h&gt;<br>
          #include &lt;vtkRenderWindowInteractor.h&gt;<br>
          #include &lt;vtkPolyData.h&gt;<br>
          #include &lt;vtkSmartPointer.h&gt;<br>
          #include &lt;vtkSphereSource.h&gt;<br>
          #include &lt;vtkImageTracerWidget.h&gt;<br>
          #include &lt;vtkInteractorStyleTrackballCamera.h&gt;<br>
          #include &lt;vtkSelectPolyData.h&gt;<br>
          #include &lt;vtkClipPolyData.h&gt;<br>
          #include &lt;vtkMassProperties.h&gt;<br>
          #include &lt;vtkPLYReader.h&gt;<br>
          #include &lt;vtkOBJReader.h&gt;<br>
          #include &lt;vtkJPEGReader.h&gt;<br>
          #include &lt;vtkTexture.h&gt;<br>
          #include &lt;vtkCallbackCommand.h&gt;<br>
          <br>
          <br>
          class vtkITWCallback : public vtkCommand<br>
          <br>
          {<br>
          <br>
          public:<br>
          &nbsp; &nbsp;static vtkITWCallback *New()<br>
          &nbsp; &nbsp;{ return new vtkITWCallback; }<br>
          <br>
          &nbsp; &nbsp;virtual void Execute(vtkObject *caller, unsigned long,
          void*)<br>
          &nbsp; &nbsp;{<br>
          &nbsp; &nbsp; &nbsp; &nbsp;vtkImageTracerWidget *tracer =<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
          &nbsp;reinterpret_cast&amp;lt;vtkImageTracerWidget*&amp;gt;(caller);<br>
          <br>
          &nbsp; &nbsp; &nbsp; &nbsp;if(tracer-&gt;IsClosed()) {<br>
          <div class="im"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkPolyData&gt;
            tracePolyData =<br>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
            &nbsp;vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>
            <br>
          </div>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tracer-&gt;GetPath(tracePolyData);<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; "There are " &lt;&lt;
          tracePolyData-&gt;GetNumberOfPoints()<br>
          &lt;&lt; " points in the path." &lt;&lt; std::endl;<br>
          <div class="im"><br>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkSelectPolyData&gt; loop =<br>
            vtkSmartPointer&lt;vtkSelectPolyData&gt;::New();<br>
          </div>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loop-&gt;SetInput(polyData);<br>
          <div class="im"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
            &nbsp;loop-&gt;SetLoop(tracePolyData-&gt;GetPoints());<br>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loop-&gt;SetSelectionModeToSmallestRegion();<br>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loop-&gt;Update();<br>
            <br>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkClipPolyData&gt; clip =<br>
            vtkSmartPointer&lt;vtkClipPolyData&gt;::New();<br>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;clip-&gt;SetInput(loop-&gt;GetOutput());<br>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;clip-&gt;Update();<br>
            <br>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkMassProperties&gt; mass =<br>
            vtkSmartPointer&lt;vtkMassProperties&gt;::New();<br>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mass-&gt;SetInput(clip-&gt;GetOutput());<br>
          </div>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; "Area = " &lt;&lt;
          mass-&gt;GetSurfaceArea() &lt;&lt; "[mm]";<br>
          &nbsp; &nbsp; &nbsp; &nbsp;}<br>
          &nbsp; &nbsp; &nbsp; &nbsp;else<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; "Trace not closed";<br>
          &nbsp; &nbsp;}<br>
          <br>
          &nbsp; &nbsp;vtkITWCallback():polyData(0){}<br>
          <br>
          &nbsp; &nbsp;vtkPolyData *polyData;<br>
          <br>
          <br>
          };<br>
          <br>
          int main(int argc, char *argv[])<br>
          {<br>
          &nbsp;bool usePLY = true;<br>
          &nbsp;bool hasTexture = false;<br>
          <br>
          &nbsp;std::string input = " ";<br>
          &nbsp;std::cout &lt;&lt; "Use obj (y/n):\n&gt;";<br>
          &nbsp;std::getline(cin,input);<br>
          <br>
          &nbsp;if(input == "y" || input == "Y")<br>
          &nbsp; &nbsp; &nbsp;usePLY = false;<br>
          <br>
          &nbsp;vtkSmartPointer&lt;vtkPolyData&gt; polyData;<br>
          &nbsp;polyData = vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>
          <br>
          &nbsp;vtkSmartPointer&lt;vtkTexture&gt; texture =<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkTexture&gt;::New();<br>
          <br>
          &nbsp;if(usePLY)<br>
          &nbsp;{<br>
          &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; "Using *.ply";<br>
          &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkPLYReader&gt; plyReader =<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkPLYReader&gt;::New();<br>
          <br>
          &nbsp; &nbsp; &nbsp;plyReader-&gt;SetFileName("AreaTruth.ply");<br>
          &nbsp; &nbsp; &nbsp;plyReader-&gt;Update();<br>
          &nbsp; &nbsp; &nbsp;polyData = plyReader-&gt;GetOutput();<br>
          <br>
          &nbsp;}<br>
          &nbsp;else<br>
          &nbsp;{<br>
          &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; "Using *.obj";<br>
          &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkOBJReader&gt; objReader =<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkOBJReader&gt;::New();<br>
          <br>
          &nbsp; &nbsp; &nbsp;objReader-&gt;SetFileName("AreaTruth.obj");<br>
          &nbsp; &nbsp; &nbsp;objReader-&gt;Update();<br>
          &nbsp; &nbsp; &nbsp;polyData = objReader-&gt;GetOutput();<br>
          <br>
          &nbsp; &nbsp; &nbsp;hasTexture = true;<br>
          <br>
          &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkJPEGReader&gt; jpgReader =<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkJPEGReader&gt;::New();<br>
          &nbsp; &nbsp; &nbsp;jpgReader-&gt;SetFileName("AreaTruth_T1.jpg");<br>
          &nbsp; &nbsp; &nbsp;jpgReader-&gt;Update();<br>
          <br>
          <br>
          &nbsp; &nbsp;
          &nbsp;texture-&gt;SetInputConnection(jpgReader-&gt;GetOutputPort());<br>
          &nbsp; &nbsp; &nbsp;texture-&gt;InterpolateOn();<br>
          <br>
          <br>
          &nbsp;}<br>
          <br>
          &nbsp; // Create a mapper and actor<br>
          &nbsp;vtkSmartPointer&lt;vtkPolyDataMapper&gt; mapper =<br>
          &nbsp; &nbsp;vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();<br>
          &nbsp;mapper-&gt;SetInput(polyData);<br>
          &nbsp;vtkSmartPointer&lt;vtkActor&gt; actor =<br>
          &nbsp; &nbsp;vtkSmartPointer&lt;vtkActor&gt;::New();<br>
          &nbsp;actor-&gt;SetMapper(mapper);<br>
          <br>
          &nbsp;if(hasTexture)<br>
          &nbsp; &nbsp; &nbsp;actor-&gt;SetTexture(texture);<br>
          <br>
          &nbsp;// A renderer and render window<br>
          &nbsp;vtkSmartPointer&lt;vtkRenderer&gt; renderer =<br>
          &nbsp; &nbsp;vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>
          &nbsp;vtkSmartPointer&lt;vtkRenderWindow&gt; renderWindow =<br>
          &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>
          &nbsp;renderWindow-&gt;AddRenderer(renderer);<br>
          &nbsp;renderer-&gt;AddActor(actor);<br>
          <br>
          &nbsp;// An interactor<br>
          &nbsp;vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;
          renderWindowInteractor =<br>
          &nbsp; &nbsp;vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>
          &nbsp;renderWindowInteractor-&gt;SetRenderWindow(renderWindow);<br>
          <br>
          &nbsp;vtkSmartPointer&lt;vtkInteractorStyleTrackballCamera&gt;
          style =<br>
          &nbsp;
          &nbsp;vtkSmartPointer&lt;vtkInteractorStyleTrackballCamera&gt;::New();<br>
          <br>
          &nbsp;renderWindowInteractor-&gt;SetInteractorStyle(style);<br>
          <br>
          &nbsp;vtkSmartPointer&lt;vtkCallbackCommand&gt; callback =<br>
          &nbsp; &nbsp;vtkSmartPointer&lt;vtkCallbackCommand&gt;::New();<br>
          &nbsp;callback-&gt;SetCallback(CallbackFunction);<br>
          <br>
          &nbsp;vtkSmartPointer&lt;vtkITWCallback&gt; itwCallback =<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkITWCallback&gt;::New();<br>
          &nbsp;itwCallback-&gt;polyData = polyData;<br>
          <br>
          <br>
          <br>
          &nbsp;vtkSmartPointer&lt;vtkImageTracerWidget&gt; tracerWidget;<br>
          &nbsp;tracerWidget =
          vtkSmartPointer&lt;vtkImageTracerWidget&gt;::New();<br>
          &nbsp;tracerWidget-&gt;SetInteractor(renderWindowInteractor);<br>
          &nbsp;tracerWidget-&gt;SetViewProp(actor);<br>
          &nbsp;tracerWidget-&gt;AutoCloseOn();<br>
          &nbsp;tracerWidget-&gt;AddObserver(vtkCommand::EndInteractionEvent,
          itwCallback);<br>
          &nbsp;tracerWidget-&gt;On();<br>
          &nbsp;renderWindow-&gt;Render();<br>
          <br>
          &nbsp;renderWindowInteractor-&gt;Initialize();<br>
          &nbsp;renderWindow-&gt;Render();<br>
          <br>
          <br>
          <br>
          <br>
          &nbsp;// Begin mouse interaction<br>
          <br>
          &nbsp;renderWindowInteractor-&gt;Start();<br>
          <br>
          &nbsp;return EXIT_SUCCESS;<br>
          }<br>
          <font color="#888888"><br>
            <br>
            --<br>
            View this message in context: <a moz-do-not-send="true"
href="http://vtk.1045678.n5.nabble.com/Weird-vtkClipPolyData-error-when-using-an-obj-tp4408314p4410434.html"
              target="_blank">http://vtk.1045678.n5.nabble.com/Weird-vtkClipPolyData-error-when-using-an-obj-tp4408314p4410434.html</a><br>
          </font>
          <div>
            <div class="h5">Sent from the VTK - Users mailing list
              archive at Nabble.com.<br>
              _______________________________________________<br>
              Powered by <a moz-do-not-send="true"
                href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
              <br>
              Visit other Kitware open-source projects at <a
                moz-do-not-send="true"
                href="http://www.kitware.com/opensource/opensource.html"
                target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
              <br>
              Please keep messages on-topic and check the VTK FAQ at: <a
                moz-do-not-send="true"
                href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
              <br>
              Follow this link to subscribe/unsubscribe:<br>
              <a moz-do-not-send="true"
                href="http://www.vtk.org/mailman/listinfo/vtkusers"
                target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
            </div>
          </div>
        </blockquote>
      </div>
      <br>
    </blockquote>
    <br>
  </body>
</html>