[vtkusers] Legacy interactor code

Bill Lorensen bill.lorensen at gmail.com
Wed Aug 26 13:58:02 EDT 2009


You will need to use Command/Observers.

There is a test that uses vtkCommand::TimerEvent that may be helpful:

VTK/Rendering/Testing/Cxx/TestInteractorTimers.cxx

Bill

On Mon, Aug 24, 2009 at 3:12 PM, Kernel Blaha<kernelblaha at gmail.com> wrote:
> Hi,
>
> I'm a relative new user of VTK and I've inherited some code which works fine
> with VTK 4.2.
> I've now upgraded to 5.4 and have gotten stuck.
>
> On compiling (in MS Visual Studio 2008) I get the following error:
>
> 'SetTimerMethod' : is not a member of 'vtkInteractorStyleUser'
>
> The offending bit of code is the following:
>
> DWORD WINAPI OnRunning(LPVOID){
>        int i;
>        // interact with data
>        renderer = vtkRenderer::New();          // create renderer
>        renderer->SetBackground(1,1,1); // set background to white
>        renWin = vtkRenderWindow::New();                // create window
>        renWin->AddRenderer(renderer);                          // attach
> renderer to window
>        renWin->SetSize(700,700);                                       //
> set size of window
>        iren = vtkRenderWindowInteractor::New();        // create interactor
>  (for mouse interaction)
>        iren->SetRenderWindow(renWin);                  // attach interactor
> to main window
>        vtkInteractorStyleUser  *myint= vtkInteractorStyleUser::New();  // my
> settings for interaction
>        myint->SetInteractor(iren);                             // attach my
> interactor settings to windows interactor
>        myint->SetTimerMethod(&animation,NULL); //      set timer method to
> use animation function
>
>
>        axes = vtkAxes::New(); // add axes
>        axes->SetScaleFactor(1.0);      // scale factor of axes
>        vtkPolyDataMapper *axesMapper = vtkPolyDataMapper::New(); // create
> axes DataMapper (points to be drawn)
>        axesMapper->SetInput(axes->GetOutput());        //give the data
> mapper some date (about the axes)
>        vtkActor *axesActor = vtkActor::New();          //axes actor, the
> actual thing to pass to the renderer
>        axesActor->SetMapper(axesMapper);                       // pass the
> mapper to the actor
>
>        camera = vtkCamera::New();
>        camera->SetPosition(0.55,-1.75,-0.5);
>        camera->SetFocalPoint(0.55,0,0.5);
>        camera->Roll(180);
>
>        renderer->SetActiveCamera(camera);
>        renderer->ResetCamera();
> //      renderer->AddActor(axesActor ); // actually send axes Actor to the
> renderer.
>        for(i=0;i<=vtknet_nnodes;i++)
>                renderer->AddActor(nodesActor[i]); // actually send the
> points to the renderer
>
>        renWin->Render();                               // Render in Window
>
>        myint->StartAnimate();                  //Start animation using
> interactor and renderer
>        iren->Start();
>        return 0;
> }
>
>
> The above calls the animation function below, which uses mutex to stop
> multiple access of cylx, cyly, cylz in another thread.
>
>
> void animation(void *)
> {
>        int i;
>        int scale=60;
>        char str[20];
>
>        WaitForSingleObject(m_mutex, INFINITE);
>
>        for(i=0;i<vtknet_ncyls;i++)
>        {
>
>                nodesActor[trans2i[i]]->SetScale(1,cyly[i]*(float)scale,1);
>
>  nodesActor[trans2i[i]]->SetPosition(cylx[i],-cyly[i]/((float)2000/scale),cylz[i]);
> //cyly[i]*(float)scale/2
>
>  nodesActor[trans2i[i]]->GetProperty()->SetColor(cylcolour[i]);
>
>        }
>
>        vtknet_ncyls_old=vtknet_ncyls;
>
>        ReleaseMutex(m_mutex);
>        Sleep(1);
>
> }
>
>
> I've had a look through (some of) the online resources and found that this
> is an obsolete way of doing things.
>
> Would anyone be kind enough to point me in the right direction as to how it
> should be done now?
> Any help would be greatly appreciated!!
> Thanks in advance
> Leon
>
>
> --
> Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
> _______________________________________________
> 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
>



More information about the vtkusers mailing list