[vtkusers] Problem in using vtkOrientationMarkerWidget

Dean Inglis dean.inglis at sympatico.ca
Mon Aug 13 05:47:40 EDT 2007


Hi Jean-Do,

have you tried running ParaView ?  It has
a corner axes widget very similar to vtkOMW (since vtkOMW
was based on the ParaView version) and I am
wondering if this is a hardware problem rather
than software.

Dean


Hi Dean,
yes I see it works in your case, and your output is excatly what I was
expecting.
See the attached jpg file to see what I get.
I checked with vtk5.0.3 but compiled with VC++8.0, and I still get the
uncorrect
output.
Dont' really know what more to do, as it's unlikely that the error comes
from
vtk5.0.3 vs. vtkcvs
Jean-Do


Selon Dean Inglis <dean.inglis at sympatico.ca>:

> Hi Jean-Do,
>
> I dont get any strange behavior when I compile
> and run your code when using Borland Dveloper Studio 2006,
> latest VTK cvs, Release build on WinXP.  See attached
> jpg.
>
> Dean
>
> Hi Dean,
>
> thank for your help.
> But a strange thing is that even when I apply your correction, I still get
> the
> same result. There must be another error I guess.
> Any other idea?
>
> A question : do you obtain the same result as me if you try the test I
> joined at
> the end of the first mail?
> Forgot to mention, but I'm using vtk5.0.3 on WinXP compiled with VC7.1
>
> Jean-Do
>
> //
> // Test for use of vtkOrientationMarkerWidget
> //
> #include "vtkCylinderSource.h"
> #include "vtkPolyDataMapper.h"
> #include "vtkActor.h"
> #include "vtkRenderer.h"
> #include "vtkRenderWindow.h"
> #include "vtkRenderWindowInteractor.h"
> #include "vtkProperty.h"
> #include "vtkCamera.h"
> #include "vtkOrientationMarkerWidget.h"
> #include "vtkAnnotatedCubeActor.h"
> #include "vtkAxesActor.h"
> #include "vtkAssembly.h"
>
> int main()
> {
>   // This creates a polygonal cylinder model with eight circumferential
> facets.
>   vtkCylinderSource *cylinder = vtkCylinderSource::New();
>   cylinder->SetResolution(8);
>
>   // The mapper is responsible for pushing the geometry into the graphics
>   // library. It may also do color mapping, if scalars or other attributes
>   // are defined.
>   vtkPolyDataMapper *cylinderMapper = vtkPolyDataMapper::New();
>   cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
>
>   // The actor is a grouping mechanism: besides the geometry (mapper), it
>   // also has a property, transformation matrix, and/or texture map.
>   // Here we set its color and rotate it -22.5 degrees.
>   vtkActor *cylinderActor = vtkActor::New();
>   cylinderActor->SetMapper(cylinderMapper);
>   cylinderActor->GetProperty()->SetColor(1.0000, 0.3882, 0.2784);
>   cylinderActor->RotateX(30.0);
>   cylinderActor->RotateY(-45.0);
>
>   // Create the graphics structure. The renderer renders into the
>   // render window. The render window interactor captures mouse events
>   // and will perform appropriate camera or actor manipulation
>   // depending on the nature of the events.
>   vtkRenderer *ren = vtkRenderer::New();
>   vtkRenderWindow *renWin = vtkRenderWindow::New();
>
>   renWin->AddRenderer(ren);
>
>   vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
>   iren->SetRenderWindow(renWin);
>
>   // Add the actors to the renderer, set the background and size
>   ren->AddActor(cylinderActor);
>   ren->SetBackground(0.1, 0.2, 0.4);
>   renWin->SetSize(400, 400);
>
> //////////////////////////////////////////
> // Begin of add vtkOrientationMarkerWidget
> //////////////////////////////////////////
>   // Add a vtkOrientationMarkerWidget
>   vtkOrientationMarkerWidget* widget  = vtkOrientationMarkerWidget::New();
>   vtkAnnotatedCubeActor* act1 = vtkAnnotatedCubeActor::New();
>   act1->SetFaceTextScale(0.5);
>   vtkAxesActor* act2 = vtkAxesActor::New();
>   vtkAssembly* assemble = vtkAssembly::New();
>   assemble->AddPart(act1);
>   assemble->AddPart(act2);
>   widget->SetOrientationMarker(assemble);
>   //widget->SetCurrentRenderer(ren);
>   widget->SetInteractor(iren);
>   widget->SetEnabled(1);
>   widget->SetInteractive(0);
>   widget->SetViewport(0., 0., 0.4, 0.4);
> //////////////////////////////////////////
> // End of add vtkOrientationMarkerWidget
> //////////////////////////////////////////
>
>
>   // We'll zoom in a little by accessing the camera and invoking a "Zoom"
>   // method on it.
>   ren->ResetCamera();
>   ren->GetActiveCamera()->Zoom(1.5);
>   renWin->Render();
>
>   // This starts the event loop and as a side effect causes an initial
> render.
>   iren->Start();
>
>   // Exiting from here, we have to delete all the instances that
>   // have been created.
>   assemble->Delete();
>   act2->Delete();
>   act1->Delete();
>   widget->Delete();
>   cylinder->Delete();
>   cylinderMapper->Delete();
>   cylinderActor->Delete();
>   ren->Delete();
>   renWin->Delete();
>   iren->Delete();
>
>   return 0;
> }
>






More information about the vtkusers mailing list