[vtkusers] vtkImagePlaneWidget + SetTextureVisibility()

dean.inglis at camris.ca dean.inglis at camris.ca
Fri Apr 13 07:12:14 EDT 2007


Mark,

what happens if you do this ?:

pImageData = pPlaneWidget->GetResliceOutput();
pImageData->Update();

or if you need the texture:

pTexture = pPlaneWidget->GetTexture();
pTexture->Update();



Dean

> Subject: Re: [vtkusers] vtkImagePlaneWidget + SetTextureVisibility()
> 
> Hi Dean,
> 
> I think I'm already doing what you described.I have an observer like:
> 
>     m_vPlane->AddObserver(vtkCommand::InteractionEvent, m_vPlaneCallback);
> 
> and it does get called when I started dragging the plane with the
> mouse. All that happens afterwards is that I call:
> 
>     pImageData = pPlaneWidget->GetResliceOutput();
> 
> It is getting called everytime I interact.
> 
> I don't understand how if I initially turn the Texture visibility off
> - then I get correct output like 80% of the time (the other 20% the
> resulting extent comes back as (0,0,0). If I switch it on (visible)
> just one time - it seems I always get correct output. I'm only
> switching it on once, not toggling it on/off everytime I need resliced
> output. It seems like maybe turning it on just once sets up some
> pipeline internally maybe?
> 
> I'm confused! I don't know the internals of the class. Thanks for any
> more information you may have, it is an extremely useful class,
> 
> Thanks,
> Mark
> 
> 
> On 4/12/07, dean.inglis at camris.ca <dean.inglis at camris.ca> wrote:
> > Mark,
> >
> > there are numerous ways to get at the resliced output:
> >  // Description:
> >  // Convenience method to get the vtkImageReslice output.
> >  vtkImageData* GetResliceOutput();
> >
> > which in vtkIPW is passed to vtkImageMapToColors
> > whose output is passed to vtkTexture.  vtkIPW
> > can give you the vtkImageMapToColors and/or the vtkTexture too.
> > If you write a callback and add it to the widgets
> > InteractionEvent wherein the texture can be requested to
> > Update(), then you can avoid switching texture on and
> > off:
> > e.g., widget->AddObserver(vtkCommand::InteractionEvent, myCallback).
> > If you are using a GUI element to move the widget,
> > you can still force the update by:
> > widget->InvokeEvent(vtkCommand::InteractionEvent).
> >
> > Normally, when the actor that combines the vtkPlaneSource
> > and the vtkTexture is visible, the rendering pipeline mechanism
> > takes care of updating the texture (and preceding filters) for you.
> > When texture visibility is off, there is no visible actor
> > (maybe just the outline) and so the widget's internal
> > pipeline is not being updated.
> >
> > Dean
> > _______________________________________________
> > This is the private VTK discussion list.
> > Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> >
> 



More information about the vtkusers mailing list