1 /*=========================================================================
2 
3   Program:   Visualization Toolkit
4   Module:    objtovtp.cxx
5 
6   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7   All rights reserved.
8   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10      This software is distributed WITHOUT ANY WARRANTY; without even
11      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12      PURPOSE.  See the above copyright notice for more information.
13 
14 =========================================================================*/
15 #include "vtkNew.h"
16 #include "vtkOBJImporter.h"
17 #include "vtkRenderWindow.h"
18 #include "vtkRenderWindowInteractor.h"
19 #include "vtkRenderer.h"
20 #include "vtkSingleVTPExporter.h"
21 #include "vtksys/SystemTools.hxx"
22 
23 #include <sstream>
24 
main(int argc,char * argv[])25 int main(int argc, char* argv[])
26 {
27   if (argc < 2)
28   {
29     std::cerr << "expected objtovtk File1.obj [File2.obj.mtl]" << std::endl;
30     return -1;
31   }
32 
33   std::string filenameOBJ(argv[1]);
34 
35   std::string filenameMTL;
36 
37   if (argc >= 3)
38   {
39     filenameMTL = argv[2];
40   }
41   std::string texturePath = vtksys::SystemTools::GetFilenamePath(filenameOBJ);
42 
43   vtkNew<vtkOBJImporter> importer;
44 
45   importer->SetFileName(filenameOBJ.data());
46   importer->SetFileNameMTL(filenameMTL.data());
47   importer->SetTexturePath(texturePath.data());
48 
49   vtkNew<vtkRenderer> ren;
50   vtkNew<vtkRenderWindow> renWin;
51   vtkNew<vtkRenderWindowInteractor> iren;
52 
53   renWin->AddRenderer(ren);
54   iren->SetRenderWindow(renWin);
55   importer->SetRenderWindow(renWin);
56   importer->Update();
57 
58   renWin->SetSize(800, 600);
59   ren->SetBackground(0.4, 0.5, 0.6);
60   ren->ResetCamera();
61   renWin->Render();
62 
63   // export to a single vtk file
64   vtkNew<vtkSingleVTPExporter> exporter;
65 
66   std::string outputPrefix = "o2v";
67   outputPrefix += vtksys::SystemTools::GetFilenameWithoutLastExtension(filenameOBJ);
68 
69   exporter->SetFilePrefix(outputPrefix.c_str());
70   exporter->SetRenderWindow(renWin);
71   exporter->Write();
72 
73   iren->Start();
74 
75   return 0;
76 }
77