vtkCurvature计算STL模型的曲率,计算结果无差异。求解???
vtk吧
全部回复
仅看楼主
level 3
贴代码……
vtkSmartPointer<vtkSTLReader> reader =
vtkSmartPointer<vtkSTLReader>::New();
reader->SetFileName("D:/TRUE.stl");
reader->Update();
vtkSmartPointer<vtkCurvatures> curvaturesFilter =
vtkSmartPointer<vtkCurvatures>::New();
curvaturesFilter->SetInputConnection(reader->GetOutputPort());
curvaturesFilter->SetCurvatureTypeToMaximum();
curvaturesFilter->Update();
double scalarRange[2];
curvaturesFilter->GetOutput()->GetScalarRange(scalarRange);
vtkSmartPointer<vtkLookupTable> lut =
vtkSmartPointer<vtkLookupTable>::New();
lut->SetHueRange(0.0, 0.6);
lut->SetAlphaRange(1.0, 1.0);
lut->SetValueRange(1.0, 1.0);
lut->SetSaturationRange(1.0, 1.0);
lut->SetNumberOfTableValues(256);
lut->SetRange(scalarRange);
lut->Build();
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInput(curvaturesFilter->GetOutput());
mapper->SetLookupTable(lut);
mapper->SetScalarRange(scalarRange);
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
vtkSmartPointer<vtkScalarBarActor> scalarBar =
vtkSmartPointer<vtkScalarBarActor>::New();
scalarBar->SetLookupTable(mapper->GetLookupTable());
scalarBar->SetTitle(
curvaturesFilter->GetOutput()->GetPointData()->GetScalars()->GetName());
scalarBar->SetNumberOfLabels(5);
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
renderer->AddActor2D(scalarBar);
renderer->SetBackground(1.0, 1.0, 1.0);
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetSize(640, 480);
renderWindow->Render();
renderWindow->SetWindowName("PolyDataCurvature");
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style =
vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderWindowInteractor->SetInteractorStyle(style);
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
2017年05月19日 07点05分 1
level 12
vtkLookupTable重新设置范围,你设置的上限太大了
2017年05月23日 09点05分 2
范围缩小后,看出了差异,谢谢群主[真棒]
2017年05月25日 07点05分
level 3
2017年05月25日 07点05分 3
[哈哈]
2017年05月26日 01点05分
level 1
请问楼主改了那个地方啊,我也遇到了同样的问题,求指教
2017年10月08日 02点10分 4
lut->SetRange(scalarRange[0] / 50, scalarRange[1] / 50); 把范围缩小了,你试试看[呵呵]
2017年10月10日 05点10分
level 1
楼主,请问怎么把曲率保存到文件里啊,我找到了它保存的vtkpolydata,但是没有看见能够得到点曲率的函数
2019年03月06日 03点03分 5
1