[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