#include "vtk3DSImporterEsqui.h" #include "vtkObjectFactory.h" #include "vtkStripper.h" #include "vtkPolyDataNormals.h" #include "vtkRenderWindow.h" #include "vtkPolyDataMapper.h" #include "vtkActorCollection.h" #include "vtkTransformPolyDataFilter.h" #include "vtkTransform.h" vtkCxxRevisionMacro(vtk3DSImporterEsqui, "$Revision: 0.1 $"); vtkStandardNewMacro(vtk3DSImporterEsqui); vtk3DSImporterEsqui::vtk3DSImporterEsqui() { this->Actores= vtkActorCollection::New(); } void vtk3DSImporterEsqui::ImportActors (vtkRenderer *renderer) { vtk3DSMesh *mesh; vtkStripper *polyStripper; vtkPolyDataNormals *polyNormals; vtkPolyData *polyData; vtkPolyData *polyDataAux; for (mesh = this->MeshList; mesh != (vtk3DSMesh *) NULL; mesh = (vtk3DSMesh *) mesh->next) { if (mesh->faces == 0) { vtkWarningMacro (<< "part " << mesh->name << " has zero faces... skipping\n"); continue; } polyData = this->GeneratePolyData (mesh); vtkTransform *Transform = vtkTransform::New(); Transform->Scale(this->FactorDeEscala,this->FactorDeEscala,this->FactorDeEscala); this->Filtro= vtkTransformPolyDataFilter::New(); this->Filtro->SetInput(polyData); this->Filtro->SetTransform(Transform); this->Filtro->Update(); polyDataAux = this->Filtro->GetOutput(); mesh->aStripper = polyStripper = vtkStripper::New (); if (this->ComputeNormals) { mesh->aNormals = polyNormals = vtkPolyDataNormals::New (); polyNormals->SetInput (polyDataAux); polyStripper->SetInput (polyNormals->GetOutput ()); } else { polyStripper->SetInput (polyDataAux); } Transform->Delete(); this->Filtro->Delete(); vtkPolyDataMapper *Mapper = vtkPolyDataMapper::New(); Mapper->SetInput(polyStripper->GetOutput()); vtkActor *Actor = vtkActor::New(); Actor->SetMapper(Mapper); Actores->AddItem(Actor); vtkDebugMacro (<< "Importing PolyDatas: " << mesh->name); } } void vtk3DSImporterEsqui::ReadData() { this->ImportActors (this->Renderer); } vtkActorCollection *vtk3DSImporterEsqui::GetActorCollection() { this->Read(); return this->Actores; } void vtk3DSImporterEsqui::SetFactorDeEscala(float fRadius) { this->FactorDeEscala = fRadius; } float vtk3DSImporterEsqui::GetFactorDeEscala() { return this->FactorDeEscala; }