[vtkusers] Rotation of PolyData
Lonni Besançon
lonni.besancon at gmail.com
Mon Jun 15 09:00:32 EDT 2015
Hello everyone, I've been going through the examples in the wiki for quite a
while now but for some reason I can't make the rotation/translation/scaling
of a poly dataset to work.
I would like to get some help from you as I'm completely lost on the reason
why it doesn't work.
So far my code is the following:
void Drawing::scale(float k){
vtkSmartPointer<vtkTransform> transform
=vtkSmartPointer<vtkTransform>::New();
transform->Scale(5,1,1);
vtkSmartPointer<vtkTransformFilter> transformFilter =
vtkSmartPointer<vtkTransformFilter>::New();
transformFilter->SetInputConnection(cone->GetOutputPort());
transformFilter->SetTransform(transform);
mapper->SetInputConnection(transformFilter->GetOutputPort());
mainActor->SetMapper(mapper);
}
void Drawing::translate(float x, float y, float z){
cout << "Translate: " << x << " - " << " - " << y << " - " << z << endl ;
vtkSmartPointer<vtkTransform> transform1a =
vtkSmartPointer<vtkTransform>::New();
transform1a->Translate(x,y,z);
mainActor->SetUserTransform(transform1a);
transform->Update();
}
void Drawing::rotate(float x, float y, float z){
cout << "Rotate: " << x << " - " << " - " << y << " - " << z << endl ;
vtkSmartPointer<vtkTransform> transform1a =
vtkSmartPointer<vtkTransform>::New();
transform1a->PostMultiply();
transform1a->RotateX(x);
transform1a->RotateY(y);
transform1a->RotateZ(z);
mainActor->SetUserTransform(transform1a);
}
void Drawing::dummy (){
// Next we create an instance of vtkConeSource and set some of its
// properties. The instance of vtkConeSource "cone" is part of a
// visualization pipeline (it is a source process object); it produces data
// (output type is vtkPolyData) which other filters may process.
//
cone = vtkConeSource::New();
cone->SetHeight( 3.0 );
cone->SetRadius( 1.0 );
cone->SetResolution( 10 );
//
// In this example we terminate the pipeline with a mapper process object.
// (Intermediate filters such as vtkShrinkPolyData could be inserted in
// between the source and the mapper.) We create an instance of
// vtkPolyDataMapper to map the polygonal data into graphics primitives. We
// connect the output of the cone souece to the input of this mapper.
//
mapper = vtkPolyDataMapper::New();
mapper->SetInputConnection( cone->GetOutputPort() );
//
// Create an actor to represent the cone. The actor orchestrates rendering
// of the mapper's graphics primitives. An actor also refers to properties
// via a vtkProperty instance, and includes an internal transformation
// matrix. We set this actor's mapper to be coneMapper which we created
// above.
//
mainActor = vtkActor::New();
mainActor->SetMapper( mapper );
//
// Create the Renderer and assign actors to it. A renderer is like a
// viewport. It is part or all of a window on the screen and it is
// responsible for drawing the actors it has. We also set the background
// color here.
//
ren = vtkRenderer::New();
ren->AddActor( mainActor );
ren->SetBackground( 0.1, 0.2, 0.4 );
//
// Finally we create the render window which will show up on the screen.
// We put our renderer into the render window using AddRenderer. We also
// set the size to be 300 pixels by 300.
//
win = vtkRenderWindow::New();
win->AddRenderer( ren );
win->SetSize( 300, 300 );
//
// The vtkRenderWindowInteractor class watches for events (e.g., keypress,
// mouse) in the vtkRenderWindow. These events are translated into
// event invocations that VTK understands (see VTK/Common/vtkCommand.h
// for all events that VTK processes). Then observers of these VTK
// events can process them as appropriate.
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(win);
//
// By default the vtkRenderWindowInteractor instantiates an instance
// of vtkInteractorStyle. vtkInteractorStyle translates a set of events
// it observes into operations on the camera, actors, and/or properties
// in the vtkRenderWindow associated with the vtkRenderWinodwInteractor.
// Here we specify a particular interactor style.
vtkInteractorStyleMultiTouchCamera *style =
vtkInteractorStyleMultiTouchCamera::New();
iren->SetInteractorStyle(style);
iren->Initialize();
iren->Start();
//
// Free up any objects we created. All instances in VTK are deleted by
// using the Delete() method.
//
cone->Delete();
mapper->Delete();
mainActor->Delete();
ren->Delete();
win->Delete();
iren->Delete();
style->Delete();
}
As you can see I've tried different methods so far in the rotate or scale or
translate but none of them work and I'm completely puzzled since I don't
understand the reason why.
Any help will be greatly appreciated.
Have a good day,
--
View this message in context: http://vtk.1045678.n5.nabble.com/Rotation-of-PolyData-tp5732340.html
Sent from the VTK - Users mailing list archive at Nabble.com.
More information about the vtkusers
mailing list