[vtkusers] Question about contour widget

Jonathan Morra jonmorra at gmail.com
Tue Oct 12 11:34:54 EDT 2010


Thanks for your help, I replaced the placer as you suggested, and now my
code looks like the following

vtkBoundedPlanePointPlacer placer = new vtkBoundedPlanePointPlacer();
        placer.SetProjectionNormalToZAxis();

 placer.SetProjectionPosition(panel.getImageViewer().GetImageActor().GetCenter()[2]);
        rep.SetPointPlacer(placer);

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't make a difference.

On Tue, Oct 12, 2010 at 2:33 AM, Karthik Krishnan <
karthik.krishnan at kitware.com> wrote:

> On Tue, Oct 12, 2010 at 10:33 AM, Jonathan Morra <jonmorra at gmail.com>wrote:
>
>> I have a vtkImageViewer2 and wish to use vtkContourWidget to draw a
>> contour on the image.  The data I'm loading is a 3D DICOM CT volume.  I have
>> found the following question
>> http://vtk.1045678.n5.nabble.com/vtkContourWidget-with-vtkImageViewer2-td1236295.html and
>> created the following code as a result (in Java)
>>
>>         vtkContourWidget contourWidget = new vtkContourWidget();
>>         contourWidget.SetInteractor(panel.getRenWin().getIren());
>>         contourWidget.FollowCursorOn();
>>
>>         vtkOrientedGlyphContourRepresentation rep = new
>> vtkOrientedGlyphContourRepresentation();
>>         contourWidget.SetRepresentation(rep);
>>
>>         vtkImageActorPointPlacer placer = new vtkImageActorPointPlacer();
>>         placer.SetImageActor(panel.getImageViewer().GetImageActor());
>>         rep.SetPointPlacer(placer);
>>
>
> 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.
>
> 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't change when you change the slice.
>
> 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.
>
> --
> karthik
>
>         contourWidget.EnabledOn();
>>         contourWidget.ProcessEventsOn();
>>
>> When I do this and draw a contour and then scroll through the image planes
>> the same contour appears on every plane.  Ideally I'd like a different
>> contour on every plane.  If I don't use the vtkImageActorPointPlacer then
>> the contour only appears on one plane but it's the same plane regardless of
>> which plane is being viewed, which is also wrong.
>>
>> Any suggestions about how to do this correctly would be greatly
>> appreciated.
>>
>> Thanks
>>
>> _______________________________________________
>> 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/20101012/50438f94/attachment.htm>


More information about the vtkusers mailing list