Hello,
I amb trying to understand the transformation matrix of the vtkboxwidget2. I want to have a bounding box widget with only translations. In some transformations the matrix gives the initial position and updates it from it. So what I do is to get the position and the previous to obtain the difference to get the translation that it is what I want to track.
But in some cases I do not get the position if not an offset. Why this changes?.Only the translation is allowed and they are formed in the same way.
For example 114 is the heigh:
vtkMatrix4x4 (0000029850AD9AD0)
Debug: Off
Modified Time: 1098166
Reference Count: 1
Registered Events: (none)
Elements:
1 0 0 -41.4137
0 1 0 0
0 0 1 114.535
0 0 0 1
But some others 114 becomes offsets as for example
vtkMatrix4x4 (000001A1E6C378A0)
Debug: Off
Modified Time: 4576873
Reference Count: 1
Registered Events: (none)
Elements:
1 0 0 -0.364876
0 1 0 -0.940811
0 0 1 -2.26909
0 0 0 1
so in this case I cannot get the translation as I did before. Any idea?. Thanks !!. The code is as follows
vtkNew<vtkBoxWidget2> widget;
vtkSmartPointer<RigidBoxRepresentation>
rigidBody_rep =
vtkSmartPointer
<RigidBoxRepresentation>::New();
auto interactor = view_mgr_.lock()->
get_volume_render_window()
->GetInteractor();
widget->SetInteractor(interactor);
rigidBody_rep->SetPlaceFactor(1);
rigidBody_rep->
PlaceWidget
(actor_->GetBounds());
widget->ScalingEnabledOff();
widget->RotationEnabledOff();
widget->MoveFacesEnabledOff();
widget->SetRepresentation(rigidBody_rep);
widget->Modified();
cout << "New bounding box \n";
vtkNew<vtkBoxCallback> callback;
callback->set_actor(actor_);
widget->
AddObserver(vtkCommand::InteractionEvent,
callback);
widget->AddObserver
(vtkCommand::EndInteractionEvent,
callback);
widget->On();