[vtkusers] Altering a rendered actor

Kerry Loux louxkr at gmail.com
Wed May 21 08:47:38 EDT 2008


Thanks for your response, Lu.

Yes, that's what I'm doing, but my problem is only with re-rendering the
image.  After updating the actor's position and orientation, the image
doesn't update until I click on the screen to rotate or zoom, etc.  It seems
as though I'm missing the "update the screen" call.  I have since found that
if I call the Render() method of the renderWindowInteractor (actually a
wxVTKRenderWindowInteractor) the actor disappears from the original
position, but it still isn't redrawn until I click on the window.  The only
way I've found that updates the screen without clicking on it is to invoke a
clicking event with the InvokeEvent() method.  This is undesirable because
then my screen rotates until I click on it.  I've tried the following to get
the screen to update:

pConeActor->SetPosition(5.0,5.0,0.0);// Set new position - for this sample,
original position was [0.0, 0.0, 0.0]
m_pVTKWindow->Render();

This removes the actor from the original position, but doesn't draw it in
it's new position until I click on the screen, as stated above.


pConeActor->SetPosition(5.0,5.0,0.0);
m_pVTKWindow->Render();
m_pVTKWindow->InvokeEvent(vtkCommand::ModifiedEvent, NULL);

The addition of the InvokeEvent call here makes no difference.


pConeActor->SetPosition(5.0,5.0,0.0);
m_pVTKWindow->Render();
m_pVTKWindow->Update();// I've tried this with Update first, then Render as
well

The Update() call here makes no difference.


pConeActor->SetPosition(5.0,5.0,0.0);
m_pVTKWindow->Render();
m_pVTKWindow->InvokeEvent(vtkCommand::LeftButtonPressEvent, NULL);

This does make the image redraw, but it also makes it spin (as though you
were pressing the left mouse button...).  That makes the obvious next step:

pConeActor->SetPosition(5.0,5.0,0.0);
m_pVTKWindow->Render();
m_pVTKWindow->InvokeEvent(vtkCommand::LeftButtonPressEvent, NULL);
m_pVTKWindow->InvokeEvent(vtkCommand::LeftButtonReleaseEvent, NULL);

But this doesn't do anything different than the first few attempts.  I've
been looking at the code that handles the LeftButtonPressEvent
(vtkSubjectHelper::InvokeEvent in vtkObject.cxx) to try and figure out what
part of that function makes the screen update, but so far I haven't been
successful.  Any help or advice is still appreciated!

Thanks,

Kerry


On Tue, May 20, 2008 at 8:14 PM, Yick Lu <jati.lue at gmail.com> wrote:

> Maybe you can try "events"
>
> The event handler function should be like this:
>
> Typing Event Handler( eventArgs )
> {
> //check character at the beginning
>
> pActor->Setpostion();//define new position
> pRenderer->Render();
>
> }
>
> The event is invoked as user type anything in the textbox. But make sure
> the inputed character is checked and valid.
>
>
> --
> Lu Yi
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20080521/896d03ae/attachment.htm>


More information about the vtkusers mailing list