在QVTKWidget中添加坐标系出现错误
vtk吧
全部回复
仅看楼主
level 1
使用vtkAxesActor和vtkOrientationMarkerWidget在QVTKWidget中添加一个坐标系,出现了如图所示的错误,将vtkOrientationMarkerWidget这段注释掉就能运行成功,求各路大神指点指点
主要代码如下:
vtkSmartPointer<vtkNamedColors> colors =
vtkSmartPointer<vtkNamedColors>::New();
vtkSmartPointer<vtkSphereSource> sphereSource =
vtkSmartPointer<vtkSphereSource>::New();
sphereSource->SetCenter(0.0, 0.0, 0.0);
sphereSource->SetRadius(1.0);
sphereSource->Update();
vtkPolyData* polydata = sphereSource->GetOutput();
// Create a mapper
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(polydata);
// Create an actor
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
// A renderer and render window
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->SetWindowName("Display Coordinate Axes");
renderWindow->AddRenderer(renderer);
ui.qvtkWidget->SetRenderWindow(renderWindow);
// Add the actors to the scene
renderer->AddActor(actor);
renderer->SetBackground(colors->GetColor3d("SlateGray").GetData());
// Create an axesActor and widget
vtkSmartPointer<vtkAxesActor> axes =
vtkSmartPointer<vtkAxesActor>::New();
vtkSmartPointer<vtkOrientationMarkerWidget> widget =
vtkSmartPointer<vtkOrientationMarkerWidget>::New();
double rgba[4]{0.0, 0.0, 0.0, 0.0};
colors->GetColor("Carrot", rgba);
widget->SetOutlineColor(rgba[0], rgba[1], rgba[2]);
widget->SetOrientationMarker(axes);
widget->SetInteractor(renderWindow->GetInteractor());
widget->SetViewport(0.0, 0.0, 0.2, 0.2);
widget->SetEnabled(1);
widget->InteractiveOn();
renderer->GetActiveCamera()->Azimuth(50);
renderer->GetActiveCamera()->Elevation(-30);
renderer->ResetCamera();
2019年03月02日 03点03分 1
level 2
哥们你解决了吗,我也碰到了这问题。
2020年05月11日 14点05分 2
level 2
我解决了,这是因为我直接用visual studio编译导致的,如果用cmake就不会有这问题了(大概是吧)。不管怎样,加入下面几行代码就行了。
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)
2020年05月11日 15点05分 3
不对,我还没有解决掉这个问题。普通这么用就可以,在QVTKWidget中这么用就不行。我猜还缺一个VTK_MODULE_INIT(***)但是缺的是什么?
2020年05月11日 16点05分
解决了没有?
2020年08月10日 03点08分
1