------------------------------------------------------------------------------
| 333 | |
| 334 | //------------------------------------------------------------------------------ |
| 335 | void GeometryViewer::LoadDataFile(const std::string& filename) |
| 336 | { |
| 337 | |
| 338 | std::cout << __func__ << "(" << filename << ")" << std::endl; |
| 339 | |
| 340 | auto mapper = vtk::TakeSmartPointer(vtkPolyDataMapper::New()); |
| 341 | vtkSmartPointer<vtkDataObject> mesh; |
| 342 | |
| 343 | using systools = vtksys::SystemTools; |
| 344 | if (systools::StringEndsWith(filename, ".vtp")) |
| 345 | { |
| 346 | auto xmlreader = vtk::TakeSmartPointer(vtkXMLPolyDataReader::New()); |
| 347 | xmlreader->SetFileName(filename.c_str()); |
| 348 | xmlreader->Update(); |
| 349 | mesh = xmlreader->GetOutput(); |
| 350 | } |
| 351 | else if (systools::StringEndsWith(filename, ".vtu")) |
| 352 | { |
| 353 | auto xmlreader = vtk::TakeSmartPointer(vtkXMLUnstructuredGridReader::New()); |
| 354 | xmlreader->SetFileName(filename.c_str()); |
| 355 | auto surface = vtk::TakeSmartPointer(vtkGeometryFilter::New()); |
| 356 | surface->SetInputConnection(xmlreader->GetOutputPort()); |
| 357 | surface->Update(); |
| 358 | mesh = surface->GetOutput(); |
| 359 | } |
| 360 | else if (systools::StringEndsWith(filename, ".vtk")) |
| 361 | { |
| 362 | auto polydataReader = vtk::TakeSmartPointer(vtkPolyDataReader::New()); |
| 363 | polydataReader->SetFileName(filename.c_str()); |
| 364 | polydataReader->Update(); |
| 365 | mesh = polydataReader->GetOutput(); |
| 366 | } |
| 367 | else if (systools::StringEndsWith(filename, ".glb") || |
| 368 | systools::StringEndsWith(filename, ".gltf")) |
| 369 | { |
| 370 | // TODO: Hangs. |
| 371 | // auto gltfreader = vtk::TakeSmartPointer(vtkGLTFReader::New()); |
| 372 | // mapper = vtk::TakeSmartPointer(vtkPolyDataMapper::New()); |
| 373 | // gltfreader->SetFileName(filename.c_str()); |
| 374 | // reader = gltfreader; |
| 375 | } |
| 376 | else if (systools::StringEndsWith(filename, ".obj")) |
| 377 | { |
| 378 | auto objreader = vtk::TakeSmartPointer(vtkOBJReader::New()); |
| 379 | objreader->SetFileName(filename.c_str()); |
| 380 | objreader->Update(); |
| 381 | mesh = objreader->GetOutput(); |
| 382 | } |
| 383 | else if (systools::StringEndsWith(filename, ".ply")) |
| 384 | { |
| 385 | auto plyreader = vtk::TakeSmartPointer(vtkPLYReader::New()); |
| 386 | plyreader->SetFileName(filename.c_str()); |
| 387 | plyreader->Update(); |
| 388 | mesh = plyreader->GetOutput(); |
| 389 | } |
| 390 | else if (systools::StringEndsWith(filename, ".vtpc")) |
| 391 | { |
| 392 | mapper = vtk::TakeSmartPointer(vtkCompositePolyDataMapper::New()); |
nothing calls this directly
no test coverage detected