[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