vtk 对stl文件进行降采样
在3d渲染中 很多时候会因为模型数据太大,会造成卡顿延迟问题,这个时候就需要对模型进行降采样处理了
#include <vtkSmartPointer.h>
#include <vtkSTLReader.h>
#include <vtkDecimatePro.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSTLWriter.h>int main(int argc, char *argv[])
{if (argc != 3){std::cerr << "Usage: " << argv[0] << " input.stl output.stl" << std::endl;return EXIT_FAILURE;}// 1. 读取 STL 文件vtkSmartPointer<vtkSTLReader> reader = vtkSmartPointer<vtkSTLReader>::New();reader->SetFileName(argv[1]);reader->Update();// 2. 降采样处理vtkSmartPointer<vtkDecimatePro> decimate = vtkSmartPointer<vtkDecimatePro>::New();decimate->SetInputConnection(reader->GetOutputPort());// 设置目标减少的三角形比例,这里设置为减少 50%decimate->SetTargetReduction(0.5);decimate->Update();// 3. 保存处理后的文件vtkSmartPointer<vtkSTLWriter> writer = vtkSmartPointer<vtkSTLWriter>::New();writer->SetFileName(argv[2]);writer->SetInputConnection(decimate->GetOutputPort());writer->Write();std::cout << "Downsampling completed. Output saved to " << argv[2] << std::endl;return EXIT_SUCCESS;
}