[vtkusers] wxPlaneWidget on OSX

ABE Hiroshi habe36 at gmail.com
Wed Apr 6 03:57:04 EDT 2016


Dear All,

I modified the VTK wiki’s sample as is bottom of this mail to show the status of vtkPlaneWidget.
The output of “Print” method in the constructor is;

vtkPlaneWidget (0x7fea78d1e1d0)
  Debug: Off
  Modified Time: 2705
  Reference Count: 1
  Registered Events: (none)
  Current Renderer: 0x0
  Default Renderer: 0x0
  Enabled: 0
  Priority: 0.5
  Interactor: 0x0
  Key Press Activation: On
  Key Press Activation Value: i
  Prop3D: 0x0
  Input: 0x0
  Handle Size: 0.05
  Place Factor: 0.5
  Handle Property: 0x7fea78d4a2c0
  Selected Handle Property: 0x7fea78d4a470
  Plane Property: 0x7fea78d4a620
  Selected Plane Property: 0x7fea78d4a7d0
  Plane Representation: Wireframe
  Normal To X Axis: Off
  Normal To Y Axis: Off
  Normal To Z Axis: Off
  Resolution: 4
  Origin: (-0.5, -0.5, 0)
  Point 1: (0.5, -0.5, 0)
  Point 2: (-0.5, 0.5, 0)

and in the destructor;

vtkPlaneWidget (0x7fea78d1e1d0)
  Debug: Off
  Modified Time: 2806
  Reference Count: 0
  Registered Events: (none)
  Current Renderer: 0x7fea78f00160
  Default Renderer: 0x0
  Enabled: 1
  Priority: 0.5
  Interactor: 0x7fea78f00b40
  Key Press Activation: On
  Key Press Activation Value: i
  Prop3D: 0x0
  Input: 0x0
  Handle Size: 0.05
  Place Factor: 0.5
  Handle Property: 0x7fea78d4a2c0
  Selected Handle Property: 0x7fea78d4a470
  Plane Property: 0x7fea78d4a620
  Selected Plane Property: 0x7fea78d4a7d0
  Plane Representation: Wireframe
  Normal To X Axis: Off
  Normal To Y Axis: Off
  Normal To Z Axis: Off
  Resolution: 4
  Origin: (-0.562965, -0.555969, 0)
  Point 1: (nan, nan, nan)
  Point 2: (nan, nan, nan)

The Point 1 and 2 are changed to “nan”. The value (X,Y) in OnMouseMove is not strange as;
 ( 182, 172 ) 
 ( 180, 170 ) 
 ( 180, 169 ) 
 ( 177, 169 ) 
 ( 177, 167 ) 
 ( 175, 167 ) 
 ( 174, 166 ) 
 ( 174, 165 ) 
 ( 173, 165 ) 
 ( 218, 212 ) 
 ( 219, 213 ) 
 ( 221, 215 ) 
 ( 222, 217 ) 
 ( 224, 218 ) 
 ( 225, 221 ) 
 ( 226, 222 ) 
 ( 227, 224 ) 
 ( 229, 225 ) 
 ( 230, 225 ) 
 ( 232, 227 ) 
 ( 235, 229 ) 
 ( 237, 231 ) 
 ( 241, 234 ) 
 ( 244, 235 ) 
 ( 246, 236 ) 
 ( 247, 238 ) 
 ( 249, 238 ) 
 ( 250, 238 ) 
 ( 250, 239 ) 
 ( 252, 239 ) 
 ( 253, 241 ) 
 ( 253, 241 ) 
 ( 255, 241 ) 
 ( 255, 242 ) 
 ( 255, 244 ) 
 ( 256, 244 ) 
 ( 256, 244 ) 
 ( 258, 244 ) 

This is the result of my investigation on this.

Still I am looking for any suggestions on this.
Thank you.

2016/04/05 11:28、ABE Hiroshi <habe36 at gmail.com> のメール:

> Dear all,
> 
> This might be a known issue but I could find any description about it on the net so I ask you about vtkPlaneWidget.
> That is a weired behavior that the handles of vtkPlaneWidget is gone when you drag one of the handles.
> 
> The sample program I used is available at:
> http://www.vtk.org/Wiki/VTK/Examples/Cxx/Widgets/PlaneWidget
> 
> Building it straightforwardly and get an executable program. The application launches as usual to display a VTK window.
> You can find a vtkPlaneWidget’s plane in the window, which has four handles. If you drag one of the handles suddenly the handle disappears. This is always happens on OSX (10.9.5, 10.10.5). The env. are:
> 
> OS X 10.9.5 (iMac late 2013 21.5”) VTK 5.10.1 (with Apple Wireless Trackpad)
> OS X 10.10.5 (MBP Letina 13”) VTK 5.10.1 VTK 6.3.0
> 
> As an additional info. Run the same program on OpenSUSE 13 (VTK 5.10) on the Linux box itself, it works fine as expected. But if you display on iMac with XQuartz (2.7.8), the same problem happens.
> 
> Anybody out there point me the way workaround or any suggestions to solve this.
> 
> Thank you very much in advance.

ABE Hiroshi
 from Tokorozawa, JAPAN

#include <iostream>

#include <vtkPlaneWidget.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSmartPointer.h>
#include <vtkObjectFactory.h>

class myPlaneWidget : public vtkPlaneWidget {
public:
    static myPlaneWidget *New();
    myPlaneWidget() : vtkPlaneWidget() {
        this->Print( std::cout );
    }
    virtual ~myPlaneWidget() {
        this->Print( std::cout );
    }
    virtual void UpdatePlacement() {
        this->Print( std::cout );
        vtkPlaneWidget::UpdatePlacement();
    }
    virtual void PositionHandles() {
        this->Print( std::cout );
        vtkPlaneWidget::PositionHandles();
    }
};
vtkStandardNewMacro(myPlaneWidget);

int main(int, char *[])
{
    vtkSmartPointer<vtkRenderer> renderer =
    vtkSmartPointer<vtkRenderer>::New();
    
    vtkSmartPointer<vtkRenderWindow> renderWindow =
    vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);
    
    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
    vtkSmartPointer<vtkRenderWindowInteractor>::New();
    renderWindowInteractor->SetRenderWindow(renderWindow);
    
    vtkSmartPointer<myPlaneWidget> planeWidget =
    vtkSmartPointer<myPlaneWidget>::New();
    planeWidget->SetInteractor(renderWindowInteractor);
    
    planeWidget->On();
    
    renderWindowInteractor->Initialize();
    
    renderer->ResetCamera();
    renderWindow->Render();
    
    renderWindowInteractor->Start();
    
    return EXIT_SUCCESS;
}



More information about the vtkusers mailing list