How to render a GLTF model correctly

Hi everyone,
I have compiled and built VTK 9.0.1 successfully. I want to load a gltf model. It’s a cube exported from blender2.8 and it can be render in other gltf viewer. I use vtkGLTFReader . I can get nbScenes and nbAnimations correctly, but there’s nothing in the scene. Here’s part of my code:

vtkSmartPointer<vtkGLTFReader> gltfReader = vtkSmartPointer<vtkGLTFReader>::New();
gltfReader->SetFileName("E:/CodeProjects/GLTF/models/cube01.gltf");
gltfReader->Update();

vtkIdType nbScenes = gltfReader->GetNumberOfScenes();
vtkIdType nbAnimations = gltfReader->GetNumberOfAnimations();


vtkSmartPointer<vtkPolyDataMapper> polyDataMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
polyDataMapper->SetInputConnection(gltfReader->GetOutputPort());

vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(polyDataMapper);

vtkSmartPointer<vtkRenderWindow> rw = vtkSmartPointer<vtkRenderWindow>::New();
rw->SetSize(800, 600);
rw->SetWindowName("GlTF Demo");

vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New();
render->AddActor(actor);
rw->AddRenderer(render);

vtkSmartPointer<vtkRenderWindowInteractor> rwi = vtkSmartPointer<vtkRenderWindowInteractor>::New();
rwi->SetRenderWindow(rw);

vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
rwi->SetInteractorStyle(style);

rw->Render();
rwi->Start();

Can anyone give me some tips? Thanks in advance.

I use the following code and the model is loaded successfully.

vtkSmartPointer<vtkCompositePolyDataMapper2> polyDataMapper = vtkSmartPointer<vtkCompositePolyDataMapper2>::New();
polyDataMapper->SetInputConnection(gltfReader->GetOutputPort());

instead of:

vtkSmartPointer<vtkPolyDataMapper> polyDataMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
polyDataMapper->SetInputConnection(gltfReader->GetOutputPort());
1 Like