when the file is below:
#VRML V2.0 utf8
Transform {
children [
Shape {
geometry Cylinder {
radius 2.0
height 40.0
}
}
]
}
there is different between the vtkpolydata and the vtkactor read from vrml use vtkVRMLImporter?why ?the matrix is initial。is there anyone know about the reason?
key code is this :
vtkSmartPointer<vtkVRMLImporter> vrmlImporter =
vtkSmartPointer<vtkVRMLImporter>::New();
vrmlImporter->SetFileName("d:\\2.wrl");
vrmlImporter->Update();
vtkRenderer* renderer = vrmlImporter->GetRenderer();
vtkRenderWindow* renderWindow = vrmlImporter->GetRenderWindow();
vtkActorCollection* actors = renderer->GetActors();
actors->InitTraversal(); // 初始化遍历器
int cylinderCount = 0;
vtkSmartPointer<vtkAssembly> assembly =
vtkSmartPointer<vtkAssembly>::New();
vtkSmartPointer<vtkAppendPolyData> appendFilter =
vtkSmartPointer<vtkAppendPolyData>::New();
while (vtkActor* actor = actors->GetNextActor())
{
vtkDataSet * data =actor->GetMapper()->GetInput();
vtkPolyData* polydata = vtkPolyData::SafeDownCast(data);
cylinderCount++;
assembly->AddPart(actor);
appendFilter->AddInputData(polydata);
}
appendFilter->Update();
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(appendFilter->GetOutput());
vtkSmartPointer<vtkActor> Resactor = vtkSmartPointer<vtkActor>::New();
Resactor->SetMapper(mapper);
m_renderer->AddActor(assembly);------actor
m_renderer->AddActor(Resactor);------generated use vtkpolydata get from above
m_renderer->ResetCamera();
m_renderWindow->Render();
