vtkPropPicker is unable to pick vtkActor2D when display location is set to backgorund

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

vtkPropPicker is unable to pick vtkActor2D when display location is set to backgorund

Tharun
Hi all,

vtkPropPicker is unable to pick vtkActor2D when the actor display location
is set to background.

In VTK 5.8, it was working. I am using VTK 7.1.1 now. Is this a bug or a
deliberate upgrade?

Sample code. Press middle button for screenshot and left button to check
issue.

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType);
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkPolyDataMapper.h>
#include <vtkSmartPointer.h>
#include <vtkPointPicker.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkObjectFactory.h>
#include <vtkRendererCollection.h>
#include <vtkPropPicker.h>
#include <vtkImageMapper.h>
#include <vtkActor2D.h>
#include <vtkWindowToImageFilter.h>
#include <vtkInteractorStyleImage.h>
#include <vtkProperty2D.h>

vtkSmartPointer<vtkPropPicker> propPicker =
vtkSmartPointer<vtkPropPicker>::New();
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor
=vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow
=vtkSmartPointer<vtkRenderWindow>::New();

class customMouseInteractorStyle : public vtkInteractorStyleTrackballCamera
{
public:
        static customMouseInteractorStyle* New();
        vtkTypeMacro(customMouseInteractorStyle,
vtkInteractorStyleTrackballCamera);

        virtual void OnLeftButtonDown()
        {
                int X = renderWindowInteractor->GetEventPosition()[0];
                int Y = renderWindowInteractor->GetEventPosition()[1];
                vtkRenderer* renderer =
renderWindowInteractor->GetRenderWindow()->GetRenderers()->GetFirstRenderer();
                // Forward events
                int picked = propPicker->PickProp(X, Y, renderer);
                vtkInteractorStyleTrackballCamera::OnLeftButtonDown();
        }

        virtual void OnMiddleButtonDown()
        {
                vtkSmartPointer<vtkWindowToImageFilter> windowToImageFilter =
vtkSmartPointer<vtkWindowToImageFilter>::New();
                windowToImageFilter->SetInput(renderWindow);
                windowToImageFilter->SetMagnification(1);
                windowToImageFilter->SetInputBufferTypeToRGBA();
                windowToImageFilter->ReadFrontBufferOff(); // read from the back buffer
                windowToImageFilter->Update();
       
                vtkSmartPointer<vtkImageMapper> imageMapper =
vtkSmartPointer<vtkImageMapper>::New();
                imageMapper->SetInputConnection(windowToImageFilter->GetOutputPort());
                imageMapper->SetColorWindow(255);
                imageMapper->SetColorLevel(127.5);

                vtkSmartPointer<vtkActor2D> actor = vtkSmartPointer<vtkActor2D>::New();
                actor->SetMapper(imageMapper);
                actor->SetPosition(0, 0);
                actor->GetProperty()->SetDisplayLocationToBackground(); // does not work
when this is used
                vtkRenderer* renderer =
renderWindowInteractor->GetRenderWindow()->GetRenderers()->GetFirstRenderer();
                renderer->AddActor(actor);

                propPicker->PickFromListOn();
                propPicker->AddPickList(actor);


                vtkInteractorStyleTrackballCamera::OnMiddleButtonDown();
        }

};

vtkStandardNewMacro(customMouseInteractorStyle);

int main(int argc, char* argv[])
{
        vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
        renderer->SetBackground(1, 1, 1); // Background color white
        renderWindow->AddRenderer(renderer);
        renderWindowInteractor->SetRenderWindow(renderWindow);
       
        vtkSmartPointer<customMouseInteractorStyle> style =
vtkSmartPointer<customMouseInteractorStyle>::New();
        renderWindowInteractor->SetInteractorStyle(style);

        renderWindowInteractor->Initialize();
        renderWindowInteractor->Start();

        return EXIT_SUCCESS;
}



--
Sent from: http://vtk.1045678.n5.nabble.com/VTK-Dev-f1251487.html
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers