Display of a OBJ file.

Dear All,

Has VTK, support to load and display an OBJ file (color vectorial image, extension .obj with .mtl and .png files)?

Can you please provide a link for an example code?

Thanks,

Luís Gonçalves

https://kitware.github.io/vtk-examples/site/Cxx/IO/OBJImporter/

Alternativaly, you can use F3D directly: F3D

Dear All,

I translated the following example to Python:

https://kitware.github.io/vtk-examples/site/Cxx/IO/OBJImporter/

And gives the following error:

( 166.199s) [paraview ] vtkOBJImporter.cxx:843 ERR| vtkOBJPolyDataProcessor (0x28763c0): material ‘material_0’ appears in OBJ but not MTL file?
( 167.862s) [paraview ] vtkOBJImporter.cxx:843 ERR| vtkOBJPolyDataProcessor (0x28763c0): material ‘“material_1”’ appears in OBJ but not MTL file?


#file .mtl

File exported by Artec Group 3D Scanning Solutions

www.artec-group.com

newmtl material_0
Ka 1 1 1
Kd 1 1 1
Ks 1 1 1
Ns 1000
map_Kd output1_1.png

newmtl material_1
Ka 1 1 1
Kd 1 1 1
Ks 1 1 1
Ns 1000


#File .Obj

File exported by Artec Group 3D Scanning Solutions

www.artec-group.com

387296 vertices

765202 triangular faces

mtllib output1.mtl

o Copy of Sharp fusion 1

v -157.45563 -18.5831 220.40683

usemtl material_0
vt 0.087013 0.803479
f 6256/1 6257/2 6253/3

usemtl “material_1”


Result (appears without the textures) I suppose in error:

This within example “web-project-templates-master” with Paraview Python.

Thanks,

Luís Gonçalves

please share your data.

      importer=vtk.vtkOBJImporter()
      importer.SetFileName(path1+file8+'.obj');
      #importer.SetFileNameMTL(path1+file4+'.mtl');
      #importer.SetTexturePath(path1+file9+'.png');

      colors=vtk.vtkNamedColors()

      #vtkNew<vtkRenderer> renderer;
      #vtkNew<vtkRenderWindow> renWin;
      #vtkNew<vtkRenderWindowInteractor> iren;

      renderer.SetBackground2(colors.GetColor3d("Silver"))
      renderer.SetBackground(colors.GetColor3d("Gold"))
      renderer.GradientBackgroundOn()
      renderWindow.Modified()
      #renWin->AddRenderer(renderer);
      renderer.UseHiddenLineRemovalOn()
      renderWindow.Modified()
      #renWin->AddRenderer(renderer);
      renderWindow.SetSize(640, 480);
      #renWin->SetWindowName("OBJImporter");

      #iren->SetRenderWindow(renWin);
      importer.SetRenderWindow(renderWindow);
      importer.Update()

      actors = renderer.GetActors()
      actors.InitTraversal()
      #std::cout << "There are " << actors->GetNumberOfItems() << " actors"
      #        << std::endl;

      for a in range(actors.GetNumberOfItems()):
          actor =vtk.vtkActor() 
          actor=actors.GetNextActor()
          if (actor.GetTexture()):
              actor.GetTexture().InterpolateOn()
          pd =vtk.vtkPolyData(actor.GetMapper().GetInput())
          mapper =vtk.vtkPolyDataMapper(actor.GetMapper())
          mapper.SetInputData(pd)

renderWindow.SetSize(640, 480); has no effect.

please share your data.

I reproduce the issue, but more investigation is needed to understand where this is coming from.

Solved:
Changed:

    importer.SetFileName(path1+file8+'.obj')
    importer.SetFileNameMTL(path1+file4+'.mtl')
    importer.SetTexturePath(path1)

The code works like this (I removed the redundant code).

    self.importer=vtk.vtkOBJImporter()
    self.importer.SetFileName(path1+file8+'.obj')
    self.importer.SetFileNameMTL(path1+file4+'.mtl')
    self.importer.SetTexturePath(path1)#+file9+'.png')
    colors=vtk.vtkNamedColors()
    renderer.SetBackground2(colors.GetColor3d("Silver"))
    renderer.SetBackground(colors.GetColor3d("Gold"))
    renderer.GradientBackgroundOn()
    renderWindow.Modified()
    renderer.UseHiddenLineRemovalOn()
    self.importer.SetRenderWindow(renderWindow);
    self.importer.Update()

How I remove the picture from the screen?

I tried

        self.importer.RemoveRenderWindow(renderWindow);

but do not works.

This thread is still open.

I only want to remove this “volume” from the screen. But it is not a volume, I suppose.

Can anyone help?

Thanks.

What do you mean by removing the picture? Clearing the render window to the background?

Yes, clearing the render window. Of that image in particular.