Errors when using vtkAxesTransformWidget
I want to use the vtkAxesTransformWidget
to translate/rotate a vtkActor
, but there is always some errors, like:
2022-02-25 13:22:30.804 ( 0.224s) [ 6226DF40] vtkVectorText.cxx:63 ERR| vtkVectorText (0x24e2410): Text is not set!
2022-02-25 13:22:30.804 ( 0.224s) [ 6226DF40] vtkExecutive.cxx:753 ERR| vtkCompositeDataPipeline (0x24e2990): Algorithm vtkVectorText(0x24e2410) returned failure for request: vtkInformation (0x24e3230)
Debug: Off
Modified Time: 28727
Reference Count: 1
Registered Events: (none)
Request: REQUEST_DATA
FROM_OUTPUT_PORT: 0
ALGORITHM_AFTER_FORWARD: 1
FORWARD_DIRECTION: 0
And there is no such thing like a axesTransformWidget in the renderer.
the source code is
#include <vtkActor.h>
#include <vtkCameraOrientationWidget.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleSwitch.h>
#include <vtkRenderer.h>
#include <vtkSTLReader.h>
#include <vtkAxesActor.h>
#include <vtkCubeSource.h>
#include <vtkAxesTransformRepresentation.h>
#include <vtkAxesTransformWidget.h>
#include <vtkCamera.h>
#include <filesystem>
namespace fs = std::filesystem;
int main(int argc, char *argv[])
{
vtkNew<vtkNamedColors> colors;
vtkNew<vtkRenderWindow> ren_win;
vtkNew<vtkRenderWindowInteractor> iren;
vtkNew<vtkRenderer> ren;
{
vtkNew<vtkCubeSource> src;
src->SetXLength(0.1);
src->SetYLength(0.2);
src->SetZLength(0.3);
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(src->GetOutputPort());
vtkNew<vtkActor> cube;
cube->SetMapper(mapper);
cube->SetPosition(0.5, 1., 0);
ren->AddActor(cube);
}
{
vtkNew<vtkAxesActor> axes;
axes->SetTotalLength(1.0, 1.0, 1.0);
axes->SetAxisLabels(false);
ren->AddActor(axes);
}
ren->SetBackground(colors->GetColor3d("grey").GetData());
ren_win->AddRenderer(ren);
ren_win->SetSize(600, 600);
ren_win->SetWindowName("VtkApp");
// Important: The interactor must be set prior to enabling the widget.
iren->SetRenderWindow(ren_win);
vtkNew<vtkCamera> cam;
// cam->SetParallelProjection(true);
ren->SetActiveCamera(cam);
vtkNew<vtkCameraOrientationWidget> cam_orient_manipulator;
cam_orient_manipulator->SetParentRenderer(ren);
// Enable the widget.
cam_orient_manipulator->On();
vtkNew<vtkAxesTransformRepresentation> rep;
vtkNew<vtkAxesTransformWidget> trans_widget;
trans_widget->SetInteractor(iren);
trans_widget->SetRepresentation(rep);
vtkNew<vtkInteractorStyleSwitch> style;
style->SetCurrentStyleToTrackballCamera();
iren->SetInteractorStyle(style);
iren->Initialize();
ren_win->Render();
trans_widget->On();
iren->Start();
return EXIT_SUCCESS;
}
Edited by Zen