[vtkusers] Invoke "Interactor"-Event to vtkSphereWidget

Rocco Gasteiger post at rocco-gasteiger.de
Sat Jun 12 05:44:29 EDT 2010

Dear vtk-users,


I want to use a vtkSphereWidget in my scene to orient a geometry. Currently,
I have to press the key "i" to enable this widget (i.e. make the handle
visible). However, I want to enable this widget once the widget geometry is
shown in my render window. For this purpose I add an observer to my renderer
with the parameters "vtkCommand::StartEvent" and a derived class of
vtkCommand as callback-command. Additionally, I set a pointer to the
vtkSphereWidget in my derived callback-command. When the event is processed
(and I proved that this event is throwing!), I call  "SetEnabled(1)" in my
derived callback-command. However, the handle is not visible. I need to
press the "i"-key to make it visible. I also tried to add observers to the
interactor but the problem is still the same.


Can anybody give me a hint what I'm doing wrong?


Thanks in advance, Rocco



P.S. Here is a code snippet of what I'm doing currently:


// The main-class:


vtkSmartPointer<vtkSphereWidget> sphereWidget =

sphereWidget ->SetInteractor(windowInteractor);

sphereWidget ->SetCurrentRenderer(renderer);

sphereWidget ->SetEnabled(1);

sphereWidget ->SetHandleSize(0.03);

sphereWidget ->SetPhiResolution(20);

sphereWidget ->SetThetaResolution(20);

sphereWidget ->GetSphereProperty()->BackfaceCullingOn();

sphereWidget ->SetHandleVisibility(1);



vtkSmartPointer<vtkMyWidgetCallback> widgetCallback =


renderer->AddObserver(vtkCommand::StartEvent, widgetCallback);


// The derived vtkCommand class

class vtkMyWidgetCallback : public vtkCommand



                static vtkMyWidgetCallback *New()


                               return new vtkMyWidgetCallback;



                virtual void Execute(vtkObject *caller, unsigned long,



sphereWidget ->SetEnabled(1);

                               sphereWidget ->SetHandleVisibility(1);

                               cout << "Widget on!" << endl;


                void SetWidget(vtkSphereWidget* widget);


                vtkSphereWidget* sphereWidget;



inline void vtkMyWidgetCallback::SetWidget(vtkSphereWidget* widget)


                sphereWidget = widget;





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100612/ddc23206/attachment.htm>

More information about the vtkusers mailing list