一直想实现对stl模型的某个方向进行平面切割
通过滑动slider然后对模型进行某一个方向的面切割。同时可以用鼠标对模型进行移动缩放,旋转等操作。然后可以加一些颜色点云显示等操作。
stl加载:
QString selectFilePath = QFileDialog::getOpenFileName(this, QString("choose STL file"), QString(""), QString("file(*.stl)"));if (selectFilePath.isEmpty()){ui.textBrowser->append("The address of the STL file you choose is null!");return;}// 原始图像reader = vtkSmartPointer<vtkSTLReader>::New();reader->SetFileName(selectFilePath.toStdString().c_str());reader->Update();//将source转换成mappermapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(reader->GetOutputPort());//送入渲染引擎进行显示actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);//渲染renderer = vtkSmartPointer<vtkRenderer>::New();renderer->AddActor(actor);renderer->SetBackground(.0, .0, .0);//设置渲染窗口vtkSmartPointer<vtkRenderWindow> window = vtkSmartPointer<vtkRenderWindow>::New();ui.qvtkWidget->SetRenderWindow(window);ui.qvtkWidget->GetRenderWindow()->AddRenderer(renderer);//okui.textBrowser->append(QString("upload the file:") + selectFilePath + QString(" succeed !"));
发现加载一些简单的模型,然后移动slider切割很丝滑,但是加载复杂一点就很卡,我这里用多线程解决了,切割模型放在一个线程里,然后显示在另一个线程里
先看效果,我动态的从上往下切割: