Convertor Obj2Vrml
Proiectul de la Visualisierung presupune sa afisez o animatie pe un monitor 3D, mai exact pe asa ceva de la newsight. Monitoarele astea au un fel de interfata programabila care stie cum sa desfaca o imagine sa o poata afisa lasand impresia de 3D. Poti face practic orice vizualizare smechera cu ala, dar trebuie sa stii cum sa il folosesti.
Ca sa prinzi gustul 3D poti folosi Cortona VRML player. Asta stie, din cate am aflat si nu am verificat inca, sa foloseasca un monitor 3D. Datele mele sunt fisiere obj. Trebuie scris un convertor de la formatul asta la vrml sau cautata o solutie ca sa o poti face cat mai simplu dar sa para si proiect de facultate (adica sa nu folosesc vreun program smecher de pe net si crackuit).
Solutia vine de la mult hulitul VTK. Pentru cati nervi mi-a facut pana acum, si-a rascumparat greseala. E atat de impresionant incat din cateva linii am obtinut un cititor de obj care salveaza vrml. Sunt multumit si fericit in acelasi timp. Codul sursa e simplu si se afla mai jos. Dupa ce creezi un proiect valid de VTK cu CMake si te bazezi pe vreun tutorial de la VTK pentru a porni proiectul iata ce trebuie sa copiezi in main():
vtkOBJReader* reader = vtkOBJReader::New();
reader->SetFileName("input.obj");
vtkPolyDataMapper *coneMapper=vtkPolyDataMapper::New();
coneMapper->SetInputConnection(reader->GetOutputPort());
vtkActor *coneActor = vtkActor::New();
coneActor->SetMapper( coneMapper );
vtkRenderer *ren1= vtkRenderer::New();
ren1->AddActor( coneActor );
ren1->SetBackground( 0.1, 0.2, 0.4 );
vtkRenderWindow *renWin=vtkRenderWindow::New();
renWin->AddRenderer( ren1 );
renWin->SetSize( 300, 300 );
vtkRenderWindowInteractor *iren=vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
vtkInteractorStyleTrackballCamera *style=vtkInteractorStyleTrackballCamera::New();
iren->SetInteractorStyle(style);
iren->Initialize();
iren->Start();
vtkVRMLExporter* exporter = vtkVRMLExporter::New();
exporter->SetInput(renWin);
exporter->SetFileName("output.vrml");
exporter->Update();
Inca un imi dau seama de ce e nevoie sa pun codul de export dupa ce se face Start(), adica dupa ce se inchide bucla de desen, dar nu ma intereseaza. Codul a fost scris in 15 minute.
PS:
1. Copy Paste…Si foloseste orice iti ofera VTK ca sa nu te mai doara capul…Eu am pornit de la exemplul din sursele VTK care il gasesti in Examples\Tutorial\Step6\Cxx\. Aici ai si fisierul CMake si cod de plecare de care nu ai prea mare nevoie…pe care il inlocuiesti cu ce e mai sus…
2. Codul nu arata frumos acolo pentru ca Wordpress nu ma lasa sa il formatez calumea.