I have followed your suggestion and tried the following code<div><div>// The contour rep requires a suitable point placer</div><div>        double[] bounds = panel.getImageViewer().GetImageActor().GetBounds();</div><div>        vtkBoundedPlanePointPlacer placer = new vtkBoundedPlanePointPlacer();</div>
<div>        placer.SetProjectionNormalToZAxis();</div><div>        placer.SetProjectionPosition(bounds[4]);</div><div><br></div><div>        placer.RemoveAllBoundingPlanes();</div><div>        vtkPlane plane1 = new vtkPlane();</div>
<div>        plane1.SetOrigin(bounds[0], bounds[2], bounds[4]);</div><div>        plane1.SetNormal(0.0, 0.0, 1.0);</div><div>        placer.AddBoundingPlane(plane1);</div><div><br></div><div>        vtkPlane plane2 = new vtkPlane();</div>
<div>        plane2.SetOrigin(bounds[1], bounds[3], bounds[5]);</div><div>        plane2.SetNormal(0.0, 0.0, -1.0);</div><div>        placer.AddBoundingPlane(plane2);</div><div>  </div><div>        rep.SetPointPlacer(placer);</div>
<div>        contourWidget.SetRepresentation(rep);</div><div><br></div><div>When I do this I cannot see any contours.  I have tried it with both with and without the line</div><div>        placer.SetProjectionPosition(bounds[4]);</div>
<div>and I didn&#39;t notice any change.  Is there something else that I am missing?  I also tried setting the vtkOrientedGlyphContourRepresentation to AlwaysOnTopOn(), but that didn&#39;t make a difference.  But if I comment out from</div>
<div>        placer.RemoveAllBoundingPlanes();</div><div>to the end of the snippet, I&#39;m back where I was before which is having the contour show up on two planes.</div><div><br></div><div>Thanks for all your help, and I&#39;m eagerly awaiting your response as this is the last bug in version 1.0 of my software.</div>
<div><br><div class="gmail_quote">On Wed, Oct 13, 2010 at 12:44 AM, Karthik Krishnan <span dir="ltr">&lt;<a href="mailto:karthik.krishnan@kitware.com">karthik.krishnan@kitware.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
You need to add the bounding planes to confine it to a single plane. Something like :<br><br>  placer.RemoveAllBoundingPlanes();<br>  placer.SetProjectionNormalToZAxis();<br><br>  imageActor.GetBounds(bounds);<br>  plane = new vtkPLane()<br>

  plane-&gt;SetOrigin( bounds[0], bounds[2], bounds[4] );<br>  plane-&gt;SetNormal( 0.0, 0.0, 1.0 );<br>  this-&gt;Placer-&gt;AddBoundingPlane( plane );<br>      <br>  plane2 = vtkPlane::New();<br>  plane2-&gt;SetOrigin( bounds[1], bounds[3], bounds[5] );<br>

  plane2-&gt;SetNormal( 0.0, 0.0, -1.0 );<br>  placer.AddBoundingPlane( plane2 );  <br><div><div></div><div class="h5"><br><div class="gmail_quote">On Tue, Oct 12, 2010 at 9:04 PM, Jonathan Morra <span dir="ltr">&lt;<a href="mailto:jonmorra@gmail.com" target="_blank">jonmorra@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">Thanks for your help, I replaced the placer as you suggested, and now my code looks like the following<div>

<br></div><div><div>vtkBoundedPlanePointPlacer placer = new vtkBoundedPlanePointPlacer();</div><div>        placer.SetProjectionNormalToZAxis();</div>
<div>        placer.SetProjectionPosition(panel.getImageViewer().GetImageActor().GetCenter()[2]);</div><div>        rep.SetPointPlacer(placer);</div><div><br></div><div>This is almost right.  The contour now appears on the plane that I drew it on and the plane above it and that is it.  I just want the contour on the plane I drew it on.  I tried playing around with placer.SetPixelTolerance() but that didn&#39;t make a difference.</div>

<div><div></div><div>
<br><div class="gmail_quote">On Tue, Oct 12, 2010 at 2:33 AM, Karthik Krishnan <span dir="ltr">&lt;<a href="mailto:karthik.krishnan@kitware.com" target="_blank">karthik.krishnan@kitware.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">


<div class="gmail_quote"><div>On Tue, Oct 12, 2010 at 10:33 AM, Jonathan Morra <span dir="ltr">&lt;<a href="mailto:jonmorra@gmail.com" target="_blank">jonmorra@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">



I have a vtkImageViewer2 and wish to use vtkContourWidget to draw a contour on the image.  The data I&#39;m loading is a 3D DICOM CT volume.  I have found the following question <a href="http://vtk.1045678.n5.nabble.com/vtkContourWidget-with-vtkImageViewer2-td1236295.html" target="_blank">http://vtk.1045678.n5.nabble.com/vtkContourWidget-with-vtkImageViewer2-td1236295.html</a> and created the following code as a result (in Java)<div>




<br><div><div>        vtkContourWidget contourWidget = new vtkContourWidget();</div><div>        contourWidget.SetInteractor(panel.getRenWin().getIren());</div><div>        contourWidget.FollowCursorOn();</div><div><br></div>




<div>        vtkOrientedGlyphContourRepresentation rep = new vtkOrientedGlyphContourRepresentation();</div><div>        contourWidget.SetRepresentation(rep);</div><div><br></div><div>        vtkImageActorPointPlacer placer = new vtkImageActorPointPlacer();</div>




<div>        placer.SetImageActor(panel.getImageViewer().GetImageActor());</div><div>        rep.SetPointPlacer(placer);</div></div></div></blockquote></div><div><br>What this point placer does is to constrain the contour to the plane defined by the ImageActor. However, given that the same image actor is used for multiple slices, when you change the slice, the position of the image actor effectively changes and the contour updates itself to lie on the new plane. <br>



<br>What you need is to use a vtkBoundedPlanePointPlacer with the bounding planes de-lienating the bounds of the image actor when the contour is defined. That way it won&#39;t change when you change the slice.<br><br>Also to manage visibility of the contour (the contour will be visible for all slices in front of the defined slice), you could subclass the contour representation, insert a clipper that clips the polydata based on the bounding planes, that way, visibility is implicitly managed by the representation.<br>



<br>--<br>karthik<br><br></div><blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex"><div><div><div><div>        contourWidget.EnabledOn();</div>

<div>        contourWidget.ProcessEventsOn();</div>

</div></div><div><br></div><div>When I do this and draw a contour and then scroll through the image planes the same contour appears on every plane.  Ideally I&#39;d like a different contour on every plane.  If I don&#39;t use the vtkImageActorPointPlacer then the contour only appears on one plane but it&#39;s the same plane regardless of which plane is being viewed, which is also wrong.</div>




<div><br></div><div>Any suggestions about how to do this correctly would be greatly appreciated.</div><div><br></div><div>Thanks</div>
<br></div>_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a 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 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 href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
<br></blockquote></div><br>
</blockquote></div><br></div></div></div>
</blockquote></div><br>
</div></div></blockquote></div><br></div></div>